Chirp 3: vozes em alta definição

As vozes em alta definição do Chirp 3 de conversão da Text-to-Speech em voz representam a mais recente geração da tecnologia de conversão da Text-to-Speech. Com tecnologia dos nossos LLMs de ponta, essas vozes oferecem um nível incomparável de realismo e ressonância emocional.

Testar um notebook do Colab Ver o notebook no GitHub

Opções de voz

Há várias opções de voz disponíveis, cada uma com características distintas:

Nome Gênero Demonstração
Aoede Feminino
Puck Masculino
Caronte Masculino
Kore Feminino
Fenrir Masculino
Leda Feminino
Orus Masculino
Zephyr Feminino
Achird Masculino
Algenib Masculino
Algieba Masculino
Alnilam Masculino
Autonoe Feminino
Callirrhoe Feminino
Despina Feminino
Encélado Masculino
Erinome Feminino
Gacrux Feminino
Jápeto Masculino
Laomedeia Feminino
Pulcherrima Feminino
Rasalgethi Masculino
Sadachbia Masculino
Sadaltager Masculino
Schedar Masculino
Sulafat Feminino
Umbriel Masculino
Vindemiatrix Feminino
Zubenelgenubi Masculino
Achernar Feminino

Disponibilidade de idiomas

O Chirp 3: vozes em alta definição está disponível nos seguintes idiomas:

Idioma Código BCP-47
Inglês (Estados Unidos) en-US
Inglês (Austrália) en-AU
Inglês (Reino Unido) en-GB
Inglês (Índia) en-IN
Espanhol (Estados Unidos) es-US
Alemão (Alemanha) de-DE
Francês (França) fr-FR
Híndi (Índia) hi-IN
Português (Brasil) pt-BR
Árabe (genérico) ar-XA
Espanhol (Espanha) es-ES
Francês (Canadá) fr-CA
Indonésio (Indonésia) id-ID
Italiano (Itália) it-IT
Japonês (Japão) ja-JP
Turco (Turquia) tr-TR
Vietnamita (Vietnã) vi-VN
Bengali (Índia) bn-IN
Gujarati (Índia) gu-IN
Canarês (Índia) kn-IN
Malaiala (Índia) ml-IN
Marati (Índia) mr-IN
Tâmil (Índia) ta-IN
Telugo (Índia) te-IN
Holandês (Bélgica) nl-BE‏
Holandês (Holanda) nl-NL
Coreano (Coreia do Sul) ko-KR
Mandarim (China) cmn-CN
Polonês (Polônia) pl-PL
Russo (Rússia) ru-RU
Suaíli (Quênia) sw-KE
Tailandês (Tailândia) th-TH
Urdu (Índia) ur-IN
Ucraniano (Ucrânia) uk-UA

Disponibilidade regional

O Chirp 3: vozes em alta definição está disponível nas seguintes regiões Google Cloud :

Google Cloud Zona Preparação para o lançamento
global GA
us GA
eu GA
asia-southeast1 GA

Formatos de saída aceitos

O formato de resposta padrão é LINEAR16, mas outros formatos compatíveis incluem:

Método de API Formato
streaming ALAW, MULAW, OGG_OPUS e PCM
batch ALAW, MULAW, MP3, OGG_OPUS e PCM

Usar o Chirp 3: vozes em alta definição

Descubra como usar o Chirp 3: vozes em alta definição para sintetizar a fala.

Fazer uma solicitação de síntese de voz em streaming

Python

Para saber como instalar e usar a biblioteca de cliente da Text-to-Speech, consulte Bibliotecas de cliente da Text-to-Speech. Para mais informações, consulte a documentação de referência da API Python Text-to-Speech.

Para autenticar na Text-to-Speech, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

"""Synthesizes speech from a stream of input text."""
from google.cloud import texttospeech

client = texttospeech.TextToSpeechClient()

# See https://cloud.google.com/text-to-speech/docs/voices for all voices.
streaming_config = texttospeech.StreamingSynthesizeConfig(
    voice=texttospeech.VoiceSelectionParams(
        name="en-US-Chirp3-HD-Charon",
        language_code="en-US",
    )
)

# Set the config for your stream. The first request must contain your config, and then each subsequent request must contain text.
config_request = texttospeech.StreamingSynthesizeRequest(
    streaming_config=streaming_config
)

text_iterator = [
    "Hello there. ",
    "How are you ",
    "today? It's ",
    "such nice weather outside.",
]

# Request generator. Consider using Gemini or another LLM with output streaming as a generator.
def request_generator():
    yield config_request
    for text in text_iterator:
        yield texttospeech.StreamingSynthesizeRequest(
            input=texttospeech.StreamingSynthesisInput(text=text)
        )

