Chirp 3: vozes HD

Chirp 3 da conversão de texto em voz: as vozes HD representam a geração mais recente da tecnologia de conversão de texto em voz. Com tecnologia dos nossos MDIs/CEs de vanguarda, estas vozes oferecem um nível incomparável de realismo e ressonância emocional.

Experimente um bloco de notas do Colab Ver bloco de notas no GitHub

Opções de voz

Está disponível uma variedade de opções de voz, cada uma com características distintas:

Nome Sexo Demonstrações
Achernar Feminino
Achird Masculino
Algenib Masculino
Algieba Masculino
Alnilam Masculino
Aoede Feminino
Autonoe Feminino
Callirrhoe Feminino
Caronte Masculino
Despina Feminino
Encélado Masculino
Erinome Feminino
Fenrir Masculino
Gacrux Feminino
Jápeto Masculino
Kore Feminino
Laomedeia Feminino
Leda Feminino
Orus Masculino
Pulcherrima Feminino
Disco Masculino
Rasalgethi Masculino
Sadachbia Masculino
Sadaltager Masculino
Schedar Masculino
Sulafat Feminino
Umbriel Masculino
Vindemiatrix Feminino
Zephyr Feminino
Zubenelgenubi Masculino

Idiomas disponíveis

Chirp 3: as vozes em HD são suportadas nos seguintes idiomas:

Idioma Código BCP-47
Árabe (genérico) ar-XA
Bengali (Índia) bn-IN
Dinamarquês (Dinamarca) da-DK
Neerlandês (Bélgica) nl-BE
Neerlandês (Países Baixos) nl-NL
Inglês (Austrália) en-AU
Inglês (Índia) en-IN
Inglês (Reino Unido) en-GB
Inglês (Estados Unidos) en-US
Finlandês (Finlândia) fi-FI
Francês (Canadá) fr-CA
Francês (França) fr-FR
Alemão (Alemanha) de-DE
Guzerate (Índia) gu-IN
Hindi (Índia) hi-IN
Indonésio (Indonesia) id-ID
Italiano (Itália) it-IT
Japonês (Japão) ja-JP
Canarim (Índia) kn-IN
Coreano (Coreia do Sul) ko-KR
Malaiala (Índia) ml-IN
Chinês mandarim (China) cmn-CN
Marati (Índia) mr-IN
Bokmål norueguês (Noruega) nb-NO
Polaco (Polónia) pl-PL
Português (Brasil) pt-BR
Russo (Rússia) ru-RU
Espanhol (Espanha) es-ES
Espanhol (Estados Unidos) es-US
Suaíli (Quénia) sw-KE
Sueco (Suécia) sv-SE
Tâmil (Índia) ta-IN
Telugu (Índia) te-IN
Tailandês (Tailândia) th-TH
Turco (Turquia) tr-TR
Ucraniano (Ucrânia) uk-UA
Urdu (Índia) ur-IN
Vietnamita (Vietname) vi-VN

Disponibilidade regional

Chirp 3: as vozes em HD estão disponíveis nas seguintes Google Cloud regiões, respetivamente:

Google Cloud Zona Disposição para o lançamento
global DG
us DG
eu DG
asia-southeast1 DG
europe-west2 DG
asia-northeast1 DG

Formatos de saída suportados

O formato de resposta predefinido é LINEAR16, mas também são suportados outros formatos, incluindo:

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

Use o Chirp 3: vozes HD

Descubra como usar o Chirp 3: vozes em HD para sintetizar a fala.

Realize um pedido de síntese de voz em streaming

Python

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

Para se autenticar na API Text-to-Speech, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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)}")

Realizar pedido de síntese de voz online

Python

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

Para se autenticar na API Text-to-Speech, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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"')

Sugestões de scripting e comandos

A criação de áudio envolvente e com um som natural a partir de texto requer a compreensão das nuances da linguagem falada e a sua tradução para o formato de guião. As seguintes dicas ajudam a criar guiões com um som autêntico e que captam o tom escolhido.

Compreender o objetivo: discurso natural

O objetivo principal é fazer com que a voz sintetizada soe o mais próximo possível de uma voz humana natural. Isto envolve:

  • Imitar o ritmo natural: a velocidade com que uma pessoa fala.
  • Criar um fluxo suave: garantir transições perfeitas entre frases.
  • Adicionar pausas realistas: incorporar pausas para dar ênfase e clareza.
  • Captar o tom da conversa: fazer com que o áudio soe como uma conversa real.

Técnicas importantes para a fala natural

  • Pontuação para o ritmo e o fluxo

    • Pontos (.): indicam um ponto final e uma pausa mais longa. Use-os para separar pensamentos completos e criar limites de frases claros.
    • Vírgulas (,): indicam pausas mais curtas nas frases. Use-os para separar cláusulas, itens de listas ou introduzir pausas breves para respirar.
    • Reticências (...): representam uma pausa mais longa e deliberada. Podem indicar pensamentos pendentes, hesitação ou uma pausa dramática.
      • Exemplo: "E depois… aconteceu."
    • Hífenes (-): podem ser usados para indicar uma breve pausa ou uma interrupção repentina no pensamento.
      • Exemplo: "Queria dizer, mas não consegui."
  • Incorporar pausas e hesitações

    • Pausas estratégicas: use reticências, vírgulas ou travessões para criar pausas em locais onde um orador humano faria naturalmente uma pausa para respirar ou dar ênfase.
    • Hesitações (hum e ah): embora alguns modelos de conversão de texto em voz processem as hesitações automaticamente, é fundamental compreender o respetivo papel. Adicionam autenticidade e fazem com que a voz soe menos robótica. Mesmo que o modelo os adicione, saber onde ocorrem naturalmente na fala humana ajuda a compreender o fluxo geral do seu guião.
  • Experimentação e iteração

    • Voltar a sintetizar: não hesite em voltar a sintetizar a mesma mensagem com a mesma voz várias vezes. Pequenas alterações à pontuação, ao espaçamento ou à escolha de palavras podem afetar significativamente o áudio final.
    • Ouvir criticamente: preste muita atenção ao ritmo, ao fluxo e ao tom geral do áudio sintetizado. Identifique áreas com um som não natural e ajuste o guião em conformidade.
    • Variação de voz: se o sistema o permitir, experimente usar vozes diferentes para ver qual se adequa melhor ao seu guião e tom escolhido.
  • Sugestões práticas para escrever scripts

    • Ler em voz alta: antes da síntese, leia o guião em voz alta. Isto ajuda a identificar expressões estranhas, pausas não naturais e áreas que precisam de ajuste.
    • Escreva de forma conversacional: use contrações (por exemplo, "it's", "we're") e linguagem informal para que o guião soe mais natural.
    • Considere o contexto: o tom e o ritmo do seu guião devem corresponder ao contexto do áudio. Uma apresentação formal requer uma abordagem diferente de uma conversa informal.
    • Divida frases complexas: as frases longas e complexas podem ser difíceis de processar para os motores de TTS. Divida-as em frases mais curtas e mais fáceis de gerir.
  • Melhorias de scripts de exemplo

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

    • Script melhorado (natural): "O produto já está disponível… e adicionámos algumas novas funcionalidades entusiasmantes. É, bem, é muito emocionante."

    • Script original (robótico): "Esta é uma mensagem de confirmação automática. A sua reserva foi processada. Os seguintes detalhes referem-se à sua próxima estadia. O número da reserva é 12345. O nome do hóspede registado é Anthony Vasquez. A data de chegada é 14 de março. A data de partida é 16 de março. O tipo de quarto é Suite Deluxe. O número de hóspedes é 1. O check-in é às 15:00. A hora de check-out é às 11:00. Tenha em atenção que a política de cancelamento requer uma notificação 48 horas antes da chegada. Se não notificar dentro deste prazo, é-lhe cobrada uma noite de estadia. As comodidades adicionais incluídas na sua reserva são: Wi-Fi sem custo financeiro, acesso ao centro de fitness e pequeno-almoço sem custo financeiro. Para quaisquer dúvidas, contacte diretamente o hotel através do número 855-555-6689. Agradecemos a sua escolha do nosso hotel."

    • Script melhorado (natural): "Olá, Anthony Vasquez! Temos o prazer de confirmar a sua reserva connosco! Tudo pronto para a sua estadia de 14 a 16 de março na nossa bonita suite Deluxe. É para 1 hóspede. O seu número de confirmação é 12345, caso precise dele.

      Por isso, só um lembrete rápido, o check-in é às 15:00 e o check-out é às 11:00.

      Agora, apenas uma nota sobre a nossa política de cancelamento… se precisar de cancelar, basta informar-nos, pelo menos, 48 horas antes da sua chegada, ok? Caso contrário, é cobrada uma noite de estadia.

      Para tornar a sua estadia ainda melhor, tem Wi-Fi gratuito, acesso ao nosso centro de fitness e um delicioso pequeno-almoço gratuito todas as manhãs!

      Se tiver alguma dúvida, não hesite em ligar-nos para o número 855-555-6689. Mal podemos esperar para lhe dar as boas-vindas ao hotel!"

    • Explicação das alterações:

      • As reticências (…) criam uma pausa para dar ênfase.
      • "e temos" usa uma contração para um tom mais conversacional.
      • "É, bem, é muito emocionante" adiciona uma pequena quantidade de hesitação e ênfase.
      • O lembrete "OK?" suaviza o tom.

    Seguindo estas diretrizes, pode criar guiões de texto para áudio com um som natural, apelativo e semelhante ao de um humano. Lembre-se de que a prática e a experimentação são fundamentais para dominar esta capacidade.

Chirp 3: controlos de voz HD

As funcionalidades de controlo por voz destinam-se especificamente à síntese de voz HD. Tenha em atenção que o Chirp 3: HD voices não suporta SSML, mas pode continuar a gerir o controlo do ritmo, o controlo de pausas e as pronúncias personalizadas através das opções de controlo por voz do Chirp 3: HD.

Controlo do ritmo

Pode ajustar a velocidade do áudio gerado através do parâmetro de ritmo. O parâmetro de ritmo permite-lhe abrandar ou acelerar a fala, com valores que variam entre 0,25x (muito lento) e 2x (muito rápido). Para definir o ritmo, use o parâmetro speaking_rate no seu pedido. Escolha um valor entre 0,25 e 2,0. Os valores inferiores a 1,0 abrandam a fala e os valores superiores a 1,0 aceleram-na. Um valor de 1,0 indica um ritmo não ajustado.

Exemplo de SynthesizeSpeechRequest com controlo do 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 com controlo do ritmo:

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

Pace control audio samples:

Velocidade da fala Resultado
0,5
1,0
2,0

Pausar controlo

Pode inserir pausas na fala gerada pela IA incorporando etiquetas especiais diretamente no texto através do campo de entrada markup. Tenha em atenção que as etiquetas de pausa só funcionam no campo markup e não no campo text.

Estas etiquetas indicam à IA que deve criar silêncios, mas a duração precisa destas pausas não é fixa. A IA ajusta a duração com base no contexto, tal como a voz humana natural varia com o orador, a localização e a estrutura das frases. As etiquetas de pausa disponíveis são [pause short], [pause long] e [pause]. Para métodos alternativos de criação de pausas sem usar etiquetas de marcação, consulte as nossas diretrizes de criação e comandos.

O modelo de IA pode ignorar ocasionalmente as etiquetas de pausa, especialmente se estiverem colocadas em posições não naturais no texto. Pode combinar várias etiquetas de pausa para silêncios mais longos, mas a utilização excessiva pode causar problemas.

Exemplo de SynthesizeSpeechRequest com controlo 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 com o controlo de pausa:

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

Pausar exemplos de áudio de controlo:

Introdução de marcações Resultado
"Deixe-me ver. Sim, vejo."
"Deixe-me ver, [pausa longa] sim, vejo-o."

Pronúncias personalizadas

Pode especificar pronúncias personalizadas através de representações fonéticas IPA ou X-SAMPA para palavras no texto de entrada. Certifique-se de que usa fonemas adequados ao idioma para uma renderização precisa. Pode saber mais sobre a substituição de fonemas na nossa documentação sobre fonemas.

Exemplo de SynthesizeSpeechRequest com 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 com 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 Resultado
Nenhum
"dog" pronunciado como ""k{t"

As expressões substituídas podem ser formatadas de qualquer forma, incluindo a utilização de símbolos. Por exemplo, no caso de uma potencial ambiguidade baseada no contexto na correspondência de expressões (que é comum em idiomas como o chinês e o japonês) ou em frases em que uma palavra pode ser pronunciada de diferentes formas, a expressão pode ser formatada para remover a ambiguidade. Por exemplo, para evitar substituir acidentalmente outras instâncias da palavra ler na entrada, a expressão "read" pode ser formatada como "read1", "[read]" ou "(read)" para o texto de entrada e a expressão substituída.

Veja este exemplo de aplicação de pronúncias personalizadas a uma frase em que a palavra read é pronunciada de duas formas 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 Resultado
"Lido" substituído de duas formas

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

{
  "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 Resultado
Substitua a pronúncia com a etiqueta de pausa

Idiomas disponíveis para controlos de voz

  • O controlo do ritmo está disponível em todas as localizações.

  • O controlo de pausa está disponível em todas as localizações.

  • A funcionalidade de pronúncias personalizadas está disponível em todas as localizações, exceto: bn-in, gu-in, nl-be, sw-ke, th-th, uk-ua, ur-in e vi-vn.

Perguntas frequentes

Perguntas comuns e respetivas respostas:

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

Pode usar as nossas diretrizes de criação e comandos e melhorar o comando de texto para melhorar a saída de voz.

Como acedo às vozes nos idiomas suportados?

Os nomes das vozes seguem um formato específico, o que permite a utilização em todos os idiomas suportados especificando a voz de forma exclusiva. O formato segue \<locale\>-\<model\>-\<voice\>. Por exemplo, para usar a voz Kore para inglês (Estados Unidos) com o modelo Chirp 3: HD voices, especificaria en-US-Chirp3-HD-Kore.

O Chirp 3: HD voices suporta SSML?

Embora o Chirp 3: HD voices não funcione com SSML, pode continuar a gerir o controlo do ritmo, o controlo de pausas e as pronúncias personalizadas através das opções de controlo por voz do Chirp 3: HD.