Como usar a API Text-to-Speech com o C#

1. Visão geral

Com a API Google Cloud Text-to-Speech (Beta), os desenvolvedores podem incluir fala humana sintética e natural como áudio que pode ser tocado nos aplicativos. A API Text-to-Speech converte texto ou entrada de linguagem de marcação de síntese de fala (SSML, na sigla em inglês) em dados de áudio, como MP3 ou LINEAR16 (a codificação usada em arquivos WAV).

Neste codelab, você vai se concentrar no uso da API Text-to-Speech com o C#. Você vai aprender a listar as vozes disponíveis e a sintetizar áudio de um texto.

O que você vai aprender

  • Como usar o Cloud Shell
  • Como ativar a API Text-to-Speech
  • Como autenticar solicitações de API
  • Como instalar a biblioteca de cliente do Google Cloud para C#
  • Como listar as vozes disponíveis
  • Como sintetizar áudio a partir de texto

O que é necessário

  • Um projeto do Google Cloud Platform
  • Um navegador, como o Chrome ou o Firefox
  • Familiaridade com C#

Pesquisa

Como você vai usar este tutorial?

Apenas leitura Leitura e exercícios

Como você classificaria sua experiência com C#?

Iniciante Intermediário Proficiente

Como você classificaria sua experiência com o uso dos serviços do Google Cloud Platform?

Iniciante Intermediário Proficiente

2. Configuração e requisitos

Configuração de ambiente autoguiada

  1. Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto.
  • Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
  1. Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.

Inicie o Cloud Shell

Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.

Ativar o Cloud Shell

  1. No Console do Cloud, clique em Ativar o Cloud Shelld1264ca30785e435.png.

cb81e7c8e34bc8d.png

Se você estiver iniciando o Cloud Shell pela primeira vez, verá uma tela intermediária com a descrição dele. Se aparecer uma tela intermediária, clique em Continuar.

d95252b003979716.png

Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.

7833d5e1c5d18f54.png

Essa máquina virtual tem todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Grande parte do trabalho neste codelab, se não todo, pode ser feito em um navegador.

Depois de se conectar ao Cloud Shell, você verá sua autenticação e o projeto estará configurado com o ID do seu projeto.

  1. Execute o seguinte comando no Cloud Shell para confirmar se a conta está autenticada:
gcloud auth list

Resposta ao comando

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Execute o seguinte comando no Cloud Shell para confirmar que o comando gcloud sabe sobre seu projeto:
gcloud config list project

Resposta ao comando

[core]
project = <PROJECT_ID>

Se o projeto não estiver configurado, configure-o usando este comando:

gcloud config set project <PROJECT_ID>

Resposta ao comando

Updated property [core/project].

3. Ativar a API Text-to-Speech

Antes de começar a usar a API Text-to-Speech, você precisa ativá-la. É possível ativar a API usando o seguinte comando no Cloud Shell:

gcloud services enable texttospeech.googleapis.com

4. Instalar a biblioteca de cliente da API Google Cloud Text-to-Speech para C#

Primeiro, crie um aplicativo simples de console em C# para executar exemplos da API Text-to-Speech:

dotnet new console -n TextToSpeechApiDemo

Você verá o aplicativo criado e as dependências resolvidas:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Em seguida, navegue até a pasta TextToSpeechApiDemo:

cd TextToSpeechApiDemo/

Adicione o pacote NuGet Google.Cloud.TextToSpeech.V1 ao projeto:

dotnet add package Google.Cloud.TextToSpeech.V1
info : Adding PackageReference for package 'Google.Cloud.TextToSpeech.V1' into project '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.
log  : Restoring packages for /home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.TextToSpeech.V1' version '1.0.0-beta01' added to file '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.

Agora, você já pode usar a API Text-to-Speech.

5. Listar vozes disponíveis

Nesta seção, você vai listar todas as vozes disponíveis em inglês para sintetização de áudio.

Primeiro, abra o editor de código no canto superior direito do Cloud Shell:

fd3fc1303e63572.png