streaming_responses = client.streaming_synthesize(request_generator())

for response in streaming_responses:
    print(f"Audio content size in bytes is: {len(response.audio_content)}")

Fazer uma solicitação de síntese de voz on-line

Python

Para saber como instalar e usar a biblioteca de cliente da Text-to-Speech, consulte Bibliotecas de cliente da Text-to-Speech. Para mais informações, consulte a documentação de referência da API Python Text-to-Speech.

Para autenticar na Text-to-Speech, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

def synthesize_text():
    """Synthesizes speech from the input string of text."""
    from google.cloud import texttospeech

    text = "Hello there."
    client = texttospeech.TextToSpeechClient()

    input_text = texttospeech.SynthesisInput(text=text)

    # Note: the voice can also be specified by name.
    # Names of voices can be retrieved with client.list_voices().
    voice = texttospeech.VoiceSelectionParams(
        language_code="en-US",
        name="en-US-Chirp3-HD-Charon",
    )

    audio_config = texttospeech.AudioConfig(
        audio_encoding=texttospeech.AudioEncoding.MP3
    )

    response = client.synthesize_speech(
        input=input_text,
        voice=voice,
        audio_config=audio_config,
    )

    # The response's audio_content is binary.
    with open("output.mp3", "wb") as out:
        out.write(response.audio_content)
        print('Audio content written to file "output.mp3"')

Dicas de script e comandos

Para criar áudio envolvente e com som natural de texto, é necessário entender as nuances da linguagem falada e traduzi-las para um formato de script. As dicas a seguir vão ajudar você a criar scripts que pareçam autênticos e capturem o tom escolhido.

Entender a meta: fala natural

O objetivo principal é fazer com que a voz sintetizada soe o mais próximo possível de uma pessoa falando naturalmente. Isso envolve:

  • Imitação do ritmo natural:a velocidade da fala de alguém.
  • Criar um fluxo suave:garantir transições perfeitas entre frases e expressões.
  • Adicionar pausas realistas:incorporar pausas para ênfase e clareza.
  • Capturar o tom da conversa:fazer com que o áudio soe como uma conversa real.

