submaster/DOCS/USAGE.md
Cesar Mendivil c22767d3d4 Refactor SRT to Kokoro synthesis script for improved CLI functionality and compatibility
- 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.
2025-10-25 00:00:02 -07:00

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.