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 low-latency audio capture 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
| Paso | Herramienta | Tiempo |
|---|---|---|
| Capturar audio | FFmpeg + low-latency audio capture loopback | En vivo |
| Transcribir | Whisper (medium.en) | ~4 min / reunión de 1 hr |
| Extraer acciones | Python + LLM local o pegar en IA | ~2 min |
| Salida | Archivo Markdown .md | Inmediato |
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:
- Anuncia claramente al inicio: “Estoy capturando audio para transcripción local con el fin de generar notas de reunión.”
- Da a los participantes la opción de no participar o hablar fuera del registro.
- Consulta la política de grabación de llamadas de tu empresa.
- 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 — low-latency audio capture 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 low-latency audio capture Loopback
low-latency audio capture 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. low-latency audio capture 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
| Modelo | VRAM | Velocidad (GPU) | Velocidad (CPU) | Ideal Para |
|---|---|---|---|---|
| tiny.en | 1 GB | Muy rápido | 5 min/hr | Borradores rápidos, pruebas |
| small.en | 2 GB | Rápido | 20 min/hr | Máquinas solo-CPU |
| medium.en | 5 GB | Equilibrado | 60 min/hr | Recomendación predeterminada |
| large-v3 | 10 GB | Lento | No práctico | Má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ística | Whisper (local) | Otter.ai | Fireflies | Zoom AI Notes |
|---|---|---|---|---|
| Datos salen del dispositivo | No | Sí | Sí | Sí |
| Costo mensual | $0 | $10–$20/usuario | $10–$19/usuario | Incluido con Zoom |
| Precisión (inglés) | 88–94% WER | ~88% | ~87% | ~85% |
| Diarización de hablantes | Con pyannote | Sí | Sí | Sí |
| Vocabulario personalizado | Vía prompt | De pago | De pago | No |
| Funciona sin internet | Sí | No | No | No |
| Tiempo de configuración | 30 min | 5 min | 5 min | 0 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 low-latency audio capture 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 low-latency audio capture loopback necesito instalar? No se requiere instalar ningún driver. low-latency audio capture 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 low-latency audio capture 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
- OpenAI Whisper en GitHub — pesos del modelo, benchmarks y documentación de instalación
- Grabación y Transcripción en Zoom — Ayuda Oficial — cómo maneja Zoom las grabaciones en la nube
- Reconocimiento de voz — Wikipedia — contexto sobre tecnología ASR y métricas WER
- Cómo funciona el procesamiento de audio en tiempo real — procesamiento de audio en tiempo real explicado
- Mejor supresión de ruido para reuniones Windows — comparación de herramientas locales de supresión de ruido