O que é Síntese de Fala (Speech)
A Síntese de Fala faz parte dos Speech Services do Azure, um conjunto de serviços de inteligência artificial da Microsoft projetado para fornecer recursos avançados de fala e linguagem natural em aplicativos. Ela é uma tecnologia que converte texto em fala humana artificial, permitindo que os computadores “falem” ao transformar palavras escritas em uma voz audível e natural. A síntese de fala é comumente usada em aplicativos de assistentes virtuais, sistemas de navegação por voz, leitores de tela para pessoas com deficiência visual, entre outros.
Como Funciona a Síntese de Fala
A tecnologia de síntese de fala utiliza modelos de aprendizado profundo para gerar uma voz que soa natural. Esses modelos são treinados com grandes volumes de dados de fala e texto, permitindo que a tecnologia aprenda as nuances da pronúncia, entonação e ritmo da fala humana. O Azure oferece diferentes vozes personalizáveis, permitindo que os desenvolvedores escolham a voz que melhor se adapte às necessidades do seu aplicativo. Em nosso projeto de exemplo utilizaremos a voz da Brenda.
Aplicações Comuns
São diversas as possibilidades de aplicação da síntese de fala. Abaixo listamos algumas delas:
Assistentes Virtuais: Assistentes como Cortana, Siri e Alexa usam síntese de fala para interagir com os usuários de maneira natural e intuitiva.
Sistemas de Navegação por Voz: Aplicativos de navegação, como o Google Maps e o Waze, utilizam síntese de fala para fornecer direções em tempo real.
Leitores de Tela: Ferramentas como o NVDA ajudam pessoas com deficiência visual a acessar conteúdos digitais, convertendo texto em fala.
Serviços de Atendimento ao Cliente: Bots de atendimento ao cliente podem usar síntese de fala para oferecer suporte automatizado e eficiente aos clientes.
Benefícios da Síntese de Fala
Assim como as possibilidades de uso, os benefícios também são vários e dependem do tipo de aplicação.
Acessibilidade: Melhora a acessibilidade para pessoas com deficiências visuais ou dificuldades de leitura.
Multilinguismo: Suporta múltiplos idiomas, permitindo a criação de aplicativos globais.
Personalização: As vozes podem ser personalizadas para refletir a marca ou o estilo desejado.
Engajamento: Proporciona uma interação mais natural e envolvente com os usuários.
Criando o Serviço de Síntese de Fala na Azure
Para utilizar o serviço de síntese de fala, é necessário que você possua uma assinatura ativa do Azure. Então, acesse o portal do Azure e clique em Criar um novo recurso. Procure por “Speech”.
Clique no item “Speech” ou “Fala” e, em seguida, aparecerá uma tela semelhante à imagem abaixo. Clique em “Criar”.
Preencha as seguintes informações:
Assinatura
Grupo de Recursos
Região do grupo de recursos (se estiver criando um novo Grupo de Recursos)
Região
Nome
Tipo de preço
Na imagem abaixo, mostro as configurações que utilizei.
Após preencher todas as informações, clique em Examinar + criar e, em seguida, em Criar.
Depois, aparecerá a tela da sua aplicação, onde você encontrará as duas chaves de acesso e a localização e região. Estas duas informações serão importantes quando precisarmos configurar a nossa API.
Criando o projeto Demo
Para demonstrar o uso do Azure AI Speech, vamos criar uma API em ASP.NET Core que irá receber um texto e retornar um arquivo de áudio. Então, com um projeto ASP.NET Core Web API criado, instale o seguinte pacote:
dotnet add package Microsoft.CognitiveServices.Speech
Crie em seguida um controller chamado TextToSpeechController, que será responsável por receber o texto a ser convertido e retornar o arquivo de áudio com o resultado da síntese. A estrutura inicial desse controller pode ser vista abaixo:
using Microsoft.AspNetCore.Mvc;
namespace TextToTalk.Controllers
{
[ApiController]
[Route("[controller]")]
public class TextToSpeechController : ControllerBase
{
[HttpPost]
public async Task TextToSpeech(string text)
{
try
{
//Nosso código.
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
}
}
Agora, dentro do nosso bloco try, vamos adicionar os dados e configurações necessários para nos conectarmos com a API de conversão.
string speechKey = "Sua Chave 1 ou Chave 2";
string speechRegion = "brazilsouth";
var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);
speechConfig.SpeechSynthesisVoiceName = "pt-BR-BrendaNeural";
No código acima, criamos a variável speechKey para armazenar a nossa chave 1 ou chave 2 e speechRegion para armazenar a região do serviço de Síntese de Fala da Azure, ambas informações obtidas no portal anteriormente. Em seguida, utilizamos as informações repassadas nas variáveis speechKey e speechRegion para iniciar uma configuração na variável speechConfig. Feito isso, podemos escolher o idioma e tipo de voz que desejamos. Para este tutorial, nós usamos "pt-BR-BrendaNeural", uma voz em português do Brasil, que oferece uma qualidade de fala natural.
Caso queira utilizar outras vozes, até o momento existem 16: Francisca, Antonio, Brenda, Donato, Elza, Fabo, Giovanna, Humberto, Julio, Leika, Laticia, Manuela, Nicolau, Valerio, Yara, Thalita. Para utilizar, basta colocar “pt-BR-NomeDaVozNeural”. Ex: “pt-BR-ManuelaNeural”.
Logo após o bloco de código anterior um SpeechSynthesizer com a configuração especificada (speechConfig) que ficará na variável synthesizer. A instrução using garante que todos os recursos não gerenciados sejam liberados corretamente após o uso do sintetizador:
using (var synthesizer = new SpeechSynthesizer(speechConfig))
{
var result = await synthesizer.SpeakTextAsync(text);
if (result.Reason == ResultReason.SynthesizingAudioCompleted)
{
var audioByte = result.AudioData;
return File(audioByte, "audio/wav" , "output.wav");
}
else
{
throw new Exception($"Falha ao sintetizar áudio: {result.Reason}");
}
}
O método SpeakTextAsync recebe o texto enviado pelo usuário, converte o texto em áudio de forma assíncrona e armazena na variável result, que guardará o resultado da operação, incluindo o áudio gerado e informações sobre o estado da operação. Em seguida, verificamos se a síntese de fala foi concluída com sucesso (result.Reason == ResultReason.SynthesizingAudioCompleted). Se sim, extraímos os dados de áudio (result.AudioData) e os retornamos como um arquivo WAV com o tipo de conteúdo "audio/wav" e o nome "output.wav". Caso contrário, lançamos uma exceção com uma mensagem de erro que descreve o motivo da falha.
Neste ponto já podemos executar nossa API e fazer uma requisição HTTP POST para o endpoint TextToSpeech. O resultado deve ser um arquivo de áudio disponível para download.
Acelere a sua carreira conosco!
Se você é Desenvolvedor .NET Júnior e quer acelerar sua carreira até nível Pleno com salário de R$7k+, ou mesmo busca a primeira vaga, conheça a Mentoria .NET Start: Clique aqui
Se é Desenvolvedor .NET Pleno ou Sênior e quer virar referência técnica em sua equipe e mercado, com salário de R$10k+, conheça a Mentoria .NET Expert: Clique aqui
Conclusão
Neste tutorial, demonstramos como implementar a conversão de texto para fala (Text-to-Speech) utilizando os Speech Services da Azure em uma aplicação ASP.NET Core. Com esse conhecimento, você pode expandir essa implementação para incluir funcionalidades adicionais, como suporte a diferentes idiomas e vozes, personalização do formato de saída de áudio, e melhorias na interface do usuário para uma experiência mais rica.
Para aprofundar seu entendimento e explorar mais recursos, recomendamos consultar a documentação oficial dos Serviços de IA do Azure para fala. Lá você encontrará exemplos avançados, melhores práticas e possibilidades de personalização para tornar sua aplicação ainda mais robusta e adaptada às necessidades dos usuários.
Seguindo essas diretrizes, você estará bem equipado para desenvolver soluções inovadoras que aproveitam o poder da conversão de texto para fala, melhorando a acessibilidade e a experiência do usuário em suas aplicações.