# Proyecto de ejemplo: Transcriptor Whisper (CPU) Un pequeño proyecto que demuestra cómo transcribir archivos de audio en CPU usando tres enfoques: - `openai-whisper` (paquete original) # Proyecto de ejemplo: Transcriptor y doblador (Whisper + Coqui TTS) Este repo contiene utilidades para transcribir audio/video en CPU usando distintos backends de Whisper y para generar doblaje por segmentos usando Coqui TTS. Está pensado como una base reproducible y ligera para pruebas en CPU. Contenido principal - `transcribe.py` — CLI principal: transcripción (openai-whisper / transformers / faster-whisper), generación de SRT (incluyendo fallback), síntesis TTS por segmento y pipeline de doblaje (replace / mix). - `process_video.py` — pipeline alto nivel (extraer audio, transcribir, traducir/opcional, generar SRT y quemar subtítulos en video). Requisitos del sistema - `ffmpeg` (disponible en PATH) - Para Coqui TTS se recomienda usar Miniforge/Conda con Python 3.11 en CPU. Instalación rápida 1) Entorno ligero (solo transcripción con `faster-whisper` y dependencias mínimas): ```bash python -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` 2) Entorno para Coqui TTS (recomendado si vas a sintetizar/doblar): ```bash # Instalar Miniforge/Miniconda si no lo tienes, luego: conda create -n tts_env python=3.11 -y conda activate tts_env # PyTorch CPU + TTS python -m pip install --index-url https://download.pytorch.org/whl/cpu torch torchvision torchaudio python -m pip install TTS faster-whisper ``` Nota: en la sesión de ejemplo se creó `tts_env` y se instaló `TTS` y `faster-whisper`. Uso — ejemplos prácticos 1) Transcribir un audio y generar SRT (faster-whisper, modelo `base`): ```bash # desde el entorno donde tengas faster-whisper disponible python whisper_project/transcribe.py \ --file whisper_project/dailyrutines.audio.wav \ --backend faster-whisper --model base --srt ``` 2) Generar SRT de fallback (sin texto) — divide en segmentos uniformes: ```bash python whisper_project/transcribe.py -f path/to/audio.wav -b transformers --srt --srt-fallback ``` 3) Transcripción por segmentos (extrae piezas y transcribe cada una): ```bash python whisper_project/transcribe.py -f path/to/audio.wav --segment-transcribe --srt --srt-segment-seconds 8 ``` 4) Doblaje por segmentos (replace = reemplaza voz original): ```bash # usando el entorno tts_env donde instalaste Coqui TTS conda activate tts_env python whisper_project/transcribe.py \ --file whisper_project/dailyrutines.audio.wav \ --segment-transcribe --srt --srt-file whisper_project/dailyrutines.kokoro.dub.srt \ --srt-segment-seconds 6 \ --tts-model tts_models/en/ljspeech/tacotron2-DDC \ --tts-model-repo tts_models/en/ljspeech/tacotron2-DDC \ --dub --dub-mode replace --dub-out whisper_project/dailyrutines.kokoro.dub.wav ``` 5) Doblaje por segmentos (mix = mezcla TTS con original): ```bash python whisper_project/transcribe.py \ --file whisper_project/dailyrutines.audio.wav \ --segment-transcribe --dub --dub-mode mix --dub-mix-level 0.7 \ --tts-model tts_models/en/ljspeech/tacotron2-DDC --dub-out out_mix.wav ``` Remuxar audio doblado en el MP4 y quemar subtítulos 1) Reemplazar la pista de audio en el MP4 por la pista doblada (sin recomprimir video): ```bash ffmpeg -y -i dailyrutines.mp4 -i whisper_project/dailyrutines.kokoro.dub.wav -c:v copy -map 0:v:0 -map 1:a:0 -shortest dailyrutines.kokoro.dub.mp4 ``` 2) Quemar subtítulos (hardcode) en el video (requiere re-encode del video): ```bash ffmpeg -y -i dailyrutines.mp4 -vf "subtitles=whisper_project/dailyrutines.kokoro.dub.srt:force_style='FontName=Arial,FontSize=24'" -c:a copy dailyrutines.kokoro.subs.mp4 ``` Notas sobre modelos Hugging Face y tokens - Si el repo del modelo TTS o del modelo de ASR es privado necesitarás exportar `HUGGINGFACE_HUB_TOKEN` en el entorno antes de ejecutar el script para que `huggingface_hub.snapshot_download` pueda acceder. Ejemplo: ```bash export HUGGINGFACE_HUB_TOKEN="hf_xxx..." ``` Rendimiento y recomendaciones - En CPU usa modelos pequeños (`tiny`, `base`) para tiempos aceptables. - `faster-whisper` con `compute_type=int8` reduce memoria y acelera en CPU. - Para producción con GPU, instala las ruedas de PyTorch/GPU apropiadas y activa `gpu=True` en las llamadas a TTS y whisper si tu hardware lo permite. Problemas comunes y troubleshooting - "No module named 'faster_whisper'": instala `faster-whisper` en tu entorno. - Coqui TTS tarda en descargar modelos la primera vez (pesan decenas de MB). - Si la síntesis TTS es lenta, verifica que `torch` esté instalado y que `TTS` use un vocoder optimizado (HifiGAN es el por defecto en los modelos de ejemplo). ¿Quieres que haga esto por ti? - Puedo generar el MP4 final (reemplazando pista y/o quemando subtítulos), o ajustar el pipeline de doblaje (p.ej. time-stretch suave). Indica qué prefieres y lo ejecuto localmente en este workspace.