- 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.
161 lines
5.3 KiB
Markdown
161 lines
5.3 KiB
Markdown
## 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`).
|
|
- `ffmpeg` disponible en PATH.
|
|
- Paquetes instalados en el venv (usar `requirements.txt` o `pip 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/python` para indicar el venv; adáptalo a tu
|
|
entorno si usas otro nombre de venv.
|
|
|
|
1) 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:
|
|
|
|
```bash
|
|
.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á a `output/<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`.
|
|
|
|
2) Pipeline completa (SRT -> TTS -> reemplazar audio -> quemar subtítulos)
|
|
|
|
Descripción: flujo completo por defecto (si no usas `--srt-only`).
|
|
|
|
Comando:
|
|
|
|
```bash
|
|
.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:
|
|
- `--mix` si quieres mezclar la pista sintetizada con la original.
|
|
- `--mix-background-volume 0.1` para controlar volumen de fondo.
|
|
- `--keep-chunks`/`--keep-temp` para conservar archivos intermedios.
|
|
|
|
3) Dry-run (simular pasos sin ejecutar)
|
|
|
|
Descripción: imprimirá los pasos planeados sin hacer trabajo pesado.
|
|
|
|
Comando:
|
|
|
|
```bash
|
|
.venv311/bin/python -m whisper_project.main --video input.mp4 --dry-run
|
|
```
|
|
|
|
4) Usar TTS local en lugar de Kokoro
|
|
|
|
Si tienes Coqui TTS instalado y quieres sintetizar localmente:
|
|
|
|
```bash
|
|
.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 dependencia `TTS` y
|
|
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.
|
|
|
|
5) Traducir con Gemini/Argos (servicios externos)
|
|
|
|
Ejemplo con Gemini (requiere clave):
|
|
|
|
```bash
|
|
.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_*`).
|
|
|
|
6) Quemar un `.srt` en 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:
|
|
|
|
```bash
|
|
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 `subtitles` de `ffmpeg` normalmente requiere reencodear el vídeo.
|
|
- Si tu SRT contiene caracteres especiales, el script hace uso de rutas
|
|
absolutas para evitar problemas.
|
|
|
|
7) 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:
|
|
|
|
```bash
|
|
.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
|
|
```
|
|
|
|
8) Flags de diagnóstico y tiempo de ejecución
|
|
- `--verbose` para 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 `sentencepiece` en el venv: `.venv311/bin/python -m pip install sentencepiece`.
|
|
- Error: problemas con import paths cuando se ejecutan scripts auxiliares →
|
|
usar `python -m whisper_project.main` desde 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-tts` o
|
|
aumentar timeouts en la configuración del adaptador Kokoro.
|
|
|
|
¿Qué artefactos debo buscar?
|
|
- SRT transcrito: `*.srt` (original y traducido)
|
|
- WAV sintetizado: `*.dub.wav` o `dub_final.wav` en 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.
|