Saltar al contenido principal

Cómo usar el plugin

El plugin Runtime Text To Speech sintetiza texto en voz utilizando modelos de voz descargables. Estos modelos se gestionan en la configuración del plugin dentro del editor, se descargan y se empaquetan para su uso en tiempo de ejecución. Sigue los pasos a continuación para comenzar.

Lado del editor

Descarga los modelos de voz apropiados para tu proyecto como se describe aquí. Puedes descargar múltiples modelos de voz al mismo tiempo.

Lado del runtime

Crea el sintetizador usando la función CreateRuntimeTextToSpeech. Asegúrate de mantener una referencia a él (por ejemplo, como una variable separada en Blueprints o UPROPERTY en C++) para evitar que sea recolectado como basura.

Un ejemplo de creación de un sintetizador Runtime Text To Speech en Blueprints

Sintetizando Voz

El plugin ofrece dos modos de síntesis de texto a voz:

  1. Texto a Voz Regular: Sintetiza el texto completo y devuelve el audio terminado
  2. Texto a Voz en Streaming: Proporciona fragmentos de audio a medida que se generan, permitiendo procesamiento en tiempo real

Cada modo soporta dos métodos para seleccionar modelos de voz:

  • Por Nombre: Selecciona un modelo de voz por su nombre (recomendado para UE 5.4+)
  • Por Objeto: Selecciona un modelo de voz por referencia directa (recomendado para UE 5.3 y versiones anteriores)

Texto a Voz Regular

Por Nombre

La función Text To Speech (By Name) es más conveniente en Blueprints a partir de UE 5.4. Permite seleccionar modelos de voz desde una lista desplegable de los modelos descargados. En versiones de UE anteriores a 5.3, este desplegable no aparece, por lo que si usas una versión más antigua, necesitarás iterar manualmente sobre el array de modelos de voz devuelto por GetDownloadedVoiceModels para seleccionar el requerido.

Ejemplo de uso de Text To Speech por Nombre en Blueprints

Por Objeto

La función Text To Speech (By Object) funciona en todas las versiones de Unreal Engine, pero muestra los modelos de voz como una lista desplegable de referencias de assets, lo cual es menos intuitivo. Este método es adecuado para UE 5.3 y versiones anteriores, o si tu proyecto requiere una referencia directa a un asset de modelo de voz por alguna razón.

Un ejemplo de uso de Text To Speech por Objeto en Blueprints

Si has descargado los modelos pero no puedes verlos, abre el desplegable Voice Model, haz clic en la configuración (icono de engranaje) y activa tanto Show Plugin Content como Show Engine Content para hacer visibles los modelos.

Texto a Voz en Streaming

Para textos largos o cuando deseas procesar datos de audio en tiempo real a medida que se generan, puedes usar las versiones en streaming de las funciones de Texto a Voz:

  • Streaming Text To Speech (By Name) (StreamingTextToSpeechByName en C++)
  • Streaming Text To Speech (By Object) (StreamingTextToSpeechByObject en C++)

Estas funciones proporcionan datos de audio en fragmentos a medida que se generan, permitiendo un procesamiento inmediato sin tener que esperar a que se complete toda la síntesis. Esto es útil para diversas aplicaciones como reproducción de audio en tiempo real, visualización en vivo o cualquier escenario donde necesites procesar datos de voz de manera incremental.

Streaming Por Nombre

La función Streaming Text To Speech (By Name) funciona de manera similar a la versión regular pero proporciona audio en fragmentos a través del delegado On Speech Chunk.

Un ejemplo de uso de Streaming Text To Speech by Name en Blueprints

Streaming Por Objeto

La función Streaming Text To Speech (By Object) proporciona la misma funcionalidad de streaming pero toma una referencia de objeto del modelo de voz.

Un ejemplo de uso de Streaming Text To Speech by Object en Blueprints

Reproducción de Audio

Para la síntesis de voz regular (no en streaming), el delegado On Speech Result proporciona el audio sintetizado como datos PCM en formato float (como un array de bytes en Blueprints o TArray<uint8> en C++), junto con la Sample Rate y Num Of Channels.

Para la reproducción, se recomienda utilizar el plugin Runtime Audio Importer para convertir los datos de audio crudos en una onda de sonido reproducible.

Aquí hay un ejemplo de cómo podrían verse los nodos de Blueprint para sintetizar texto y reproducir el audio (Nodos copiables):

Cancelando Text-to-Speech

Puedes cancelar una operación de síntesis de texto a voz en curso en cualquier momento llamando a la función CancelSpeechSynthesis en tu instancia del sintetizador:

Cancelando Text To Speech en Blueprints

Cuando se cancela una síntesis:

  • El proceso de síntesis se detendrá lo antes posible
  • Cualquier callback en curso será terminado
  • El delegado de finalización será llamado con bSuccess = false y un mensaje de error indicando que la síntesis fue cancelada
  • Cualquier recurso asignado para la síntesis será liberado correctamente

Esto es particularmente útil para textos largos o cuando necesitas interrumpir la reproducción para iniciar una nueva síntesis.

Selección de Speaker

Ambas funciones de Text To Speech aceptan un parámetro opcional de ID de speaker, lo cual es útil cuando trabajas con modelos de voz que soportan múltiples speakers. Puedes usar las funciones GetSpeakerCountFromVoiceModel o GetSpeakerCountFromModelName para verificar si tu modelo de voz seleccionado soporta múltiples speakers. Si hay múltiples speakers disponibles, simplemente especifica el ID del speaker deseado al llamar a las funciones de Text To Speech. Algunos modelos de voz ofrecen una amplia variedad - por ejemplo, English LibriTTS incluye más de 900 speakers diferentes para elegir.

El plugin Runtime Audio Importer también proporciona características adicionales como exportar datos de audio a un archivo, pasarlos a SoundCue, MetaSound, y más. Para más detalles, consulta la documentación de Runtime Audio Importer.