Skip to content

Repository files navigation

Transcriptor local

Herramienta web local de captura, 4 pestañas:

  1. Transcribir: arrastras una grabación (audio o video) o pegas un link y sale un transcript .md con timestamps. Opcional: minuta automática y guardado en el Second Brain. Corre en la GPU (faster-whisper large-v3); el audio nunca sale del PC.
  2. Descargar video: link de YouTube, TikTok, Instagram, X, etc. → mp3 o mp4 (720p/1080p/máxima) en ~/Downloads. Todas las calidades prefieren H.264+AAC: el AV1 que YouTube sirve por defecto se ve negro en reproductores sin ese códec y atora a CapCut/Premiere. IG/FB privados: elegir el navegador con la sesión iniciada (cookies). Facebook anónimo está roto en yt-dlp 2026.07.04.
  3. Resumir link: artículo, post o paper (PDF) → resumen .md en 3 modos (rápido / detallado / paper técnico) con el link original siempre visible. PDF y arxiv preseleccionan el modo paper. Salen en salidas/resumenes/.
  4. Grabar reunión: botón grabar/detener para reuniones en vivo, sin archivo previo. Virtual graba mic + lo que suena por los parlantes en 2 pistas (el transcript sale etiquetado "Juan" / "Los demás"); presencial graba solo el mic. El audio se escribe incremental a grabaciones/: si algo muere a mitad, lo capturado sobrevive. Al detener entra al mismo pipeline (transcribir → minuta → vault). El diálogo se arma por timestamps de palabra y un anti-eco de dos pasadas descarta lo que el mic capta de los parlantes; aun así, con audífonos la separación queda mucho más limpia.

La minuta y los resúmenes usan DeepSeek (misma credencial que Claude Code). En el wifi de la universidad DeepSeek está bloqueado; transcribir y descargar sí funcionan allá.

Uso

./run.sh          # levanta http://localhost:7860 y abre el navegador

Piezas

Archivo Qué hace
app.py UI web (Gradio, 3 pestañas)
nucleo.py archivo/link → audio (ffmpeg) → transcript .md (faster-whisper)
descargador.py yt-dlp → mp3/mp4 con calidades a ~/Downloads
resumidor.py URL/PDF → texto (trafilatura/pymupdf) → resumen por modo
grabador.py graba mic + monitor del sink (PipeWire) en 2 pistas wav y las intercala en un transcript etiquetado
llm.py cliente único DeepSeek (lee ~/.claude/settings.deepseek.json)
minuta.py prompt de minuta de reuniones sobre llm.py
vault.py copia .md a `raw/transcripciones
descargar_modelo.py baja modelos whisper desde ModelScope (la U bloquea huggingface.co por SNI)

Notas

  • Modelos en modelos/ (gitignoreado). Descarga manual: uv run python descargar_modelo.py large-v3
  • Si whisper da "CUDA out of memory": ollama suele tener un modelo cargado (3.9GB de los 8GB). ollama ps para verlo y ollama stop <modelo> lo suelta.
  • Si un día huggingface.co vuelve a funcionar en la red, todo sigue igual: la copia local tiene prioridad.
  • Diarización (quién dijo qué) planeada para v1.1; no está en v1.

About

Local speech pipeline: recordings or links to Markdown transcripts and meeting minutes, Whisper large-v3 on your own GPU.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages