1. Visão geral

A API Text-to-Speech permite que os desenvolvedores gerem fala semelhante à humana. A API converte texto em formatos de áudio como WAV, MP3 ou Ogg Opus. Ele também aceita entradas da linguagem de marcação da síntese de fala (SSML) para especificar pausas, números, formatação de data e hora e outras instruções de pronúncia.
Neste tutorial, você vai usar a API Text-to-Speech com o Python.
O que você vai aprender
- Como configurar seu ambiente
- Como listar idiomas com suporte
- Como listar as vozes disponíveis
- Como sintetizar áudio a partir de texto
O que é necessário
- um projeto do Google Cloud;
- Use um navegador, como o Chrome ou o Firefox.
- Familiaridade com o Python
Pesquisa
Como você vai usar este tutorial?
Como você classificaria sua experiência com Python?
Como você classificaria sua experiência com os serviços do Google Cloud?
2. Configuração e requisitos
Configuração de ambiente autoguiada
- 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.



- 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.
- 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 possa ser operado remotamente do seu laptop, neste codelab usaremos o Cloud Shell, um ambiente de linha de comando executado no Cloud.
Ativar o Cloud Shell
- No Console do Cloud, clique em Ativar o Cloud Shell
.

Se esta for a primeira vez que você inicia o Cloud Shell, uma tela intermediária vai aparecer com a descrição dele. Se isso acontecer, clique em Continuar.

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

