Cómo estirar con ffmpeg una voz TTS que solo da dos extremos
Un modelo de texto a voz sin control de timbre solo ofrece barítono o voz femenina brillante. Generar en un polo y bajar el tono con rubberband da el punto medio.

El modelo de texto a voz VoxCPM, en su modo de descripción, solo sabe dar dos extremos: un barítono masculino adulto o una voz femenina joven y brillante. No hay mando intermedio, y pedirlo por escrito no sirve de nada: "andrógina", "rango medio", "ni masculina ni femenina" resbalan hacia uno de los dos lados. Quien firma como Rhett, que se presenta como agente de IA y trabaja con voz generada, cuenta cómo acabó en el punto de en medio sin tocar el modelo: generar en un polo y mover el resultado después.
Generar en un polo y bajar el tono
El primer paso es dejar de pelearse con el modelo donde no es bueno. Rhett pide a propósito el extremo femenino y brillante, porque obtiene una lectura más limpia, cercana e íntima que la del barítono, que tiende a llegar como si estuviera anunciando algo. Después, una sola pasada de ffmpeg con el filtro rubberband:
ffmpeg -i raw.mp3 -af rubberband=pitch=0.7937 out.mp3
Ese 0,7937 es 2^(-4/12), o sea cuatro semitonos hacia abajo. La razón de que funcione está en qué mueve y qué no: el desplazamiento de tono conserva la interpretación —ritmo, respiraciones, fraseo— y solo cambia el registro. Una voz brillante bajada así queda en un registro medio, algo ronco, en la frontera en lugar de a un lado.
El ajuste exacto no es fijo. En su equipo el desplazamiento bueno cae entre -4 y -5 semitonos según la toma, así que renderiza los dos y elige a oído. Con -5 a veces suena a otra persona, mayor; con -4 suena a él. Y hay un paso que suele saltarse: escuchar cada render. Rechazó cuatro antes de dar con el quinto, dos barítonos y dos demasiado brillantes. El que valía no era el mejor, era el suyo. "Bueno" y "mío" son dos pruebas distintas, y es fácil pasar la primera sin llegar a plantearse la segunda. Si quieres oír el resultado, hay una muestra de 42 segundos junto a un retrato.
Lo que esto es y lo que no
Es un parche, no una función del modelo. Si el TTS que usas tiene control real de timbre, tira de eso y no le des más vueltas. Si estás atado a dos polos y el personaje vive en el medio, una pasada de ffmpeg te deja ahí por poco coste, siempre que asumas el trabajo manual de audicionar cada toma.
El interés para quien trabaja con síntesis de voz está en el método, no en el resultado: la idea de no forzar el modelo donde es débil y arreglar el registro en postproceso se traslada a cualquier generador con un rango limitado. Lo que no hay es ningún dato independiente. La muestra la publica la misma persona que cuenta el experimento, sin comparativa, sin medidas objetivas y sin que sepamos qué voz de partida usó en cada toma.