Principais técnicas para fala natural

  • Pontuação para ritmo e fluxo

    • Pontos finais (.): indicam uma parada completa e uma pausa mais longa. Use-os para separar ideias completas e criar limites claros entre as frases.
    • Vírgulas (,): indicam pausas mais curtas dentro das frases. Use-as para separar orações, listar itens ou fazer pequenas pausas para respirar.
    • Elipses (...): representam uma pausa mais longa e deliberada. Eles podem indicar pensamentos incompletos, hesitação ou uma pausa dramática.
      • Exemplo: "E então... aconteceu."
    • Hífens (-): podem ser usados para indicar uma breve pausa ou uma interrupção repentina no pensamento.
      • Exemplo: "Eu queria dizer, mas não consegui".
  • Incorporar pausas e disfluências

    • Pausas estratégicas: use reticências, vírgulas ou hífens para criar pausas em lugares onde um falante humano faria uma pausa natural para respirar ou enfatizar.
    • Disfluências (hms e uhs): embora alguns modelos de conversão da Text-to-Speech processem disfluências automaticamente, é fundamental entender a função delas. Elas adicionam autenticidade e fazem a fala soar menos robótica. Mesmo que o modelo os adicione, saber onde eles ocorreriam naturalmente na fala humana ajuda você a entender o fluxo geral do seu script.
  • Experimentação e iteração

    • Resintetizar: não tenha medo de resintetizar a mesma mensagem com a mesma voz várias vezes. Pequenos ajustes na pontuação, no espaçamento ou na escolha de palavras podem afetar significativamente o áudio final.
    • Ouça com atenção: preste atenção ao ritmo, ao fluxo e ao tom geral do áudio sintetizado. Identifique áreas que soam não naturais e ajuste o script de acordo.
    • Variação de voz: se o sistema permitir, use vozes diferentes para ver qual delas se adapta melhor ao seu script e tom escolhido.
  • Dicas práticas de programação

    • Leitura em voz alta: antes de sintetizar, leia seu roteiro em voz alta. Isso vai ajudar você a identificar frases estranhas, pausas não naturais e áreas que precisam de ajustes.
    • Escreva de forma conversacional: use contrações (por exemplo, "it's", "we're") e linguagem informal para deixar o script mais natural.
    • Considere o contexto: o tom e o ritmo do seu script precisam corresponder ao contexto do áudio. Uma apresentação formal exige uma abordagem diferente de uma conversa casual.
    • Divida frases complexas: frases longas e complicadas podem ser difíceis de processar para os mecanismos de TTS. Divida-as em frases mais curtas e fáceis de gerenciar.
  • Melhorias no exemplo de script

    • Script original (robótico): "O produto já está disponível. Temos novos recursos. É muito emocionante."

    • Script aprimorado (natural): "O produto já está disponível... e adicionamos alguns recursos novos e incríveis. É, bem, é muito emocionante."

    • Script original (robótico): "Esta é uma mensagem de confirmação automática. Sua reserva foi processada. Confira abaixo os detalhes da sua próxima estadia. O número da reserva é 12345. O nome do hóspede registrado é Anthony Vasquez. A data de chegada é 14 de março. A data de partida é 16 de março. O tipo de quarto é Suíte Deluxe. O número de hóspedes é 1. O horário de check-in é às 15h. O horário de check-out é às 11h. A política de cancelamento exige notificação 48 horas antes da chegada. Se você não fizer isso dentro desse prazo, será cobrada uma diária. Outras comodidades incluídas na sua reserva são: Wi-Fi gratuito, acesso à academia e café da manhã gratuito. Se tiver dúvidas, entre em contato diretamente com o hotel pelo número 855-555-6689. Agradecemos por escolher nosso hotel."

    • Script aprimorado (natural): "Olá, Anthony Vasquez! Estamos muito felizes em confirmar sua reserva com a gente! Está tudo pronto para sua estadia de 14 a 16 de março na nossa linda Suíte Deluxe. Isso é para um hóspede. Seu número de confirmação é 12345, caso precise dele.

      Lembrete rápido: o check-in é às 15h e o check-out é às 11h.

      Agora, um aviso sobre nossa política de cancelamento: se você precisar cancelar, avise com pelo menos 48 horas de antecedência, ok? Caso contrário, será cobrada a estadia de uma noite.

      Para tornar sua estadia ainda melhor, você terá Wi-Fi gratuito, acesso à nossa academia e um delicioso café da manhã de cortesia todas as manhãs!

      Se tiver dúvidas, ligue para 855-555-6689. Mal podemos esperar para receber você no hotel!"

    • Explicação sobre as mudanças:

      • As reticências (...) criam uma pausa para ênfase.
      • "e nós" usa uma contração para um tom mais coloquial.
      • "É, bem, é muito emocionante" adiciona um pouco de disfluência e ênfase.
      • O lembrete amigável "Tudo bem?" suaviza o tom.

    Seguindo estas diretrizes, você pode criar scripts de texto para áudio que parecem naturais, envolventes e semelhantes aos humanos. Lembre-se de que a prática e a experimentação são fundamentais para dominar essa habilidade.

Chirp 3: controles de voz em alta definição

Os recursos de controle por voz são especificamente para síntese de voz em HD. O Chirp 3: vozes em alta definição não é compatível com SSML, mas você ainda pode gerenciar o controle de ritmo, o controle de pausa e as pronúncias personalizadas nas opções de controle de voz em alta definição do Chirp 3.

Controle de ritmo

É possível ajustar a velocidade do áudio gerado usando o parâmetro "pace". O parâmetro de ritmo permite diminuir ou acelerar a fala, com valores que variam de 0,25x (muito lento) a 2x (muito rápido). Para definir o ritmo, use o parâmetro speaking_rate na sua solicitação. Escolha um valor entre 0,25 e 2,0. Valores abaixo de 1,0 diminuem a velocidade da fala, e valores acima de 1,0 aumentam. Um valor de 1,0 indica um ritmo não ajustado.

