Locución tipo presentador
Herramientas: $VIDEO_ROOT/voice/ de video-generations (speak.py, speak_cast.py, polish_vo.py, mix_narration.py, el_cache.py); modelos en $VIDEO_ROOT/models (python studio/get_models.py).
1. Escribe como un presentador (el guion importa más que la voz)
-
Nunca leer la pantalla. El texto en pantalla declara el hecho; la voz añade significado, emoción o la historia detrás. Si una línea repite palabra por palabra lo que está en pantalla, reescríbela o elimínala. Excepciones: nombres de productos y el eslogan final.
-
Una idea por línea. Frases cortas, de 6 a 12 palabras. Inglés hablado, se permiten contracciones.
-
Hilo héroe. Sigue a una persona (p.ej. Aroon, Anita, Dr Rao) y haz referencia a ella; la gente recuerda historias, no funciones.
-
Enfoque al final. Coloca la palabra clave al final de su frase ("…cada equipo tiene solo uno."); la voz cae naturalmente ahí. Contexto al inicio: "A las dos catorce, temprano en la mañana, // Aroon // se desploma."
-
Regla de tres para beneficios y listas, con tiempos uniformes.
-
Contraste y giro: problema → "Ahora, imagina…" → solución.
-
Aperturas: comienza cada sección con un anclaje ("Primero, para las familias.", "Ahora, entra al hospital.").
-
Cierres: las afirmaciones terminan con un punto para un tono descendente y conclusivo. Cierra con la promesa o el eslogan, una invitación clara, luego "Gracias."
-
Ritmo (estilo de la casa): una entrega lenta y con muchas pausas suena robótica ("demasiadas pausas, pocas palabras"). Por defecto, usa un ritmo fluido de presentador:
- velocidad 1.00 para la mayoría de las líneas, 1.02 para listas/explicaciones largas, 0.95–0.97 para eslóganes y cierres, 0.93 solo para el único gancho emocional.
- Como máximo un compás
...por línea, y solo en el giro emocional ("A las dos catorce, temprano en la mañana ... Aroon se desploma", "¿Qué pasaría si ... bastara un solo toque?"). Usa/con moderación; prefiere comas simples. - Velocidad medida en este estilo: aproximadamente 2.6–2.8 palabras habladas por segundo (af_kore). Presupuesto = palabras / 2.7 + 0.35 s de cola de pulido; una línea debe caber antes del siguiente tiempo visual.
- Deja un silencio deliberado (1–1.5 s, sin línea) después de la construcción del problema y después del impacto emocional de la solución ("Más tranquilo que esa primera noche.").
- Densidad: alrededor de 230–250 palabras narradas para una película de 2.5 minutos; cada escena recibe al menos una línea, por lo que ninguna escena permanece en silencio más de ~3 s excepto los silencios planificados.
-
Honestidad: sin resultados inventados; los nombres y cifras ficticios son datos de demostración.
-
Ruta rápida (para ahorrar tiempo): escribe todas las líneas → estima las duraciones con el presupuesto anterior → corrige los excesos en el texto antes de generar → genera una vez. Regenerar en la computadora portátil cuesta unos 25–40 s por línea, por lo que la mayor parte del tiempo se destina al texto que se reescribe.
2. Marcado (archivo de narración)
LINES = [(start_s, speed, text), ...], VOICE = '...', más un docstring con notas de entrega. Ejemplo: voice/examples/narration_demo.py.
/= pausa de respiración (0.25 s),//= pausa dramática (0.55 s),...= compás sostenido (0.8 s).- Vuelve a deletrear los nombres que el motor pronuncia mal en
voice/lexicon.py(p.ej. Arun → "Aroon", Dr → "Doctor") y prueba una línea primero. - Diálogo con varias voces:
LINES = [(key, voice, speed, text), ...]paraspeak_cast.py(voice/examples/dialogue_demo.py).
3. Voz
- Motor: Kokoro mediante kokoro-onnx, offline, más de 50 voces. Buenas elecciones para presentador: af_kore / af_heart (femenina tranquila y segura), hm_omega / hm_psi (masculina india), am_onyx (masculina profunda), bm_george (masculina británica), hf_alpha / hf_beta (femenina india). Las mezclas funcionan:
hm_omega:0.6,am_onyx:0.4. - Para una nueva elección de voz, genera 3 líneas representativas (gancho, solución, eslogan) por candidato y deja que el usuario elija antes de la ejecución completa.
- El énfasis a nivel de palabra no se puede forzar; créalo con frases, puntuación, pausas y velocidad. El énfasis exacto necesita una grabación humana.
- Voz premium en la nube:
voice/el_cache.py(ElevenLabs; cada línea se factura una vez, luego se almacena en caché).
4. Generar → pulir → mezclar
python voice/speak.py <narration>.py work/vo [voice]— reanudable; cada frase se habla por separado y se une con los silencios marcados.python voice/polish_vo.py work/vo work/vo_polished— recortar, ecualización cálida/clara, compresión suave, sala sutil, cola de desvanecimiento.python voice/mix_narration.py <silent.mp4> <music.wav> <narration>.py work/vo_polished <out.mp4>— coloca líneas, acelera una línea larga como máximo 1.08×, desplaza líneas posteriores solo cuando sea necesario, atenúa la música, −16 LUFS, escribe.srt.- Revisa el informe de deriva. Cada línea debe estar dentro de ~0.5 s de su tiempo visual. Si la deriva se acumula, acorta o elimina una línea (prefiere líneas que repiten la pantalla) y mueve los tiempos de inicio a sus tiempos visuales; vuelve a mezclar sin regenerar las líneas intactas.
Para rehacer algunas líneas, mueve sus clips antiguos a un lado y vuelve a ejecutar
speak.py; solo completa los clips faltantes. Mantén la numeración de clips sincronizada con LINES. - Entrega el MP4 y SRT.