TTS: adaptar entonación según tipo de texto (oración/poesía vs explicación) — feedback de usuario #173
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Feedback recibido
Comentario en https://www.feadulta.com/semillas-del-reino/ (2026-07-13 11:41:51 [ES]):
Análisis
El usuario tiene razón: el texto de "Semillas del Reino" es una oración/poesía (Florentino Ulibarri), y la síntesis TTS actual (MiniMax, ver feadulta-tts-voz-fraymarcos-202607) usa el mismo registro conversacional "normal" (con muletillas tipo "eh...") que para una explicación homilética. Textos de este tipo (oraciones, poesías, lecturas bíblicas) deberían leerse de otro modo: más pausado, sin muletillas de habla espontánea, en tono de oración.
Propuesta
Investigar si MiniMax permite diferenciar la entonación/estilo de síntesis según el tipo de contenido:
speech-2.8-hdlos soporta).scripts/minimax_tts.py,AUTHOR_VOICES) podría extenderse con un flag por tipo de contenido (p.ej. detectar categoría "oración"/poesía vs artículo homilético) que cambie el estilo de síntesis.Pendiente de investigación técnica con MiniMax antes de decidir implementación.
Investigación MiniMax: sí es viable
La API de
speech-2.8-hd(y modelos hermanos) sí expone parámetros relevantes para esto:emotion:auto(por defecto, infiere del texto),happy,sad,angry,fearful,disgusted,surprised,calm,fluent,neutral. Para oración/poesía/lectura bíblica el candidato natural escalm(oneutral) en vez de dejarauto, que es probablemente lo que está generando el tono "conversacional normal" con muletillas.speed: 0.5–2.0 (default 1.0) — bajar un poco para lectura pausada de oración.pitch: -12..+12 semitonos (default 0).volume: 0–10 (default 1.0).emotion=calm+speedalgo menor debería reducir ese efecto de habla espontánea.Propuesta concreta de implementación
En
scripts/minimax_tts.py(pipeline actual, verAUTHOR_VOICES): añadir un flag de "registro" por artículo/categoría (p.ej. detectar categoría "Semillas del Reino" / poesía / oración vs artículo homilético normal) que fijeemotion=calmyspeedligeramente reducida (probar 0.9) en vez de dejar los defaultsauto/1.0que se usan hoy para todo.Siguiente paso: probar una síntesis de prueba con
emotion=calmsobre el texto de Ulibarri ("Semillas del Reino") y comparar con el audio actual antes de cablear el flag en el pipeline.Resultado de las pruebas (2026-07-13)
Probado y descartado:
emotion=calmsobre la voz clonada de Nico (NicoFeadulta2026): no soluciona el problema.Spanish_Narrator,Spanish_Narrator+calm,Spanish_WiseScholar,Spanish_CaptivatingStoryteller): descartadas, mal resultado ("fatal" según Rafa).Causa raíz identificada: el problema no es el parámetro
emotionde la síntesis — es que la voz clonada de Nico arrastra la cadencia/muletillas ("eh..." alargado) del podcast conversacional original del que se clonó. La clonación de voz en MiniMax captura prosodia además de timbre, así que ese registro dubitativo viene "cocinado" en el propiovoice_id, no es algo queemotion/speed/pitchpuedan corregir en tiempo de síntesis.¿Existe un "modo narrador" aplicable a una voz ya clonada? Revisada la documentación de MiniMax (
/v1/voice_clone,/v1/t2a_v2): no hay ningún parámetro documentado para aplicar un estilo/modo distinto a unvoice_idya clonado en tiempo de síntesis, aparte deemotion/speed/pitch/vol(que ya hemos probado y no bastan). Lo único remotamente parecido esclone_prompt.prompt_audio+prompt_text, un audio de referencia de estilo — pero se usa en el momento de crear el clon, no como interruptor sobre unvoice_idexistente. En la práctica equivale a hacer un clon nuevo.Conclusión / siguiente paso
Hay que crear un clon de voz nuevo, dedicado a textos de oración/poesía/lectura bíblica (registro pausado, sin muletillas de habla espontánea), separado del
voice_idde Nico que sigue sirviendo para las homilías/explicaciones normales. El pipeline (scripts/minimax_tts.py) ya soporta esto víaAUTHOR_VOICES/voice_for_author, aunque aquí el criterio de selección tendría que ser por tipo de contenido (categoría oración/poesía) en vez de por autor.Pendiente de Rafa: conseguir un audio fuente limpio (2-5 min, sin ruido/música, registro pausado/formal — grabadora o vídeo, nunca nota de voz) para clonar esa nueva voz. Mismo protocolo de verificación por espectrograma que se usó para Fray Marcos/Pagola/Sicre/Arregi (ver feadulta-tts-voz-fraymarcos-202607).