Proyecto personal · Open source · 2026

transcribe

Transcripción de audio y video en la terminal, local y sin internet: selector interactivo, marcas de tiempo y subtítulos. Open source.

Mi rol

Idea, diseño de la interfaz, desarrollo y publicación como open source, con Claude Code como pareja de programación.

Stack

  • Python
  • faster-whisper
  • Whisper
  • ffmpeg
  • questionary
  • Rich
  • pytest
  • GitHub Actions

El problema

Pasar una nota de voz o una clase grabada a texto casi siempre significa subirla a un servicio en la nube. transcribe lo hace en la propia computadora: eliges los archivos en un menú (o los pasas como argumentos) y sale el texto, con marcas de tiempo o subtítulos .srt si los quieres. Nada sale de la máquina.

Lo destacado

  1. 01Selector interactivo: tus Descargas de lo más nuevo a lo más viejo, con duración y antigüedad; filtro escribiendo, selección múltiple y búsqueda en toda la máquina (carpeta personal + discos montados) con fd.
  2. 02Rápido sin GPU: el modelo small de Whisper transcribe unas 10 veces más rápido que el tiempo real en la CPU de una laptop; una nota de voz de 30 s tarda ~3 s.
  3. 03La GPU solo si de verdad funciona: antes de usarla comprueba que carguen las librerías de CUDA y, si falla a mitad de camino, sigue en la CPU sin romperse.
  4. 04Lee cualquier formato con ffmpeg (notas de voz, mp3, el audio de un video) y así evita un choque de versiones entre faster-whisper y PyAV.
  5. 05Interfaz en español o inglés según el sistema, salida en pantalla, .txt y .srt, 29 tests con un modelo falso y CI en GitHub Actions con tres versiones de Python.

Lo que aprendí

  • → 01Un modelo más grande no siempre arregla el error: el modelo grande también se equivocó en la misma palabra dicha rápido, así que me quedé con el chico y no bajé gigas de más.
  • → 02Una GPU visible no es una GPU usable: probando en mi laptop, el modelo cargaba en la GPU y recién fallaba al transcribir porque faltaba una librería.
  • → 03Usar la interfaz como un usuario encuentra lo que los tests no ven: manejándola desde tmux apareció un error del filtro de búsqueda que ningún test cubría.

Artículos sobre este proyecto

Siguiente proyecto

rOS →

← Volver