Intermedio 12 minEscritorio

Resumen de reunión automático: Whisper + LLM 100 % local

Elaborar un informe de reunión con IA consta de dos pasos: transcribir el audio y luego resumir el texto. El problema es que la mayoría de las herramientas SaaS envían la grabación completa de tu reunión —nombres, cifras, estrategia— a servidores de terceros. Esta guía monta el mismo flujo de procesamiento íntegramente en local: Whisper para la transcripción, un LLM con Ollama para extraer decisiones y acciones, sin que nada salga de tu máquina.

Por Marie L.·Actualización 2026-08-27·Probado en Windows, macOS y Linux

#Por qué el procesamiento local es necesario para las reuniones sensibles

Una reunión no es un archivo cualquiera. En una hora de grabación aparecen nombres de clientes, importes, decisiones de recursos humanos, planes de producto no anunciados y, a veces, datos personales en el sentido del RGPD. Confiar este audio a un servicio de generación automática de actas de reunión en la nube supone aceptar que todo este contenido se transfiera, se procese y, potencialmente, se conserve por parte de un tercero.

Confidencialidad real
El audio y la transcripción permanecen en tu equipo. Ningún dato profesional pasa por un servidor externo que pueda registrarlo o utilizarlo para entrenar un modelo.
Cumplimiento simplificado del RGPD
No hay transferencia a un subcontratista, a menudo situado fuera de la UE. El apartado «transferencia de datos personales» de tu evaluación de impacto se elimina de raíz.
Cero costo recurrente
Sin suscripción por usuario ni facturación por minuto transcrito. Una vez que la máquina esté lista, puedes procesar tantas reuniones como quieras.
Funciona offline
Un desplazamiento, un sitio sin conexión fiable, una reunión en una sala aislada: el procesamiento sigue disponible sin Internet.
i
Usar un sistema local no exime de avisar
Grabar una reunión sigue sujeto a reglas: informa a los participantes y obtén su consentimiento. El procesamiento local resuelve la cuestión de la transferencia de datos, no la del consentimiento para grabar.

#El principio del pipeline en dos fases

El kit IA Local

Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.

  • Espacio en línea de por vida
  • PDF + archivos
  • Actualizaciones de por vida

Un informe de reunión generado por IA se descompone siempre en dos etapas distintas, que no se deben confundir. La primera convierte el sonido en texto: es la función de Whisper, el modelo de reconocimiento de voz de OpenAI, del que varias implementaciones de código abierto funcionan perfectamente en local. La segunda convierte este texto en bruto en un documento estructurado: es la función de un LLM local servido por Ollama.

Transcripción (Whisper)
Entrada: un archivo de audio o vídeo. Salida: el texto completo de la reunión, posiblemente con marcas de tiempo. Es un cálculo pesado pero mecánico.
Síntesis (LLM Ollama)
Entrada: la transcripción. Salida: un informe de la reunión con un resumen, las decisiones tomadas y las acciones que deben llevarse a cabo con su responsable. Ahí es donde el prompt marca la diferencia.

Separar las dos etapas tiene un beneficio práctico: puedes volver a generar el resumen tantas veces como quieras, con prompts diferentes, sin tener que repetir la transcripción, que es la parte más lenta.

#Prerrequisitos

Ollama instalado
El demonio escucha por defecto en http://localhost:11434. Si aún no has instalado Ollama, consulta la guía de instalación que aparece al final de la página.
Un LLM para resumir
Un modelo de 9 a 12B en Q4_K_M (≈7 GB de VRAM) bueno en francés es más que suficiente. Qwen 3.5 9B (256k de contexto, ideal para transcripciones largas) o Gemma 4 12B son excelentes opciones para resúmenes estructurados.
Whisper
Una implementación local: openai-whisper (simple), faster-whisper (rápido) o whisper.cpp (ligero, sin GPU). Esta guía utiliza las dos primeras.
ffmpeg
Indispensable para leer formatos de video (mp4 de Teams/Zoom) y convertir audio. Whisper lo utiliza en segundo plano.
Hardware
Una GPU acelera mucho Whisper, pero medium también funciona en CPU (más lentamente). Aproximadamente 2 GB de VRAM para el modelo small, más para large-v3.
→
¿Qué modelo Whisper elegir?
Para el francés, small ya da buenos resultados con audio limpio. Pasa a medium para una reunión con varias voces o un audio de calidad media, y a large-v3 cuando la calidad de la transcripción prima sobre la velocidad (acentos, jerga, voces superpuestas).

#Paso 1: transcribir el audio de la reunión con Whisper

La instalación más directa es mediante el paquete openai-whisper, que proporciona un comando listo para usar desde la línea de comandos. Instálalo en un entorno Python, con ffmpeg instalado en el sistema.

Instalación
# ffmpeg (Debian/Ubuntu)
sudo apt install ffmpeg

# Whisper (dans un venv de préférence)
pip install -U openai-whisper

La transcripción se realiza luego con un solo comando. Se especifica el modelo, el idioma (imponerlo evita errores de detección en reuniones cortas) y el formato de salida de texto.

