Chirp 3: voci HD

Sintesi vocale Chirp 3: le voci HD rappresentano la più recente generazione di tecnologia di sintesi vocale. Grazie ai nostri LLM all'avanguardia, queste voci offrono un livello di realismo e risonanza emotiva senza precedenti.

Provare un notebook di Colab Visualizzare il blocco note su GitHub

Opzioni vocali

È disponibile una gamma di opzioni vocali, ognuna con caratteristiche distinte:

Nome Genere Demo
Aoede Donna
Puck Uomo
Caronte Uomo
Kore Donna
Fenrir Uomo
Leda Donna
Orus Uomo
Zephyr Donna

Lingue disponibili

Chirp 3: le voci HD sono supportate nelle seguenti lingue:

Lingua Codice BCP-47
Tedesco (Germania) de-DE
Inglese (Australia) en-AU
Inglese (Regno Unito) en-GB
Inglese (India) en-IN
Spagnolo (Stati Uniti) es-US
Francese (Francia) fr-FR
Hindi (India) hi-IN
Portoghese (Brasile) pt-BR
Arabo (generico) ar-XA
Spagnolo (Spagna) es-ES
Francese (Canada) fr-CA
Indonesiano (Indonesia) id-ID
Italiano (Italia) it-IT
Giapponese (Giappone) ja-JP
Turco (Turchia) tr-TR
Vietnamita (Vietnam) vi-VN
Bengalese (India) bn-IN
Gujarati (India) gu-IN
Kannada (India) kn-IN
Malayalam (India) ml-IN
Marathi (India) mr-IN
Tamil (India) ta-IN
Telugu (India) te-IN
Olandese (Paesi Bassi) nl-NL
Coreano (Corea del Sud) ko-KR
Cinese mandarino (Cina) cmn-CN
Polacco (Polonia) pl-PL
Russo (Russia) ru-RU
Thailandese (Thailandia) th-TH

Disponibilità a livello di regione

Chirp 3: le voci HD sono disponibili rispettivamente nelle seguenti Google Cloud regioni:

Google Cloud Zona Preparazione al lancio
global GA
us GA
eu GA
asia-southeast1 GA

Formati di output supportati

Il formato di risposta predefinito è LINEAR16, ma sono supportati anche altri formati, tra cui:

Metodo API Formato
streaming ALAW, MULAW, OGG_OPUS e PCM
batch ALAW, MULAW, MP3, OGG_OPUS e PCM

Usare Chirp 3: voci HD

Scopri come utilizzare le voci Chirp 3: HD per sintetizzare il parlato.

Esegui la richiesta di sintesi vocale in streaming

Python

Per scoprire come installare e utilizzare la libreria client per Text-to-Speech, consulta Librerie client Text-to-Speech. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Text-to-Speech Python.

Per autenticarti a Text-to-Speech, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

