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
- 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.
- 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.
- 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.
- 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.
- 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 →