Navegue até o arquivo Program.cs dentro da pasta TextToSpeechApiDemo e substitua o código pelo seguinte:

using Google.Cloud.TextToSpeech.V1;
using System;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();
            var response = client.ListVoices("en");
            foreach (var voice in response.Voices)
            {
                Console.WriteLine($"{voice.Name} ({voice.SsmlGender}); Language codes: {string.Join(", ", voice.LanguageCodes)}");
            }
        }
    }
}

Reserve alguns minutos para estudar o código*.* No Cloud Shell, execute o app:

dotnet run

Você verá esta resposta:

en-US-Wavenet-D (Male); Language codes: en-US
en-AU-Wavenet-A (Female); Language codes: en-AU
en-AU-Wavenet-B (Male); Language codes: en-AU
en-AU-Wavenet-C (Female); Language codes: en-AU
en-AU-Wavenet-D (Male); Language codes: en-AU
en-GB-Wavenet-A (Female); Language codes: en-GB
en-GB-Wavenet-B (Male); Language codes: en-GB
en-GB-Wavenet-C (Female); Language codes: en-GB
...
en-GB-Standard-A (Female); Language codes: en-GB
en-GB-Standard-B (Male); Language codes: en-GB
en-AU-Standard-D (Male); Language codes: en-AU

Resumo

Nesta etapa, você conseguiu listar todas as vozes disponíveis em inglês para sintetização de áudio. Você também encontra a lista completa de vozes disponíveis na página Vozes compatíveis.

6. Sintetizar áudio de texto

Você pode usar a API Text-to-Speech para converter uma string em dados de áudio. Você pode configurar a saída da síntese de fala de várias maneiras, incluindo selecionando uma voz exclusiva ou modulando o tom, o volume, a velocidade de fala e a taxa de amostragem da saída.

Para sintetizar um arquivo de áudio com base em texto, navegue até o arquivo Program.cs dentro da pasta TextToSpeechApiDemo e substitua o código pelo seguinte:

using Google.Cloud.TextToSpeech.V1;
using System;
using System.IO;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();

            // The input to be synthesized, can be provided as text or SSML.
            var input = new SynthesisInput
            {
                Text = "This is a demonstration of the Google Cloud Text-to-Speech API"
            };

            // Build the voice request.
            var voiceSelection = new VoiceSelectionParams
            {
                LanguageCode = "en-US",
                SsmlGender = SsmlVoiceGender.Female
            };

            // Specify the type of audio file.
            var audioConfig = new AudioConfig
            {
                AudioEncoding = AudioEncoding.Mp3
            };

            // Perform the text-to-speech request.
            var response = client.SynthesizeSpeech(input, voiceSelection, audioConfig);
            
            // Write the response to the output file.
            using (var output = File.Create("output.mp3"))
            {
                response.AudioContent.WriteTo(output);
            }
            Console.WriteLine("Audio content written to file \"output.mp3\"");
        }
    }
}

Reserve alguns minutos para estudar o código e conferir como ele é usado para criar um arquivo de áudio com base em texto*.*

No Cloud Shell, execute o app:

dotnet run

Você verá esta resposta:

Audio content written to file "output.mp3"

No editor de código, você pode fazer o download do arquivo mp3 e reproduzi-lo localmente em sua máquina.

a4b9578505422dad.png

Resumo

Nesta etapa, você usou a API Text-to-Speech para converter uma string em um arquivo de áudio mp3. Leia mais sobre Como criar arquivos de áudio de voz.

7. Parabéns!

Você aprendeu a usar a API Text-to-Speech com C# para realizar diferentes tipos de transcrição em arquivos de áudio.

Limpar

Para evitar a cobrança na sua conta do Google Cloud Platform pelo uso de recursos neste guia de início rápido, siga estas etapas:

  • Acesse o console do Cloud Platform.
  • Selecione o projeto que você quer encerrar e clique em "Excluir". Na parte superior: isso programa a exclusão do projeto.

Saiba mais

Licença

Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.