Saltar al contenido principal

Síntesis de voz básica

El siguiente talk.php es un ejemplo que sintetiza voz desde texto y la escribe en un archivo WAV.
PHP FFI está normalmente deshabilitado en entornos de servidor web (FPM, etc.). Ejecuta este script desde CLI, con php talk.php.
Ejecución:

Síntesis de voz en un solo paso (método tts)

Si quieres saltarte los 2 pasos de createAudioQuery + synthesis, puedes usar el método tts():

Síntesis de voz con notación katakana

También puedes sintetizar desde notación katakana estilo AquesTalk:

Uso del diccionario de usuario

Para registrar la lectura de palabras personalizadas se usa UserDict:

Ajuste del AudioQuery

Si ajustas el JSON que obtienes con createAudioQuery antes de sintetizar, puedes controlar con detalle la entonación, el tempo, etc.:

Obtener frases acentuadas

Puedes obtener la información de las frases acentuadas del texto para revisarla y editarla:

Uso del modo GPU

En entornos con GPU disponible, indicar AccelerationMode::Gpu acelera el procesamiento:

Uso de varios modelos de voz

Cargando varios archivos .vvm y cambiando el style ID, puedes alternar entre distintas voces de personajes:
Para controlar qué ocurre cuando ya hay cargado un modelo con el mismo ID, pasa un OnExistingVoiceModelId como segundo argumento de loadVoiceModel(). El valor por defecto, Error, lanza una excepción; Reload vuelve a cargar el modelo y Skip no hace nada:

Generar PCM por fotogramas

Si creas un AudioFeature con createAudioFeature(), lo divides por rangos de fotogramas con slice() y llamas a render() en cada fragmento, puedes convertir incluso textos largos en audio poco a poco. Este ejemplo escribe PCM en fragmentos de unos 0,3 segundos:
La salida de render() no es un archivo WAV, sino datos PCM de 16 bits sin procesar. Este método requiere un modelo VVM v2. La API de C ofrece la creación de AudioFeature y el render por rangos, pero no la API de alto nivel streaming_synthesis.
Última modificación el 27 de octubre de 2026