Pular para o conteúdo principal

Como usar o plugin

O plugin Runtime Text To Speech sintetiza texto em fala usando modelos de voz baixáveis. Esses modelos são gerenciados nas configurações do plugin dentro do editor, baixados e empacotados para uso em tempo de execução. Siga os passos abaixo para começar.

Lado do editor

Baixe os modelos de voz apropriados para seu projeto conforme descrito aqui. Você pode baixar múltiplos modelos de voz ao mesmo tempo.

Lado do runtime

Crie o sintetizador usando a função CreateRuntimeTextToSpeech. Certifique-se de manter uma referência a ele (ex: como uma variável separada em Blueprints ou UPROPERTY em C++) para evitar que seja coletado como lixo.

Um exemplo de criação de um sintetizador Runtime Text To Speech em Blueprints

Sintetizando Fala

O plugin oferece dois modos de síntese de texto para fala:

  1. Texto para Fala Regular: Sintetiza todo o texto e retorna o áudio completo quando finalizado
  2. Texto para Fala em Streaming: Fornece partes do áudio conforme são geradas, permitindo processamento em tempo real

Cada modo suporta dois métodos para selecionar modelos de voz:

  • Por Nome: Seleciona um modelo de voz pelo seu nome (recomendado para UE 5.4+)
  • Por Objeto: Seleciona um modelo de voz por referência direta (recomendado para UE 5.3 e versões anteriores)

Texto para Fala Regular

Por Nome

A função Text To Speech (By Name) é mais conveniente em Blueprints a partir do UE 5.4. Ela permite selecionar modelos de voz a partir de uma lista suspensa dos modelos baixados. Em versões do UE abaixo de 5.3, essa lista suspensa não aparece, então se você estiver usando uma versão mais antiga, precisará iterar manualmente sobre o array de modelos de voz retornado por GetDownloadedVoiceModels para selecionar o desejado.

Um exemplo de uso de Text To Speech por Nome em Blueprints

Por Objeto

A função Text To Speech (By Object) funciona em todas as versões do Unreal Engine, mas apresenta os modelos de voz como uma lista suspensa de referências de assets, o que é menos intuitivo. Este método é adequado para UE 5.3 e versões anteriores, ou se o seu projeto exigir uma referência direta a um asset de modelo de voz por qualquer motivo.

Um exemplo de uso do Text To Speech por Objeto em Blueprints

Se você baixou os modelos mas não consegue vê-los, abra o dropdown Voice Model, clique nas configurações (ícone de engrenagem) e habilite Show Plugin Content e Show Engine Content para tornar os modelos visíveis.

Text-to-Speech em Streaming

Para textos mais longos ou quando você deseja processar dados de áudio em tempo real à medida que são gerados, você pode usar as versões de streaming das funções Text-to-Speech:

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

Essas funções fornecem dados de áudio em pedaços conforme são gerados, permitindo o processamento imediato sem esperar pela conclusão de toda a síntese. Isso é útil para várias aplicações como reprodução de áudio em tempo real, visualização ao vivo ou qualquer cenário onde você precise processar dados de fala incrementalmente.

Streaming Por Nome

A função Streaming Text To Speech (By Name) funciona de forma similar à versão regular, mas fornece áudio em pedaços através do delegado On Speech Chunk.

Um exemplo de uso de Streaming Text To Speech por Nome em Blueprints

Streaming Por Objeto

A função Streaming Text To Speech (By Object) fornece a mesma funcionalidade de streaming, mas recebe uma referência de objeto de modelo de voz.

Um exemplo de uso do Streaming Text To Speech by Object em Blueprints

Reprodução de Áudio

Para text-to-speech regular (não streaming), o delegado On Speech Result fornece o áudio sintetizado como dados PCM em formato float (como um array de bytes em Blueprints ou TArray<uint8> em C++), junto com a Sample Rate e Num Of Channels.

Para reprodução, é recomendado usar o plugin Runtime Audio Importer para converter os dados brutos de áudio em uma sound wave reproduzível.

Aqui está um exemplo de como os nós de Blueprint para sintetizar texto e reproduzir o áudio podem parecer (Nós copiáveis):

Cancelando Text-to-Speech

Você pode cancelar uma operação de síntese de texto-para-voz em andamento a qualquer momento chamando a função CancelSpeechSynthesis na sua instância do sintetizador:

Cancelando Text To Speech em Blueprints

Quando uma síntese é cancelada:

  • O processo de síntese será interrompido o mais rápido possível
  • Quaisquer callbacks em andamento serão terminados
  • O delegado de conclusão será chamado com bSuccess = false e uma mensagem de erro indicando que a síntese foi cancelada
  • Quaisquer recursos alocados para a síntese serão devidamente liberados

Isso é particularmente útil para textos longos ou quando você precisa interromper a reprodução para iniciar uma nova síntese.

Seleção de Locutor

Ambas as funções de Text To Speech aceitam um parâmetro opcional de ID do locutor, o que é útil ao trabalhar com modelos de voz que suportam múltiplos locutores. Você pode usar as funções GetSpeakerCountFromVoiceModel ou GetSpeakerCountFromModelName para verificar se múltiplos locutores são suportados pelo seu modelo de voz escolhido. Se múltiplos locutores estiverem disponíveis, basta especificar o ID do locutor desejado ao chamar as funções de Text To Speech. Alguns modelos de voz oferecem uma variedade extensa - por exemplo, o English LibriTTS inclui mais de 900 locutores diferentes para escolher.

O plugin Runtime Audio Importer também fornece recursos adicionais como exportar dados de áudio para um arquivo, passá-los para SoundCue, MetaSound e mais. Para mais detalhes, consulte a documentação do Runtime Audio Importer.