Notas de Reuniones con Whisper en Windows

Transcribe reuniones de Zoom, Teams y Meet localmente en Windows usando Whisper y WASAPI loopback — sin subida a la nube, privacidad total, resúmenes en Markdown.

Si cada reunión termina con una cadena de correos preguntando “¿qué decidimos exactamente?”, el problema no es la reunión — es la falta de un transcript confiable. Los servicios de transcripción en la nube resuelven esto parcialmente, pero requieren subir el audio de la llamada a un servidor de terceros. Por razones legales, de cumplimiento normativo o simplemente de privacidad, eso no siempre es aceptable.

Esta guía muestra cómo construir un flujo de trabajo de notas de voz para reuniones completamente en tu PC Windows: captura el audio con WASAPI loopback, procésalo con el modelo Whisper de OpenAI de forma local, y extrae automáticamente un resumen en Markdown con decisiones y elementos de acción. Sin subida a la nube. Sin suscripción. El procesamiento ocurre en tu máquina.


TL;DR

PasoHerramientaTiempo
Capturar audioFFmpeg + WASAPI loopbackEn vivo
TranscribirWhisper (medium.en)~4 min / reunión de 1 hr
Extraer accionesPython + LLM local o pegar en IA~2 min
SalidaArchivo Markdown .mdInmediato

Por Qué la Transcripción Local Supera a la Nube para Reuniones

La mayoría de los servicios de transcripción en la nube — Otter.ai, Fireflies, las Notas AI integradas de Zoom — funcionan enviando el audio a servidores remotos donde se procesa y frecuentemente se almacena para entrenamiento de modelos. Para llamadas personales informales, eso está bien. Para llamadas que contienen nombres de clientes, proyecciones financieras, información médica o debates legales, no lo está.

Ejecutar Whisper localmente significa que el archivo de audio nunca abandona la máquina. No hay clave API vinculada a la cuenta de tu empresa, no hay política de retención que leer, y no existe la posibilidad de que una brecha de seguridad de un tercero exponga el contenido de tus llamadas.

También hay un argumento económico. La transcripción en la nube a escala — 100 horas de reuniones mensuales en un equipo — cuesta entre $40 y $200 por usuario al mes en la mayoría de las plataformas. La inferencia local en una GPU que ya posees no tiene costo por transcript tras la configuración inicial.


Legalidad y Consentimiento — Lee Esto Primero

Grabar o transcribir una reunión sin el consentimiento de los participantes es ilegal en muchas jurisdicciones, incluyendo varios estados de EE.UU. (leyes de consentimiento bipartito), la UE (GDPR Artículo 6) y otros países.

Antes de transcribir cualquier reunión:

  1. Anuncia claramente al inicio: “Estoy capturando audio para transcripción local con el fin de generar notas de reunión.”
  2. Da a los participantes la opción de no participar o hablar fuera del registro.
  3. Consulta la política de grabación de llamadas de tu empresa.
  4. Almacena los transcripts de forma segura y aplica las mismas reglas de manejo de datos que a otros documentos confidenciales.

Este artículo es una guía técnica. No es asesoramiento legal.


Requisitos

  • Windows 10 o 11 — WASAPI loopback está disponible en ambos
  • Python 3.10+ — desde python.org o winget
  • FFmpeg — para captura de audio desde el dispositivo loopback
  • openai-whisper o faster-whisper — el motor de transcripción
  • GPU NVIDIA (opcional pero recomendada) — RTX 2060 o superior para inferencia rápida; CPU también funciona
  • Una aplicación de reuniones: Zoom, Microsoft Teams, Google Meet o cualquier aplicación que produzca audio

Paso 1 — Identificar el Dispositivo WASAPI Loopback

WASAPI loopback captura todo lo que Windows reproduce a través de tu dispositivo de salida — el mismo audio que escuchas en tus auriculares. No se requiere instalación de drivers; es parte del stack de audio de Windows desde Vista.

Abre una terminal y ejecuta:

ffmpeg -list_devices true -f dshow -i dummy 2>&1 | findstr /i "audio"

Verás una salida similar a:

"Speakers (Realtek High Definition Audio)" (audio)
"Headphones (USB Audio Device)" (audio)

Anota el nombre exacto de tu dispositivo de salida activo. Para la captura loopback, agrega (loopback) al nombre del dispositivo al usarlo con FFmpeg.


Paso 2 — Grabar el Audio de la Reunión

Inicia tu llamada en Zoom, Teams o Meet. Antes de que comience el contenido principal, inicia FFmpeg en una terminal separada:

ffmpeg -f dshow -i audio="Speakers (Realtek High Definition Audio) (loopback)" ^
  -ar 16000 -ac 1 -c:a pcm_s16le ^
  meeting_2026-06-12.wav