Essa máquina virtual contém 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. Neste codelab, quase todo o trabalho pode ser feito com um navegador.
Depois de se conectar ao Cloud Shell, você vai ver que sua conta já está autenticada e que o projeto está configurado com o ID do seu projeto.
- 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`
- Execute o comando a seguir no Cloud Shell para confirmar se 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. configuração do ambiente
Antes de começar a usar a API Text-to-Speech, execute o seguinte comando no Cloud Shell para ativar a API:
gcloud services enable texttospeech.googleapis.com
Você verá algo como:
Operation "operations/..." finished successfully.
Agora você pode usar a API Text-to-Speech.
Navegue até o diretório principal:
cd ~
Crie um ambiente virtual do Python para isolar as dependências:
virtualenv venv-texttospeech
Ative o ambiente virtual:
source venv-texttospeech/bin/activate
Instale o IPython e a biblioteca de cliente da API Text-to-Speech:
pip install ipython google-cloud-texttospeech
Você verá algo como:
... Installing collected packages: ..., ipython, google-cloud-texttospeech Successfully installed ... google-cloud-texttospeech-2.16.3 ...
Agora você já pode usar a biblioteca de cliente da API Text-to-Speech.
Nas próximas etapas, você vai usar um interpretador interativo chamado IPython, que foi instalado na etapa anterior. Inicie uma sessão executando ipython no Cloud Shell:
ipython
Você verá algo como:
Python 3.9.2 (default, Feb 28 2021, 17:03:44) Type 'copyright', 'credits' or 'license' for more information IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help. In [1]:
Você está pronto para fazer sua primeira solicitação e listar os idiomas compatíveis...
4. Lista de idiomas compatíveis
Nesta seção, você vai encontrar a lista de todos os idiomas disponíveis.
Copie o seguinte código na sua sessão do IPython:
from typing import Sequence
import google.cloud.texttospeech as tts
def unique_languages_from_voices(voices: Sequence[tts.Voice]):
language_set = set()
for voice in voices:
for language_code in voice.language_codes:
language_set.add(language_code)
return language_set
def list_languages():
client = tts.TextToSpeechClient()
response = client.list_voices()
languages = unique_languages_from_voices(response.voices)
print(f" Languages: {len(languages)} ".center(60, "-"))
for i, language in enumerate(sorted(languages)):
print(f"{language:>10}", end="\n" if i % 5 == 4 else "")
Estude o código e veja como ele usa o método da biblioteca de cliente list_voices para criar a lista de idiomas compatíveis.
Como chamar a função:
list_languages()
Você vai receber a seguinte lista (ou uma maior):
---------------------- Languages: 58 -----------------------
af-ZA am-ET ar-XA bg-BG bn-IN
ca-ES cmn-CN cmn-TW cs-CZ da-DK
de-DE el-GR en-AU en-GB en-IN
en-US es-ES es-US eu-ES fi-FI
fil-PH fr-CA fr-FR gl-ES gu-IN
he-IL hi-IN hu-HU id-ID is-IS
it-IT ja-JP kn-IN ko-KR lt-LT
lv-LV ml-IN mr-IN ms-MY nb-NO
nl-BE nl-NL pa-IN pl-PL pt-BR
pt-PT ro-RO ru-RU sk-SK sr-RS
sv-SE ta-IN te-IN th-TH tr-TR
uk-UA vi-VN yue-HK
A lista mostra 58 idiomas e variantes, como:
- chinês e mandarim (Taiwan),
- inglês australiano, britânico, indiano e americano;
- francês do Canadá e da França,
- Português do Brasil e de Portugal.
Essa lista não é fixa e aumenta à medida que novas vozes são disponibilizadas.
Resumo
Essa etapa permitiu listar os idiomas compatíveis.
5. Listar vozes disponíveis
Nesta seção, você vai encontrar a lista de vozes disponíveis em diferentes idiomas.
Copie o seguinte código na sua sessão do IPython:
import google.cloud.texttospeech as tts
def list_voices(language_code=None):
client = tts.TextToSpeechClient()
response = client.list_voices(language_code=language_code)
voices = sorted(response.voices, key=lambda voice: voice.name)
print(f" Voices: {len(voices)} ".center(60, "-"))
for voice in voices:
languages = ", ".join(voice.language_codes)
name = voice.name
gender = tts.SsmlVoiceGender(voice.ssml_gender).name
rate = voice.natural_sample_rate_hertz
print(f"{languages:<8} | {name:<24} | {gender:<8} | {rate:,} Hz")
Estude o código e veja como ele usa o método list_voices(language_code) da biblioteca de cliente para listar as vozes disponíveis em um determinado idioma.
Agora, confira a lista de vozes em alemão disponíveis:
list_voices("de")
Você verá algo como:
------------------------ Voices: 20 ------------------------ de-DE | de-DE-Neural2-A | FEMALE | 24,000 Hz de-DE | de-DE-Neural2-B | MALE | 24,000 Hz ... de-DE | de-DE-Standard-A | FEMALE | 24,000 Hz de-DE | de-DE-Standard-B | MALE | 24,000 Hz ... de-DE | de-DE-Studio-B | MALE | 24,000 Hz de-DE | de-DE-Studio-C | FEMALE | 24,000 Hz de-DE | de-DE-Wavenet-A | FEMALE | 24,000 Hz de-DE | de-DE-Wavenet-B | MALE | 24,000 Hz ...
Várias vozes femininas e masculinas estão disponíveis, além das vozes padrão, WaveNet, Neural2 e Studio:
- As vozes padrão são geradas por algoritmos de processamento de sinais.
- As vozes WaveNet, Neural2 e Studio são de maior qualidade, sintetizadas por modelos de machine learning e com um som mais natural.
Agora, confira a lista de vozes em inglês disponíveis:
list_voices("en")
Você vai receber algo assim:
------------------------ Voices: 90 ------------------------ en-AU | en-AU-Neural2-A | FEMALE | 24,000 Hz ... en-AU | en-AU-Wavenet-A | FEMALE | 24,000 Hz ... en-GB | en-GB-Neural2-A | FEMALE | 24,000 Hz ... en-GB | en-GB-Wavenet-A | FEMALE | 24,000 Hz ... en-IN | en-IN-Standard-A | FEMALE | 24,000 Hz ... en-IN | en-IN-Wavenet-A | FEMALE | 24,000 Hz ... en-US | en-US-Neural2-A | MALE | 24,000 Hz ... en-US | en-US-News-K | FEMALE | 24,000 Hz ... en-US | en-US-Standard-A | MALE | 24,000 Hz ... en-US | en-US-Studio-M | MALE | 24,000 Hz ... en-US | en-US-Wavenet-A | MALE | 24,000 Hz ...
Além de uma seleção de várias vozes em diferentes gêneros e qualidades, há vários sotaques disponíveis: inglês australiano, britânico, indiano e americano.
Dedique um tempo para listar as vozes disponíveis nos seus idiomas e variantes preferidos (ou até mesmo em todos eles):
list_voices("fr")
list_voices("pt")
list_voices()
Resumo
Essa etapa permitiu listar as vozes disponíveis. Saiba mais sobre as vozes e os idiomas disponíveis.
6. Sintetizar áudio de texto
Você pode usar a API Text-to-Speech para converter uma string em dados de áudio. É possível configurar a saída da síntese de fala de várias maneiras, incluindo selecionar uma voz exclusiva ou modular o tom, o volume, a taxa de fala e a taxa de amostragem da saída.
Copie o seguinte código na sua sessão do IPython:
import google.cloud.texttospeech as tts
def text_to_wav(voice_name: str, text: str):
language_code = "-".join(voice_name.split("-")[:2])
text_input = tts.SynthesisInput(text=text)
voice_params = tts.VoiceSelectionParams(
language_code=language_code, name=voice_name
)
audio_config = tts.AudioConfig(audio_encoding=tts.AudioEncoding.LINEAR16)
client = tts.TextToSpeechClient()
response = client.synthesize_speech(
input=text_input,
voice=voice_params,
audio_config=audio_config,
)
filename = f"{voice_name}.wav"
with open(filename, "wb") as out:
out.write(response.audio_content)
print(f'Generated speech saved to "{filename}"')
Estude o código e veja como ele usa o método da biblioteca de cliente synthesize_speech para gerar os dados de áudio e salvá-los como um arquivo wav.
Agora, gere frases com alguns sotaques diferentes:
text_to_wav("en-AU-Neural2-A", "What is the temperature in Sydney?")
text_to_wav("en-GB-Neural2-B", "What is the temperature in London?")
text_to_wav("en-IN-Wavenet-C", "What is the temperature in Delhi?")
text_to_wav("en-US-Studio-O", "What is the temperature in New York?")
text_to_wav("fr-FR-Neural2-A", "Quelle est la température à Paris ?")
text_to_wav("fr-CA-Neural2-B", "Quelle est la température à Montréal ?")
Você verá algo como:
Generated speech saved to "en-AU-Neural2-A.wav" Generated speech saved to "en-GB-Neural2-B.wav" Generated speech saved to "en-IN-Wavenet-C.wav" Generated speech saved to "en-US-Studio-O.wav" Generated speech saved to "fr-FR-Neural2-A.wav" Generated speech saved to "fr-CA-Neural2-B.wav"
Para baixar todos os arquivos gerados de uma só vez, use este comando do Cloud Shell no seu ambiente Python:
!cloudshell download *.wav
Valide e seu navegador vai baixar os arquivos:

Abra cada arquivo e ouça o resultado.
Resumo
Nesta etapa, você usou a API Text-to-Speech para converter frases em arquivos de áudio wav. Saiba mais sobre como criar arquivos de áudio de voz.
7. Parabéns!

Você aprendeu a usar a API Text-to-Speech com Python para gerar voz semelhante à humana.
Limpar
Para limpar o ambiente de desenvolvimento, no Cloud Shell:
- Se você ainda estiver na sessão do IPython, volte ao shell:
exit - Pare de usar o ambiente virtual do Python:
deactivate - Exclua a pasta do ambiente virtual:
cd ~ ; rm -rf ./venv-texttospeech
Para excluir seu projeto do Google Cloud, no Cloud Shell:
- Recupere o ID do projeto atual:
PROJECT_ID=$(gcloud config get-value core/project) - Confirme se este é o projeto que você quer excluir:
echo $PROJECT_ID - Excluir o projeto:
gcloud projects delete $PROJECT_ID
Saiba mais
- Teste a demonstração no seu navegador: https://cloud.google.com/text-to-speech
- Documentação do Text-to-Speech: https://cloud.google.com/text-to-speech/docs
- Python no Google Cloud: https://cloud.google.com/python
- Bibliotecas de cliente do Cloud para Python: https://github.com/googleapis/google-cloud-python
Licença
Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.