Terminal
whisper reunion.mp3 \
  --model medium \
  --language French \
  --output_format txt \
  --output_dir ./transcriptions

Obtienes un archivo reunion.txt que contiene toda la reunión. Si también quieres subtítulos con marcas de tiempo (útiles para localizar un pasaje), añade --output_format srt, o all para generar todo de una vez.

Para una reunión de una hora, la transcripción puede tardar mucho en la CPU. Ahí es donde entra faster-whisper, una reimplementación que utiliza CTranslate2 y es mucho más rápida con la misma calidad. Aquí tienes un script de Python que transcribe y guarda el texto.

transcrire.py
from faster_whisper import WhisperModel

# device="cuda" si GPU NVIDIA, sinon "cpu"
model = WhisperModel("medium", device="cuda", compute_type="float16")

segments, info = model.transcribe(
    "reunion.mp3",
    language="fr",
    vad_filter=True,   # coupe les silences, gagne du temps
)

with open("reunion.txt", "w", encoding="utf-8") as f:
    for seg in segments:
        f.write(seg.text.strip() + "\n")

print(f"Langue détectée : {info.language} — durée : {info.duration:.0f}s")
→
La opción vad_filter
El filtro VAD (detección de actividad vocal) elimina los intervalos sin voz y los silencios antes de la transcripción. En una reunión real, llena de pausas y tiempos muertos, acelera significativamente el procesamiento sin degradar el texto útil.

#Procesar una grabación de Teams o Zoom

Las grabaciones de Teams y Zoom son archivos de vídeo .mp4 (a veces .m4a si solo contienen audio). Whisper puede leerlos directamente porque se apoya en ffmpeg, pero extraer primero la pista de audio en mono a 16 kHz es más fiable y más rápido, sobre todo con whisper.cpp, que lo exige.

Extraer el audio del .mp4
ffmpeg -i reunion_teams.mp4 \
  -ar 16000 -ac 1 \
  -c:a pcm_s16le \
  reunion.wav
-ar 16000
Remuestrea a 16 kHz, la frecuencia esperada por Whisper. No es necesario mantener 48 kHz: el habla no necesita esa frecuencia.
-ac 1
Combina los canales en mono. Una reunión no tiene sentido en estéreo para la transcripción.
-c:a pcm_s16le
Genera WAV sin comprimir, el formato más seguro como entrada para Whisper.

¿Dónde encontrar el archivo? En Teams, las grabaciones se almacenan en OneDrive/SharePoint (carpeta «Recordings»): descarga el .mp4 en tu equipo antes de procesarlo. En Zoom, la grabación local se encuentra en la carpeta Documents/Zoom, con un archivo audio.m4a separado si la opción está activada: ese es el archivo que debes usar directamente, sin pasar por el vídeo.

!
No proceses en la nube SaaS
Toda la razón de ser del procesamiento local se pierde si dejas que la IA del proveedor (Teams Premium, Zoom AI Companion) genere el acta de la reunión en el servidor. Obtén el archivo sin procesar y procésalo en tu equipo: es la única forma de garantizar que no se filtre nada.

#Paso 2: la síntesis mediante un LLM local

La transcripción sin procesar es ilegible: no tiene puntuación fiable ni estructura y contiene repeticiones. Es el LLM local el que la transforma en un informe utilizable. Se envía el texto a Ollama con instrucciones precisas sobre el formato de salida esperado.

La forma más sencilla de probar: enviar la transcripción a ollama run mediante una tubería. El modelo recibe el prompt seguido del texto de la reunión.

Resumen rápido
ollama run qwen3.5:9b "Résume ce compte rendu de réunion en français, \
en listant les points clés, les décisions et les actions à mener. \
Voici la transcription :

$(cat reunion.txt)"

Para uso recurrente, es mejor usar la API REST de Ollama en el puerto 11434: separa correctamente el mensaje de sistema (el rol y el formato) del contenido (la transcripción) y hace que el resultado sea reutilizable en un script.

synthese.py
import requests

transcript = open("reunion.txt", encoding="utf-8").read()

SYSTEM = """Tu es un assistant qui rédige des comptes rendus de réunion clairs et concis en français.
Tu ne inventes rien : tu ne t'appuies que sur la transcription fournie."""

resp = requests.post("http://localhost:11434/api/chat", json={
    "model": "qwen3.5:9b",
    "stream": False,
    "messages": [
        {"role": "system", "content": SYSTEM},
        {"role": "user", "content": PROMPT + "\n\n---\n" + transcript},
    ],
})

print(resp.json()["message"]["content"])
i
Cuidado con la ventana de contexto
Una reunión de una hora produce fácilmente entre 8.000 y 12.000 palabras. Asegúrate de que el contexto del modelo sea suficientemente grande (num_ctx). Más allá de eso, divide la transcripción en secciones y resume por partes antes de la síntesis final — un mini pipeline map-reduce.

#El prompt que devuelve decisiones y acciones de forma clara