Parámetros clave:

  • -ar 16000 — frecuencia de muestreo nativa de Whisper; sin necesidad de remuestreo
  • -ac 1 — mono; reduce el tamaño del archivo y coincide con la entrada esperada por Whisper
  • -c:a pcm_s16le — WAV sin compresión para máxima precisión

Detén la grabación cuando termine la reunión con Ctrl+C. Una reunión de 1 hora con estas configuraciones produce aproximadamente 115 MB.

Consejo: Si la calidad del audio es deficiente por el ruido de fondo, ejecutar la supresión de ruido de VoxBooster en tu canal de micrófono antes de la llamada mantiene tu propia voz limpia en la captura. WASAPI loopback captura la salida mezclada, por lo que el audio de otros participantes se beneficia del procesamiento de ruido de sus propias plataformas.


Paso 3 — Instalar Whisper

Si aún no has instalado Whisper:

pip install openai-whisper
# Para inferencia más rápida en CPU/GPU:
pip install faster-whisper

Para aceleración con GPU (NVIDIA), también instala:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

Verifica primero tu versión de CUDA con nvidia-smi y adapta la versión cu según corresponda.


Paso 4 — Transcribir la Grabación

Usando openai-whisper (CLI)

whisper meeting_2026-06-12.wav --model medium.en --output_format txt --output_dir ./transcripts

Esto guarda un archivo .txt y un archivo de subtítulos .srt. El modelo medium.en es solo para inglés, más rápido y preciso para reuniones en inglés que el medium multilingüe.

Usando faster-whisper (script Python)

from faster_whisper import WhisperModel

model = WhisperModel("medium.en", device="cuda", compute_type="float16")

segments, info = model.transcribe("meeting_2026-06-12.wav", beam_size=5)

with open("transcript.txt", "w", encoding="utf-8") as f:
    for segment in segments:
        timestamp = f"[{segment.start:.1f}s]"
        f.write(f"{timestamp} {segment.text.strip()}\n")

print("Transcripción completa.")

faster-whisper usa CTranslate2 internamente y es 2–4× más rápido que el original en el mismo hardware.


Paso 5 — Extraer Elementos de Acción en Markdown

Los transcripts en bruto son muros de texto. El artefacto útil es un resumen estructurado: decisiones tomadas, tareas asignadas y preguntas abiertas. Aquí hay un script Python simple que usa Ollama (LLM local) para producir uno:

import subprocess
import sys

transcript_path = sys.argv[1]

with open(transcript_path, "r", encoding="utf-8") as f:
    transcript = f.read()

prompt = f"""Eres un asistente de notas de reuniones. A partir del transcript a continuación, produce un documento Markdown con:
1. **Resumen de la Reunión** (3-5 oraciones)
2. **Decisiones Tomadas** (lista con puntos)
3. **Elementos de Acción** (lista con puntos incluyendo responsable y plazo si se mencionan)
4. **Preguntas Abiertas** (lista con puntos)

Transcript:
{transcript}
"""

result = subprocess.run(
    ["ollama", "run", "llama3"],
    input=prompt,
    capture_output=True,
    text=True,
    encoding="utf-8"
)

output_path = transcript_path.replace(".txt", "_resumen.md")
with open(output_path, "w", encoding="utf-8") as f:
    f.write(result.stdout)

print(f"Resumen guardado en {output_path}")

Ejecútalo así:

python extraer_acciones.py transcripts/meeting_2026-06-12.txt

¿Sin Ollama? Pega el transcript directamente en cualquier IA de chat con el mismo prompt. El resultado es idéntico — solo difiere el paso de automatización.


Guía de Selección de Modelo

ModeloVRAMVelocidad (GPU)Velocidad (CPU)Ideal Para
tiny.en1 GBMuy rápido5 min/hrBorradores rápidos, pruebas
small.en2 GBRápido20 min/hrMáquinas solo-CPU
medium.en5 GBEquilibrado60 min/hrRecomendación predeterminada
large-v310 GBLentoNo prácticoMáxima precisión, RTX 4070+

Todos los modelos corren completamente sin conexión tras la descarga inicial.


Comparación: Whisper Local vs. Servicios de Transcripción en la Nube

CaracterísticaWhisper (local)Otter.aiFirefliesZoom AI Notes
Datos salen del dispositivoNo
Costo mensual$0$10–$20/usuario$10–$19/usuarioIncluido con Zoom
Precisión (inglés)88–94% WER~88%~87%~85%
Diarización de hablantesCon pyannote
Vocabulario personalizadoVía promptDe pagoDe pagoNo
Funciona sin internetNoNoNo
Tiempo de configuración30 min5 min5 min0 min

Los servicios en la nube ganan en comodidad y diarización lista para usar. Whisper local gana en privacidad, costo a escala y capacidad de funcionar sin internet.


Agregar Diarización de Hablantes

Whisper por sí solo no identifica quién dijo qué. Para reuniones donde la atribución importa, combínalo con pyannote.audio:

