Síntese de fala

Concluído

Observação

Consulte a guia Texto e imagens para obter mais detalhes!

A síntese de fala, muitas vezes chamada de TTS (conversão de texto em fala), está preocupada com a vocalização de dados, geralmente convertendo texto em fala. A síntese de fala geralmente gera fala audível de uma fonte baseada em texto.

Uma solução de conversão de texto em fala normalmente requer as seguintes informações:

  • O texto a ser falado
  • A voz a ser usada para a vocalização da fala

Para sintetizar a fala, o sistema normalmente tokeniza o texto para dividi-lo em palavras individuais e atribui sons fonéticos a cada palavra. Em seguida, ele quebra a transcrição fonética em unidades prosódicas (como frases, cláusulas ou frases). O sistema cria fonemas das unidades prosódicas. Esses phonemes são, então, sintetizados como áudio e podem ser atribuídos a uma voz específica, taxa de fala, tom e volume.

Você pode usar a saída da síntese de fala para muitas finalidades, como:

  • Gerando respostas faladas à entrada do usuário.
  • Lendo mensagens em voz alta.
  • Anúncios de transmissão.

Azure Speech – Texto para Fala

O Azure Speech inclui uma API de conversão de texto em fala que podemos explorar no portal do Microsoft Foundry.

A API de conversão de texto em fala permite converter a entrada de texto em fala audível, que pode ser reproduzida diretamente por meio de um alto-falante de computador ou gravada em um arquivo de áudio. O serviço inclui várias vozes predefinidas com suporte para vários idiomas e pronúncia regional, incluindo vozes neurais que usam redes neurais. As vozes neurais podem superar limitações comuns na síntese de fala, como problemas com entonação, resultando em uma voz mais natural. Você também pode desenvolver vozes personalizadas e usá-las com a API de conversão de texto em fala.

No novo portal do Microsoft Foundry, podemos explorar os recursos de conversão de texto em fala do Azure Speech no playground do Foundry. No playground do Foundry, Azure Speech – Conversão de Texto em Fala você pode escolher uma voz sintética dentre as opções disponíveis. Você também pode ajustar alguns parâmetros para controlar a entrega do áudio, como velocidade e tom. A saída de áudio é gerada a partir do texto sintetizado.

Captura de tela da conversão de texto em fala no playground do Foundry.

Usando o SDK de conversão de texto em fala do Azure

Você pode usar a Fala do Azure para desenvolver um aplicativo que usa síntese de voz. O SDK de Conversão de Texto em Fala do Azure permite que os aplicativos convertam texto escrito em áudio falado natural.

O SDK permite ao aplicativo:

  • Enviar texto para Azure Speech
  • Gerar áudio falado usando vozes neurais
  • Reproduzir ou salvar o áudio em alto-falantes ou em um arquivo de áudio

O SDK manipula autenticação, comunicação de rede, formatação de áudio e reprodução para que você possa se concentrar na experiência do aplicativo.

Desenvolvendo um aplicativo

O SDK de conversão de texto em fala normalmente é usado em:

  • Aplicativos cliente para converter texto em fala e reproduzi-lo imediatamente (por exemplo, um aplicativo móvel ou desktop)
  • Serviços de back-end: para gerar arquivos de áudio para reprodução posterior

Depois de instalar o SDK do Python, você pode criar e executar seu programa. Considere o código Python a seguir. Ao executá-lo:

  1. Seu aplicativo inicializa o SDK de fala: fornece um ponto de extremidade e autenticação (chave ou Identificação do Microsoft Entra ID)
  2. O texto é fornecido
  3. O texto é enviado para o Serviço de Voz do Azure: o SDK manipula a Solicitação e a Formatação
  4. Síntese de fala é executada na nuvem: modelos neurais geram áudio
  5. O áudio é retornado: seu aplicativo reproduz, transmite ou salva o áudio temporariamente
import os
import azure.cognitiveservices.speech as speechsdk

# This example requires environment variables named "FOUNDRY_KEY" and "ENDPOINT"
speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('FOUNDRY_KEY'), endpoint=os.environ.get('ENDPOINT'))
audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True)

# The neural multilingual voice can speak different languages based on the input text.
speech_config.speech_synthesis_voice_name='en-US-Ava:DragonHDLatestNeural'

speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config)

# Get text from the console and synthesize to the default speaker.
print("Enter some text that you want to speak >")
text = input()

speech_synthesis_result = speech_synthesizer.speak_text_async(text).get()

if speech_synthesis_result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted:
    print("Speech synthesized for text [{}]".format(text))
elif speech_synthesis_result.reason == speechsdk.ResultReason.Canceled:
    cancellation_details = speech_synthesis_result.cancellation_details
    print("Speech synthesis canceled: {}".format(cancellation_details.reason))
    if cancellation_details.reason == speechsdk.CancellationReason.Error:
        if cancellation_details.error_details:
            print("Error details: {}".format(cancellation_details.error_details))
            print("Did you set the speech resource key and endpoint values?")

Exemplo de aplicativo cliente

Por exemplo, suponha que você crie um aplicativo que vocalize mensagens de texto. No editor de código, você tem um arquivo de texto e um arquivo Python que contém o código do aplicativo.

Captura de tela do arquivo de texto no código do Visual Studio.

Primeiro, conecte-se ao endpoint do Azure Speech. Em seguida, crie um SpeechSynthesizer objeto. Em seguida, o aplicativo processa o arquivo de texto que contém a mensagem e usa o SpeechSynthesizer objeto para gerar o áudio falado.

Captura de tela do código Python de conversão de texto em fala.

Quando você executar o aplicativo, ele pegará o texto e retornará uma saída de áudio da mensagem.

Captura de tela dos resultados do script python de conversão de texto em fala.

Em seguida, saiba como incorporar recursos de conversão de fala em fala em um app usando o Azure Speech – Voice Live.