Como converter texto em voz com o Azure AI Speech
A síntese de voz (text-to-speech) transforma texto escrito em áudio com som natural e é útil para criar narrações de vídeos, tornar aplicações mais acessíveis ou dar uma resposta falada num assistente virtual. Com o Azure AI Speech e poucas linhas de Python consegues converter texto em voz de alta qualidade em português e em dezenas de outros idiomas, sem precisares de treinar nenhum modelo.
Pré-requisitos
- Uma subscrição do Azure com um recurso Speech criado — guarda a chave e a região (por exemplo,
westeurope). - Python 3.8 ou superior instalado no teu computador.
- Noções básicas de terminal e de Python.
- Colunas de som ou auscultadores para ouvir o resultado.
Passo 1: Instalar o SDK do Azure AI Speech
Para converter texto em voz vais usar a biblioteca oficial da Microsoft. Abre o terminal e instala o pacote com o pip:
pip install azure-cognitiveservices-speechEste pacote inclui tudo o que é preciso para comunicar com o serviço. Se usares um ambiente virtual (recomendado), ativa-o antes de correr o comando para manteres as dependências organizadas.
Passo 2: Configurar a chave e a região
O serviço identifica-te através da chave e da região do teu recurso Speech. Encontra ambos no portal do Azure, na página do recurso, no separador Keys and Endpoint. Para não deixares segredos escritos no código, guarda-os em variáveis de ambiente e lê-os assim:
import os
import azure.cognitiveservices.speech as speechsdk
speech_key = os.environ["SPEECH_KEY"]
service_region = os.environ["SPEECH_REGION"]
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)O objeto speech_config guarda a configuração que vais reutilizar nos passos seguintes.
Passo 3: Escolher a voz e o idioma
O Azure oferece vozes neurais muito realistas em vários idiomas. Para português de Portugal podes usar pt-PT-RaquelNeural; para português do Brasil, pt-BR-FranciscaNeural. Basta indicar o nome da voz na configuração:
speech_config.speech_synthesis_voice_name = "pt-PT-RaquelNeural"Se não definires nenhuma voz, o serviço usa uma predefinida. Trocar de voz é tão simples como mudar este nome, por isso vale a pena experimentar até encontrares a que soa melhor para o teu caso.
Passo 4: Gerar o áudio e gravar num ficheiro
Agora vais ligar a saída de áudio a um ficheiro WAV e pedir a síntese do texto. O método speak_text_async devolve um objeto de resultado quando termina:
audio_config = speechsdk.audio.AudioOutputConfig(filename="saida.wav")
synthesizer = speechsdk.SpeechSynthesizer(
speech_config=speech_config,
audio_config=audio_config)
texto = "Olá! Este áudio foi criado com o Azure AI Speech."
result = synthesizer.speak_text_async(texto).get()Se preferires ouvir o som diretamente nas colunas em vez de gravar um ficheiro, substitui a linha do audio_config por speechsdk.audio.AudioOutputConfig(use_default_speaker=True).
Passo 5: Confirmar o estado e tratar erros
É boa prática verificar se a síntese terminou com sucesso e, em caso de falha, mostrar o motivo. Isto poupa muito tempo a diagnosticar problemas de chave ou de região:
if result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted:
print("Áudio gravado com sucesso em saida.wav")
elif result.reason == speechsdk.ResultReason.Canceled:
details = result.cancellation_details
print("Síntese cancelada:", details.reason)
if details.reason == speechsdk.CancellationReason.Error:
print("Detalhes do erro:", details.error_details)Os erros mais comuns são uma chave inválida ou uma região errada; a mensagem em error_details costuma indicar exatamente o que corrigir.
Verificar o resultado
Corre o script e procura o ficheiro saida.wav na mesma pasta. Abre-o num leitor de áudio e deverás ouvir a frase lida com voz natural. Se ouves a frase completa e sem cortes, a integração está a funcionar. Caso o ficheiro esteja vazio ou não apareça, volta ao Passo 5 e lê a mensagem de erro — quase sempre é a chave ou a região.
Conclusão
Em cinco passos ligaste o Python ao Azure AI Speech e transformaste texto em áudio natural. A partir daqui, o próximo salto é usar SSML para controlar pausas, entoação e velocidade da fala, experimentar vozes de outros idiomas ou integrar esta função numa API ou aplicação web. Qual vai ser a primeira frase a que vais dar voz no teu projeto?