pip install pyannote.audio
from pyannote.audio import Pipeline

pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization-3.1",
    use_auth_token="TU_TOKEN_HF"
)

diarization = pipeline("meeting_2026-06-12.wav")

for turn, _, speaker in diarization.itertracks(yield_label=True):
    print(f"{speaker}: {turn.start:.1f}s – {turn.end:.1f}s")

Puedes alinear los timestamps de diarización con los timestamps de segmento de Whisper para producir transcripts etiquetados por hablante. Los modelos de pyannote se ejecutan localmente tras la descarga — se necesita una cuenta de Hugging Face para aceptar la licencia del modelo, pero la inferencia es completamente offline.


Consideraciones de Privacidad y Almacenamiento

Ten en cuenta lo siguiente al almacenar transcripts de reuniones:

  • Encripta los archivos WAV y de transcript si contienen información empresarial sensible. BitLocker de Windows o VeraCrypt lo manejan a nivel de carpeta.
  • Establece una política de retención — elimina los archivos WAV sin procesar después de la transcripción; conserva solo el resumen a menos que necesites citas textuales.
  • Unidades compartidas: Si sincronizas transcripts con OneDrive o SharePoint, verifica si esos sistemas aplican OCR o indexación con IA a los documentos subidos.
  • Control de acceso: Restringe los archivos de transcript solo a los participantes. Una carpeta compartida \reuniones\ en una unidad de red no debería estar abierta a toda la empresa.

Propuesta de Valor

La supresión de ruido de VoxBooster garantiza que tu canal de micrófono esté limpio antes de que el audio llegue al WASAPI loopback, lo que mejora directamente la tasa de error de palabras de Whisper en tu voz. Funciona localmente en Windows 10/11, no requiere drivers de kernel y se integra con cualquier aplicación de reuniones. Hay una prueba gratuita de 3 días disponible — sin tarjeta de crédito requerida.

Después del período de prueba: los planes comienzan en $6.99/mes (€5.99/mes en Europa).


FAQ

¿Whisper transcribe en tiempo real en una PC Windows normal? No en tiempo real con plena precisión — Whisper es un modelo por lotes. En una GPU de gama media (RTX 3060), el modelo small o medium transcribe una reunión de 1 hora en unos 3-5 minutos tras finalizar la llamada. Para subtítulos en vivo existen forks como Whisper Live, aunque sacrifican algo de precisión por la latencia.

¿Es legal transcribir una reunión de Zoom o Teams? La legalidad depende de la jurisdicción y la política de la empresa. En la mayoría de los lugares debes informar a todos los participantes antes de grabar o transcribir. Anuncia siempre al inicio de la reunión que estás capturando audio para notas y obtén consentimiento explícito. Este artículo es una guía técnica, no asesoramiento legal.

¿Qué dispositivo WASAPI loopback necesito instalar? No se requiere instalar ningún driver. WASAPI loopback es una API nativa de Windows 10/11 que duplica cualquier dispositivo de salida activo como fuente de captura. FFmpeg, Python sounddevice y la mayoría de bibliotecas de audio lo exponen directamente. No se necesita cable virtual ni driver de terceros.

¿Qué modelo de Whisper debo usar para transcribir reuniones? El modelo medium.en es el mejor balance práctico: 1.5 GB de VRAM, ~90% de reducción de tasa de error sobre tiny, y 4-6× más rápido que large en GPU. Para máquinas solo-CPU usa small.en — transcribe una reunión de 1 hora en unos 20 minutos en una CPU moderna.

¿Puedo transcribir reuniones sin GPU? Sí. Whisper corre en CPU mediante el paquete openai-whisper o el backend CTranslate2 de faster-whisper, que reduce el tiempo de inferencia en CPU aproximadamente a la mitad. Una reunión que tomaría 8 minutos en GPU toma unos 20-25 minutos en una CPU Intel o AMD moderna con small.en.

¿Cómo extraigo elementos de acción automáticamente del transcript? El método más sencillo es un script Python que envía el transcript de Whisper a un prompt de LLM local (Ollama + llama3 o Mistral) pidiendo decisiones y tareas. También puedes pegar el transcript en cualquier IA de chat. La supresión de ruido de VoxBooster mantiene el audio capturado limpio, mejorando directamente la precisión del transcript.

¿Este flujo de trabajo funciona con reuniones grabadas de Microsoft Teams? Sí, de dos maneras: captura el audio en vivo mediante WASAPI loopback durante la llamada, o descarga la grabación de Teams desde OneDrive y ejecuta Whisper sobre el archivo MP4. La segunda opción es más simple y permite re-transcribir en cualquier momento.


Lecturas Adicionales

Prueba VoxBooster — 3 días gratis.

Clonación de voz en tiempo real, soundboard y efectos — donde ya hablas.

  • Sin tarjeta
  • ~30ms de latencia
  • Discord · Teams · OBS
Probar 3 días gratis