"""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)}")

Esegui una richiesta di sintesi vocale online

Python

Per scoprire come installare e utilizzare la libreria client per Text-to-Speech, consulta Librerie client Text-to-Speech. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Text-to-Speech Python.

Per autenticarti a Text-to-Speech, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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"')

Suggerimenti per gli script e i prompt

Per creare audio coinvolgenti e dal suono naturale a partire da un testo, è necessario comprendere le sfumature del linguaggio parlato e tradurle in forma di script. I seguenti suggerimenti ti aiuteranno a creare script che sembrino autentici e che rispettino il tono scelto.

Informazioni sull'obiettivo: parlato naturale

L'obiettivo principale è rendere la voce sintetizzata il più simile possibile a quella di un oratore umano naturale. Ciò comporta:

  • Riproduzione del ritmo naturale: la velocità con cui una persona parla.
  • Creazione di un flusso fluido:assicurati transizioni fluide tra frasi e periodi.
  • Aggiungi pause realistiche:inserisci pause per dare enfasi e chiarezza.
  • Acquisizione del tono di conversazione: l'audio deve sembrare una conversazione reale.

Tecniche chiave per un parlato naturale

  • Punteggiatura per il ritmo e il flusso

    • Punti (.): indicano una virgola e una pausa più lunga. Utilizzale per separare pensieri completi e creare confini chiari delle frasi.
    • Virgole (,): indicano pause più brevi all'interno delle frasi. Utilizzali per separare le clausole, gli elementi dell'elenco o per fare brevi pause.
    • Elisidi (...): rappresentano una pausa più lunga e deliberata. Possono indicare pensieri incompiuti, esitazione o una pausa drammatica.
      • Esempio: "E poi… è successo."
    • Trattini (-): possono essere utilizzati per indicare una breve pausa o un'interruzione improvvisa del pensiero.
      • Esempio: "Volevo dire… ma non ce l'ho fatta."
  • Incorporare pause e balbuzie

    • Pause strategiche: utilizza puntini di sospensione, virgole o trattini per creare pause nei punti in cui un oratore farebbe naturalmente una pausa per prendere fiato o dare enfasi.
    • Interruzioni (um e uh): anche se alcuni modelli di sintesi vocale gestiscono automaticamente le interruzioni, è fondamentale comprenderne il ruolo. Aggiungono autenticità e rendono il parlato meno robotico. Anche se il modello li aggiunge, sapere dove si verificano naturalmente nel parlato umano ti aiuta a comprendere il flusso complessivo del tuo script.
  • Sperimentazione e iterazione

    • Ri-sintesi: non aver paura di riassimilare lo stesso messaggio con la stessa voce più volte. Modifiche minori a punteggiatura, spaziatura o scelta delle parole possono influire notevolmente sull'audio finale.
    • Ascolta con attenzione: presta particolare attenzione al ritmo, al flusso e al tono generale dell'audio sintetizzato. Identifica le aree che non sembrano naturali e modifica di conseguenza lo script.
    • Variazione della voce: se il sistema lo consente, prova a utilizzare voci diverse per vedere quale si adatta meglio allo script e al tono scelto.
  • Suggerimenti pratici per la scrittura di script

    • Leggi schermo: prima di eseguire la sintesi, leggi lo script ad alta voce. In questo modo potrai identificare frasi complicate, interruzioni innaturali e aree che richiedono aggiustamenti.
    • Scrivi in modo colloquiale: utilizza le contrazioni (ad es. "è", "siamo") e un linguaggio informale per rendere lo script più naturale.
    • Prendi in considerazione il contesto: il tono e il ritmo dello script devono corrispondere al contesto dell'audio. Una presentazione formale richiede un approccio diverso rispetto a una conversazione informale.
    • Suddividi le frasi complesse: le frasi lunghe e contorte possono essere difficili da gestire per i motori di sintesi vocale. Suddividili in frasi più brevi e più gestibili.
  • Miglioramenti agli script di esempio

    • Script originale (robotizzato): "Il prodotto è ora disponibile. Abbiamo nuove funzionalità. È molto emozionante."

    • Script migliorato (naturale): "Il prodotto è ora disponibile e abbiamo aggiunto alcune nuove funzionalità interessanti. È, beh, è molto emozionante."

    • Script originale (robotizzato): "Questo è un messaggio di conferma automatico. La tua prenotazione è stata elaborata. I seguenti dettagli riguardano il tuo prossimo soggiorno. Il numero di prenotazione è 12345. Il nome dell'ospite registrato è Anthony Vasquez e la data di arrivo è il 14 marzo. La data di partenza è il 16 marzo. Il tipo di camera è Suite Deluxe. Il numero di ospiti è 1. Il check-in deve essere effettuato entro le 15:00. L'orario di check-out è le 11:00. Tieni presente che le norme sull'annullamento richiedono una notifica 48 ore prima dell'arrivo. La mancata notifica entro questo periodo di tempo comporterà l'addebito di una notte di soggiorno. I servizi aggiuntivi inclusi nella prenotazione sono: Wi-Fi gratuito, accesso al centro fitness e colazione gratuita. Per qualsiasi richiesta, contatta direttamente l'hotel al numero 855-555-6689. Grazie per aver scelto il nostro hotel."

    • Script migliorato (naturale): "Ciao Anthony Vasquez. Siamo lieti di confermare la tua prenotazione. È tutto pronto per il tuo soggiorno dal 14 al 16 marzo nella nostra splendida suite deluxe. Il prezzo si riferisce a 1 ospite. Se ti serve, il numero di conferma è 12345.

      Ti ricordo che il check-in è alle 15:00 e il check-out alle 11:00.

      Ora, una breve nota sulle nostre norme relative all'annullamento: se devi annullare la prenotazione, comunicacelo almeno 48 ore prima del tuo arrivo, d'accordo? In caso contrario, ti verrà addebitato un pernottamento.

      Per rendere il tuo soggiorno ancora più piacevole, avrai a disposizione il Wi-Fi gratuito, l'accesso al nostro centro fitness e una deliziosa colazione gratuita ogni mattina.

      Per qualsiasi domanda, non esitare a chiamarci al numero 855-555-6689. Non vediamo l'ora di accoglierti in hotel."

    • Spiegazione delle modifiche:

      • I tre puntini (...) creano una pausa per dare enfasi.
      • "e abbiamo" utilizza una contrazione per un tono più colloquiale.
      • "È, beh, è molto emozionante" aggiunge un po' di balbuzie ed enfasi.
      • "Ok?", un promemoria amichevole per ammorbidire il tono.

    Seguendo queste linee guida, puoi creare script di conversione di testo in audio che suonano naturali, coinvolgenti e simili a quelli umani. Ricorda che la pratica e la sperimentazione sono fondamentali per padroneggiare questa abilità.

Chirp 3: controlli vocali HD

Le funzionalità di controllo vocale sono specifiche per la sintesi vocale HD. Tieni presente che le voci HD non supportano SSML e che il controllo della pausa e del ritmo può produrre risultati incoerenti.

Lingue disponibili per i controlli vocali

Chirp 3: i controlli vocali HD sono attualmente disponibili solo in inglese (Stati Uniti).

Controllo dell'andatura

Puoi regolare la velocità dell'audio generato utilizzando il parametro pace. Questo parametro consente di rallentare o velocizzare la voce, con valori che vanno da 0,25x (molto lento) a 2x (molto veloce), con incrementi di 0,25x. Per impostare il ritmo, utilizza il parametro "speaking_rate" nella richiesta, scegliendo un valore float compreso tra 0,25 e 2,0. I valori inferiori a 1 rallentano la voce, mentre quelli superiori a 1 la velocizzano. Un valore pari a 1,0 indica un ritmo non modificato.

Esempio di SynthesizeSpeechRequest che utilizza il controllo del 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",
  }
}

Esempio di StreamingSynthesizeConfig che utilizza il controllo dell'andatura:

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

Campioni audio per il controllo della velocità:

Velocità del parlato Output
0,5
1.0
2.0

Controllo di messa in pausa

Puoi inserire pause nel parlato generato dall'IA incorporando tag speciali direttamente nel testo utilizzando il campo di immissione markup. Tieni presente che i tag di pausa funzionano solo nel campo markup e non nel campo text.

Questi tag indicano all'IA di creare silenzi, ma la durata esatta di queste interruzioni non è fissa. L'AI regola la durata in base al contesto, proprio come il parlato naturale umano varia in base all'altoparlante, alla posizione e alla struttura della frase. I tag di pausa disponibili sono [pause short], [pause long] e [pause]. Per metodi alternativi per creare interruzioni senza utilizzare i tag di markup, consulta le nostre linee guida per la formulazione e la creazione di prompt.

A volte il modello di IA potrebbe ignorare i tag di interruzione, soprattutto se sono posizionati in posizioni non naturali nel testo. Puoi combinare più tag di pausa per silenzi più lunghi, ma un uso eccessivo può causare problemi.

Esempio di SynthesizeSpeechRequest che utilizza il controllo della 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",
  }
}

Esempio di StreamingSynthesisInput che utilizza il controllo di messa in pausa:

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

Controlla la riproduzione dei campioni audio in pausa:

Input di markup Output
"Fammi dare un'occhiata, sì, lo vedo."
"Fammi dare un'occhiata, [pausa lunga] sì, lo vedo."

Domande frequenti

Domande frequenti e relative risposte:

Come faccio a controllare il ritmo e il flusso per migliorare l'output vocale?

Puoi utilizzare le nostre linee guida per la creazione e l'uso dei prompt e migliorare il prompt di testo per migliorare l'output vocale.

Come faccio ad accedere alle voci nelle lingue supportate?

I nomi delle voci seguono un formato specifico, che ne consente l'utilizzo nelle lingue supportate specificando la voce in modo univoco. Il formato segue \<locale\>-\<model\>-\<voice\>. Ad esempio, per utilizzare la voce Kore per l'inglese (Stati Uniti) utilizzando il modello Chirp 3: voci HD, devi specificarla come en-US-Chirp3-HD-Kore.

Le voci Chirp 3: HD supportano SSML?

Sebbene le voci Chirp 3: HD non funzionino con SSML, puoi comunque gestire il controllo del ritmo e della pausa tramite le opzioni di controllo vocale HD.