Esta es la clave de un buen informe de reunión generado por IA. Un prompt vago produce un extenso bloque de texto a modo de resumen; un prompt estructurado produce un documento directamente utilizable. La clave: imponer un formato de salida explícito, dividido en secciones, y pedir al modelo que distinga claramente lo que se ha decidido de lo que aún queda por hacer.

Prompt de síntesis
À partir de la transcription de réunion ci-dessous, produis un compte rendu structuré en français, en respectant EXACTEMENT ce format :

## Résumé
Trois à cinq phrases sur l'objet et les conclusions de la réunion.

## Décisions prises
- Une puce par décision actée, formulée clairement.

## Actions à mener
- [Responsable] Action précise — échéance si mentionnée.

## Points en suspens
- Sujets évoqués sans conclusion, à traiter plus tard.

Règles :
- Ne reprends que ce qui est réellement dit dans la transcription.
- Si le responsable ou l'échéance d'une action n'est pas mentionné, écris « non précisé ».
- Reste factuel, pas de reformulation marketing.
Formato impuesto
Los títulos de sección (##) obligan al modelo a organizar la información en lugar de mezclarlo todo. Obtienes un resultado homogéneo de una reunión a otra.
La regla contra las alucinaciones
«Incluye solo lo que realmente se dice» y «no especificado» reducen considerablemente el riesgo de que el LLM invente un plazo o un responsable que no exista.
El responsable entre corchetes
Indicar [Responsable] al inicio de cada acción permite pasar directamente del acta a la acción: se sabe quién hace qué de un vistazo.
→
Prueba varios modelos en la misma transcripción
Como la transcripción ya está hecha, comparar modelos no cuesta nada: vuelve a generar el resumen con Qwen 3.5 9B y luego con Gemma 4 12B sobre el mismo reunion.txt. Pronto verás cuál estructura mejor las acciones en francés.

#Automatizar todo el pipeline

Una vez validadas las dos etapas, se encadenan en un solo script: pásale un archivo de reunión y generará el informe de la reunión en Markdown. Así, el procedimiento se convierte en una herramienta de uso diario.

compte-rendu.sh
#!/usr/bin/env bash
set -euo pipefail

INPUT="$1"                 # reunion.mp4 ou reunion.mp3
BASE="$(basename "${INPUT%.*}")"

# 1. Extraire l'audio en 16 kHz mono
ffmpeg -y -i "$INPUT" -ar 16000 -ac 1 -c:a pcm_s16le "$BASE.wav"

# 2. Transcrire
whisper "$BASE.wav" --model medium --language French \
  --output_format txt --output_dir .

# 3. Synthétiser avec le LLM local
python synthese.py "$BASE.txt" > "$BASE-compte-rendu.md"

echo "Compte rendu prêt : $BASE-compte-rendu.md"

Ajusta synthese.py para que lea el archivo pasado como argumento y escriba el resultado en la salida estándar. Así obtienes un comando único: ./compte-rendu.sh reunion_teams.mp4, y el resumen en Markdown aparece unos minutos después, sin que un solo byte abandone la máquina.

#Solución de problemas

Transcripción que sale en inglés
Whisper ha detectado mal el idioma debido a un inicio silencioso o bilingüe. Fuerza siempre --language French (o language="fr").
Nombres propios mal escritos
Es normal: Whisper adivina fonéticamente. Añade un paso rápido de corrección en el prompt de síntesis («corrige los nombres claramente mal transcritos») o proporciona un glosario de nombres al LLM.
Reunión demasiado larga para el contexto
Divide la transcripción en bloques de aproximadamente 3.000 palabras, resume cada uno y haz una síntesis de los resúmenes. Aumenta también num_ctx en la llamada a Ollama si tu VRAM lo permite.
Whisper muy lento
Pasa a faster-whisper, activa vad_filter, usa un modelo más pequeño (medium → small) o pasa a ejecutar el modelo en GPU. whisper.cpp también es una buena opción en una máquina sin GPU.
Voces que se superponen
Whisper no distingue a los hablantes. Para un informe que indique «quién dijo qué», hay que añadir previamente una etapa de diarización (por ejemplo, pyannote), un tema que merece tratarse por separado.

#Para ir más allá

Esta guía combina dos módulos ya tratados en detalle en el sitio. Para profundizar en cada paso o reforzar la seguridad del conjunto:

Whisper + Ollama: pipeline de transcripción y resumen 100% local
La guía de referencia sobre el componente de audio, con las variantes de implementación de Whisper y un ejemplo completo, de principio a fin, de una reunión de una hora.
Elegir tu cuantización (Q4, Q5, Q8, FP16)
Para que un modelo de resumen de 14B o 32B quepa en tu GPU sin degradar la calidad del acta de la reunión.
LLM local y RGPD: cumplimiento normativo para los datos privados en la empresa
La vertiente normativa: procesar reuniones en local simplifica el cumplimiento normativo; esta guía detalla lo que aún queda por documentar.
¿Esta guía te ha ayudado?

¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.