← Todas las recetasReceta · 18 de septiembre de 2025

De una grabación a transcripción, capítulos y notas, todo en local

Un flujo para convertir una conversación grabada (podcast, entrevista, reunión) en transcripción por hablante, capítulos y notas con Whisper y un modelo local, con revisión humana antes de publicar.

Portada de la receta: De una grabación a transcripción, capítulos y notas, todo en local
Dificultadavanzada
Tiempouna tarde para montarlo
IngredientesWhisper · Ollama · Python · n8n · Astro

Si grabas conversaciones —un podcast, entrevistas, reuniones— este flujo te lleva del audio crudo a una transcripción por hablante, capítulos y notas listas para revisar, sin subir el audio a ningún servicio. Es el que vamos a usar para nuestro podcast; los tiempos concretos dependerán de tu máquina y del modelo.

El flujo completo

1. GRABACIÓN     → una pista por persona
2. TRANSCRIPCIÓN → Whisper large-v3 local
3. LIMPIEZA      → LLM local quita muletillas, marca hablantes
4. SHOW NOTES    → LLM propone resumen, títulos, capítulos, links
5. WEB           → Markdown + frontmatter → Astro build
6. PUBLICACIÓN   → rsync al servidor → live

Pieza 1: Transcripción con diarización ligera

Whisper transcribe, pero no distingue quién habla por sí solo. Una opción controlable es grabar cada micrófono en un canal o pista separada con Audacity/OBS, transcribir cada pista por separado y unir los segmentos por timestamp:

from faster_whisper import WhisperModel
model = WhisperModel("large-v3", device="cuda", compute_type="float16")

for pista, hablante in [("ana.wav", "Ana"), ("luis.wav", "Luis")]:
    segments, _ = model.transcribe(pista, language="es")
    for s in segments:
        print(f"[{s.start:.1f}] {hablante}: {s.text}")

Luego se ordenan todos los segmentos por start y ya tienes el diálogo completo.

Pieza 2: Show notes con el LLM local

Pásale la transcripción a tu modelo con este prompt. La calidad depende del modelo y de la revisión humana:

Eres el editor de un podcast. Con esta transcripción, genera en Markdown:

1. Título del episodio: gancho, máximo 8 palabras, sin clickbait.
2. Descripción: 2 frases para iTunes/web.
3. Capítulos con timestamps: "## 12:34 Título del tema" (usa los timestamps reales).
4. Menciones: herramientas, modelos y links mencionados en lista.
5. 3 frases destacables para redes sociales.

Transcripción:
<pega aquí la transcripción>

Pieza 3: El frontmatter automático

Otro prompt que convierte las show notes en el frontmatter de la web:

Convierte esto a frontmatter YAML válido para un post:
- title (sin comillas dobles internas)
- description (máximo 160 caracteres)
- pubDate: AAAA-MM-DD de hoy
- tags: máximo 4
Devuelve SOLO el bloque YAML entre ---.

Juntas ambos, revisas cada nombre y timestamp, pegas el Markdown debajo, lo guardas en la carpeta de contenido de tu web y ejecutas el build y el despliegue:

npm run build
# y despliega (nosotros lo hacemos con un git push: ver la guía «Desplegar con un git push»)

Pieza 4: El botón final (n8n)

Todo lo anterior podría encadenarse en un workflow n8n: carpeta watch → Whisper → LLM → genera Markdown → revisión humana → build → deploy. La automatización no publicará nada sin una aprobación explícita.

Lo que todavía hacemos a mano (y por qué)

  • Revisar la transcripción: los nombres propios y anglicismos pueden salir mal. La revisión humana evita que un error llegue a la web.
  • Aprobar las show notes: el modelo puede proponer un resumen, pero los títulos y los enlaces los elegimos nosotros. La IA propone, el humano decide.
  • El audio no se toca: ni EQ ni magia. La limpieza de audio es otro oficio.

Qué medir para saber si te compensa

  • Tiempo de transcripción por hora de audio con tu máquina y tu modelo de Whisper
  • Tiempo de generación de las notas con tu modelo local
  • Tiempo humano de revisión, y dónde cambia de verdad el resultado

Si solo quieres la parte de transcribir, tienes la receta corta en transcribe audio con Whisper.