- Updated `srt_to_kokoro.py` to provide a CLI entrypoint with argument parsing. - Enhanced error handling and logging for better user feedback. - Introduced a compatibility layer for legacy scripts. - Added configuration handling via `config.toml` for endpoint and API key. - Improved documentation and comments for clarity. Enhance PipelineOrchestrator with in-process transcriber fallback - Implemented `InProcessTranscriber` to handle transcription using multiple strategies. - Added support for `srt_only` flag to return translated SRT without TTS synthesis. - Improved error handling and logging for transcriber initialization. Add installation and usage documentation - Created `INSTALLATION.md` for detailed setup instructions for CPU and GPU environments. - Added `USAGE.md` with practical examples for common use cases and command-line options. - Included a script for automated installation and environment setup. Implement SRT burning utility - Added `burn_srt.py` to facilitate embedding SRT subtitles into video files using ffmpeg. - Provided command-line options for style and codec customization. Update project configuration management - Introduced `config.py` to centralize configuration loading from `config.toml`. - Ensured that environment variables are not read to avoid implicit overrides. Enhance package management with `pyproject.toml` - Added `pyproject.toml` for modern packaging and dependency management. - Defined optional dependencies for CPU and TTS support. Add smoke test fixture for SRT - Created `smoke_test.srt` as a sample subtitle file for testing purposes. Update requirements and setup configurations - Revised `requirements.txt` and `setup.cfg` for better dependency management and clarity. - Included installation instructions for editable mode and local TTS support.
5.3 KiB
Casos de uso y ejemplos de ejecución
Este documento muestra ejemplos de uso reales del proyecto y variantes de
ejecución para cubrir los flujos más comunes: extraer sólo el SRT traducido,
ejecutar la pipeline completa, modo dry-run, TTS local vs Kokoro, y cómo quemar
el .srt en un vídeo por separado.
Prerequisitos
- Tener Python 3.11 y el virtualenv activado (ejemplo:
.venv311). ffmpegdisponible en PATH.- Paquetes instalados en el venv (usar
requirements.txtopip install -e .[cpu,tts]).
Rutas/convención
- El CLI principal es:
python -m whisper_project.main. - El script para quemar SRT es:
python -m whisper_project.burn_srt. - En los ejemplos uso
.venv311/bin/pythonpara indicar el venv; adáptalo a tu entorno si usas otro nombre de venv.
- Extraer y traducir sólo el SRT (modo rápido, sin TTS)
Descripción: ejecuta la transcripción + traducción y deja como salida el archivo SRT traducido. Útil cuando sólo necesitas subtítulos.
Comando:
.venv311/bin/python -m whisper_project.main \
--video output/dailyrutines/dailyrutines.mp4 \
--translate-method local \
--srt-only
Salida esperada:
output/dailyrutines/dailyrutines.translated.srt(o un SRT en el workdir que se moverá aoutput/<basename>/).
Notas:
- No se ejecuta síntesis (TTS) ni se modifica el vídeo.
- Si quieres mantener temporales (chunks) añade
--keep-chunks --keep-temp.
- Pipeline completa (SRT -> TTS -> reemplazar audio -> quemar subtítulos)
Descripción: flujo completo por defecto (si no usas --srt-only).
Comando:
.venv311/bin/python -m whisper_project.main \
--video input.mp4 \
--translate-method local \
--kokoro-endpoint https://kokoro.example/api/synthesize \
--kokoro-key $KOKORO_KEY \
--voice em_alex
Salida esperada:
input.replaced_audio.mp4(vídeo con audio reemplazado)input.replaced_audio.subs.mp4(vídeo final con subtítulos quemados)output/<basename>/cuando la CLI mueve artefactos al terminar.
Opciones útiles:
--mixsi quieres mezclar la pista sintetizada con la original.--mix-background-volume 0.1para controlar volumen de fondo.--keep-chunks/--keep-temppara conservar archivos intermedios.
- Dry-run (simular pasos sin ejecutar)
Descripción: imprimirá los pasos planeados sin hacer trabajo pesado.
Comando:
.venv311/bin/python -m whisper_project.main --video input.mp4 --dry-run
- Usar TTS local en lugar de Kokoro
Si tienes Coqui TTS instalado y quieres sintetizar localmente:
.venv311/bin/python -m whisper_project.main \
--video input.mp4 \
--translate-method local \
--local-tts
Notas:
- Asegúrate de que en tu
pyproject/requirements está la dependenciaTTSy que tu Python es 3.11 (Coqui TTS no siempre es compatible con 3.12+). - Local TTS reduce dependencia de red y suele ser más rápido si el HW es suficiente.
- Traducir con Gemini/Argos (servicios externos)
Ejemplo con Gemini (requiere clave):
.venv311/bin/python -m whisper_project.main \
--video input.mp4 \
--translate-method gemini \
--gemini-key $GEMINI_KEY
Si falla el adaptador local, el orquestador cae a un wrapper que puede lanzar
scripts auxiliares (ver whisper_project/translate_*).
- Quemar un
.srten un vídeo por separado
Descripción: si ya tienes un .srt (p. ej. generado por --srt-only) y
quieres incrustarlo en el vídeo sin ejecutar todo el pipeline.
Comando:
python -m whisper_project.burn_srt \
--video input.mp4 \
--srt translated.srt \
--out input.subbed.mp4 \
--style "FontName=Arial,FontSize=24" \
--codec libx264
Notas:
- El filtro
subtitlesdeffmpegnormalmente requiere reencodear el vídeo. - Si tu SRT contiene caracteres especiales, el script hace uso de rutas absolutas para evitar problemas.
- Encadenar extracción SRT y quemado (ejemplo rápido)
Extraer SRT traducido y quemarlo en un solo pipeline usando tuberías de shell o pasos secuenciales:
.venv311/bin/python -m whisper_project.main \
--video input.mp4 --translate-method local --srt-only && \
python -m whisper_project.burn_srt \
--video input.mp4 --srt output/input/input.translated.srt --out input.subbed.mp4
- Flags de diagnóstico y tiempo de ejecución
--verbosepara más logging.- Revisar
logs/(si está configurado) para detalles de errores.
Problemas comunes y soluciones rápidas
- Error: "This tokenizer cannot be instantiated — sentencepiece missing" →
instalar
sentencepieceen el venv:.venv311/bin/python -m pip install sentencepiece. - Error: problemas con import paths cuando se ejecutan scripts auxiliares →
usar
python -m whisper_project.maindesde la raíz del repo para garantizar que el paquete se importa correctamente. - Si la síntesis via Kokoro tarda o da timeouts, considera
--local-ttso aumentar timeouts en la configuración del adaptador Kokoro.
¿Qué artefactos debo buscar?
- SRT transcrito:
*.srt(original y traducido) - WAV sintetizado:
*.dub.wavodub_final.waven workdir - Vídeos finales:
*.replaced_audio.mp4,*.replaced_audio.subs.mp4
¿Quieres que ejecute alguno de estos ejemplos ahora en tu venv .venv311 y con
tu fichero output/dailyrutines/dailyrutines.mp4? Puedo ejecutar sólo la
extracción SRT traducida (--srt-only) y traerte el log + ruta del SRT.