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.