Exemplo de SynthesizeSpeechRequest usando controle de ritmo:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
    "speaking_rate": 2.0,
  },
  "input": {
    "text": "Once upon a time, there was a cute cat. He was so cute that he got lots of treats.",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Exemplo de StreamingSynthesizeConfig usando controle de ritmo:

{
  "streaming_audio_config": {
    "audio_encoding": "LINEAR16",
    "speaking_rate": 2.0,
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Amostras de áudio de controle de ritmo:

Velocidade da fala Saída
0,5
1,0
2.0

Controle de pausa

É possível inserir pausas na fala gerada por IA incorporando tags especiais diretamente no texto usando o campo de entrada markup. As tags de pausa só funcionam no campo markup, não no campo text.

Essas tags indicam à IA para criar silêncios, mas a duração exata dessas pausas não é fixa. A IA ajusta a duração com base no contexto, assim como a fala humana natural varia de acordo com o falante, o local e a estrutura da frase. As tags de pausa disponíveis são [pause short], [pause long] e [pause]. Para conhecer outros métodos de criar pausas sem usar tags de marcação, consulte nossas diretrizes de comando e criação.

O modelo de IA pode ignorar as tags de pausa ocasionalmente, principalmente se elas forem colocadas em posições não naturais no texto. É possível combinar várias tags de pausa para silêncios mais longos, mas o uso excessivo pode causar problemas.

Exemplo de SynthesizeSpeechRequest usando o controle de pausa:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "markup": "Let me take a look, [pause long] yes, I see it.",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Exemplo de StreamingSynthesisInput usando o controle de pausa:

{
  "markup": "Let me take a look, [pause long] yes, I see it.",
}

Pausar amostras de áudio de controle:

Entrada de marcação Saída
"Deixe-me dar uma olhada. Sim, estou vendo."
"Deixe-me dar uma olhada. [pausa longa] Sim, estou vendo."

Pronúncias personalizadas

É possível especificar pronúncias personalizadas usando representações fonéticas IPA ou X-SAMPA para palavras no texto de entrada. Use fonemas adequados ao idioma para uma renderização precisa. Saiba mais sobre a substituição de fonemas na nossa documentação sobre fonemas.

Exemplo de SynthesizeSpeechRequest usando pronúncias personalizadas:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "text": "There is a dog in the boat",
    "custom_pronunciations": {
      "phrase": "dog",
      "phonetic_encoding": "PHONETIC_ENCODING_X_SAMPA",
      "pronunciation": "\"k{t",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Exemplo de StreamingSynthesizeConfig usando pronúncias personalizadas:

{
  "streaming_audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
  "custom_pronunciations": {
    "phrase": "dog",
    "phonetic_encoding": "PHONETIC_ENCODING_X_SAMPA",
    "pronunciation": "\"k{t",
  }
}

Exemplos de áudio de pronúncias personalizadas:

Pronúncias personalizadas aplicadas Saída
Nenhum
"dog" pronunciado como ""k{t"

As frases substituídas podem ser formatadas de qualquer maneira, inclusive usando símbolos. Por exemplo, em caso de possível ambiguidade baseada no contexto na correspondência de frases (comum em idiomas como chinês e japonês) ou frases em que uma palavra pode ser pronunciada de maneiras diferentes, a frase pode ser formatada para remover a ambiguidade. Por exemplo, para evitar substituir acidentalmente outras instâncias da palavra ler na entrada, a frase "read" pode ser formatada como "read1", "[read]" ou "(read)" para o texto de entrada e a frase substituída.

Confira este exemplo de aplicação de pronúncias personalizadas a uma frase em que a palavra read é pronunciada de duas maneiras diferentes:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "text": "I read1 a book, and I will now read2 it to you.",
    "custom_pronunciations": {
      "phrase": "read1",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "rɛd",
    }
    "custom_pronunciations": {
      "phrase": "read2",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "riːd",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}
Pronúncias personalizadas aplicadas Saída
"read" substituído de duas maneiras

Além disso, as pronúncias personalizadas podem ser usadas com entrada de marcação, o que permite o uso de tags de pausa também:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "markup": "Did you [pause long] read this book?",
    "custom_pronunciations": {
      "phrase": "read",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "riːd",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}
Pronúncias personalizadas usadas Saída
Substituir a pronúncia com a tag de pausa

Disponibilidade de idiomas para controles de voz

  • O controle de ritmo está disponível em todas as localidades.

  • O controle de pausa está disponível em todas as localidades.

  • As pronúncias personalizadas estão disponíveis em todas as localidades, exceto: bn-in, gu-in, nl-be, sw-ke, th-th, uk-ua, ur-in e vi-vn.

Perguntas frequentes

Perguntas frequentes e respostas:

Como controlar o ritmo e o fluxo para melhorar a saída de voz?

Você pode usar nossas diretrizes de comandos e criação e melhorar seu comando de texto para melhorar a saída de voz.

Como faço para acessar as vozes nos idiomas disponíveis?

Os nomes de voz seguem um formato específico, permitindo o uso em todos os idiomas compatíveis ao especificar a voz de maneira exclusiva. O formato segue \<locale\>-\<model\>-\<voice\>. Por exemplo, para usar a voz Kore em inglês (Estados Unidos) com o modelo Chirp 3: vozes em alta definição, especifique en-US-Chirp3-HD-Kore.

O Chirp 3: vozes em alta definição é compatível com SSML?

Embora o Chirp 3: vozes em alta definição não funcione com SSML, você ainda pode gerenciar o controle de ritmo, o controle de pausa e as pronúncias personalizadas nas opções de controle de voz do Chirp 3: vozes em alta definição.