Chirp 3: voci HD

Text-to-Speech Chirp 3: voci in HD rappresenta l'ultima generazione di tecnologia di Text-to-Speech. Grazie ai nostri LLM all'avanguardia, queste voci offrono un livello di realismo e risonanza emotiva senza precedenti.

Prova un notebook di Colab Visualizza 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
Achird Uomo
Algenib Uomo
Algieba Uomo
Alnilam Uomo
Autonoe Donna
Callirrhoe Donna
Despina Donna
Encelado Uomo
Erinome Donna
Gacrux Donna
Giapeto Uomo
Laomedeia Donna
Pulcherrima Donna
Rasalgethi Uomo
Sadachbia Uomo
Sadaltager Uomo
Schedar Uomo
Sulafat Donna
Umbriel Uomo
Vindemiatrix Donna
Zubenelgenubi Uomo
Achernar Donna

Lingue disponibili

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

Lingua Codice BCP-47
Inglese (Stati Uniti) en-US
Inglese (Australia) en-AU
Inglese (Regno Unito) en-GB
Inglese (India) en-IN
Spagnolo (Stati Uniti) es-US
Tedesco (Germania) de-DE
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 (Belgio) nl-BE
Olandese (Paesi Bassi) nl-NL
Coreano (Corea del Sud) ko-KR
Cinese mandarino (Cina) cmn-CN
Polacco (Polonia) pl-PL
Russo (Russia) ru-RU
Swahili (Kenya) sw-KE
Thailandese (Thailandia) th-TH
Urdu (India) ur-IN
Ucraino (Ucraina) uk-UA

Disponibilità regionale

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

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

Utilizzare Chirp 3: voci in HD

Scopri come utilizzare Chirp 3: voci in HD per la sintesi vocale.

Eseguire una richiesta di sintesi vocale in streaming

Python

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

Per eseguire l'autenticazione in Text-to-Speech, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura 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)}")

Eseguire la richiesta di sintesi vocale online

Python

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

Per eseguire l'autenticazione in Text-to-Speech, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura 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 la creazione di script e prompt

Per creare un audio coinvolgente e dal suono naturale a partire da un testo, è necessario comprendere le sfumature della lingua parlata e tradurle in formato di script. I seguenti suggerimenti ti aiuteranno a creare script autentici e a catturare il tono scelto.

Comprendere l'obiettivo: un parlato naturale

L'obiettivo principale è far sì che la voce sintetizzata assomigli il più possibile a quella di un oratore umano naturale. Ciò comporta:

  • Imitazione del ritmo naturale: la velocità con cui una persona parla.
  • Creazione di un flusso fluido:garantire transizioni fluide tra frasi e sintagmi.
  • Aggiunta di pause realistiche: inserimento di pause per dare enfasi e chiarezza.
  • Acquisizione del tono conversazionale:l'audio deve sembrare una conversazione reale.

Tecniche chiave per un parlato naturale

  • Punteggiatura per il ritmo e il flusso

    • Punti (.): indicano una pausa più lunga. Usali per separare i pensieri completi e creare limiti chiari per le frasi.
    • Virgole (,): indicano pause più brevi all'interno delle frasi. Utilizzali per separare le clausole, gli elementi di un elenco o per introdurre brevi pause per respirare.
    • Puntini di sospensione (…): rappresentano una pausa più lunga e deliberata. Possono indicare pensieri che si trascinano, 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 una cosa, ma non ci sono riuscito".
  • Incorporare pause e disfluenze

    • Pause strategiche: utilizza puntini di sospensione, virgole o trattini per creare pause nei punti in cui un oratore umano si fermerebbe naturalmente per riprendere fiato o dare enfasi.
    • Disfluenze (Ums e Uhs): mentre alcuni modelli di Text-to-Speech gestiscono automaticamente le disfluenze, è fondamentale comprenderne il ruolo. Aggiungono autenticità e rendono il discorso meno robotico. Anche se il modello li aggiunge, sapere dove si trovano naturalmente nel linguaggio umano ti aiuta a capire il flusso generale del copione.
  • Sperimentazione e iterazione

    • Sintesi: non aver paura di sintetizzare lo stesso messaggio con la stessa voce più volte. Piccole modifiche alla punteggiatura, alla spaziatura o alla scelta delle parole possono influire in modo significativo sull'audio finale.
    • Ascolta con attenzione: presta molta attenzione al ritmo, al flusso e al tono generale dell'audio sintetizzato. Identifica le aree che non suonano naturali e modifica il copione di conseguenza.
    • Variazione della voce: se il sistema lo consente, prova a utilizzare voci diverse per vedere quale si adatta meglio al tuo copione e al tono scelto.
  • Suggerimenti pratici per la creazione di script

    • Leggi ad alta voce: prima della sintesi, leggi il copione ad alta voce. In questo modo potrai identificare frasi goffe, pause innaturali e aree che richiedono modifiche.
    • Scrivi in modo colloquiale: utilizza le contrazioni (ad es. "it's", "we're") e un linguaggio informale per rendere la sceneggiatura più naturale.
    • Considera il contesto: il tono e il ritmo del copione devono corrispondere al contesto dell'audio. Una presentazione formale richiede un approccio diverso rispetto a una conversazione informale.
    • Dividi le frasi complesse: le frasi lunghe e contorte possono essere difficili da gestire per i motori di sintesi vocale. Suddividile in frasi più brevi e più gestibili.
  • Miglioramenti allo script di esempio

    • Original Script (Robotic): "The product is now available. Abbiamo nuove funzionalità. È molto emozionante".

    • Miglioramento dello script (naturale): "Il prodotto è ora disponibile… e abbiamo aggiunto alcune nuove funzionalità entusiasmanti. È, beh, è molto emozionante".

    • Script originale (robotico): "Questo è un messaggio di conferma automatico. La tua prenotazione è stata elaborata. I seguenti dettagli si riferiscono al 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 è Deluxe Suite. Il numero di ospiti è 1. L'orario di check-in è alle 15:00. L'orario di check-out è le 11:00. Tieni presente che le norme di annullamento richiedono la notifica 48 ore prima dell'arrivo. Il mancato avviso entro questo periodo di tempo comporterà l'addebito di una notte. I servizi aggiuntivi inclusi nella prenotazione sono: Wi-Fi gratuito, accesso al centro fitness e colazione gratuita. Per qualsiasi domanda, contatta direttamente l'hotel al numero 855-555-6689. Grazie per aver scelto il nostro hotel."

    • Improved Script (Natural): "Hi Anthony Vasquez! Siamo felici di confermare la tua prenotazione. È tutto pronto per il tuo soggiorno dal 14 al 16 marzo nella nostra splendida suite deluxe. Questo prezzo è per 1 ospite. Il tuo numero di conferma è 12345, nel caso ti servisse.

      Quindi, un breve promemoria: il check-in è alle 15:00 e il check-out alle 11:00.

      Prima di lasciarti, ti ricordiamo le nostre norme relative all'annullamento: se devi annullare la prenotazione, comunicacelo almeno 48 ore prima dell'arrivo. In caso contrario, ti verrà addebitata una notte.

      Per rendere il tuo soggiorno ancora migliore, 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 darti il benvenuto in hotel."

    • Spiegazione delle modifiche:

      • I puntini di sospensione (...) creano una pausa per dare enfasi.
      • "e abbiamo" utilizza una contrazione per un tono più colloquiale.
      • "È, beh, è molto emozionante" aggiunge un po' di disfluenza ed enfasi.
      • "Va bene?" Il promemoria amichevole attenua il tono.

    Se segui queste linee guida, puoi creare script di sintesi vocale che suonano naturali, coinvolgenti e simili a quelli umani. Ricorda che la pratica e la sperimentazione sono fondamentali per acquisire questa competenza.

Chirp 3: controlli vocali HD

Le funzionalità di controllo vocale sono specifiche per la sintesi vocale HD. Tieni presente che Chirp 3: voci in HD non supporta SSML, ma puoi comunque gestire il controllo della velocità, della pausa e le pronunce personalizzate tramite le opzioni di controllo vocale di Chirp 3: voci in HD.

Controllo del ritmo

Puoi regolare la velocità dell'audio generato utilizzando il parametro di andatura. Il parametro Pace (Ritmo) consente di rallentare o accelerare il parlato, con valori compresi tra 0,25x (molto lento) e 2x (molto veloce). Per impostare il ritmo, utilizza il parametro speaking_rate nella richiesta. Scegli un valore compreso tra 0,25 e 2. I valori inferiori a 1,0 rallentano la voce, mentre i valori superiori a 1,0 la velocizzano. Un valore pari a 1 indica un ritmo non aggiustato.

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 del ritmo:

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

Campioni audio del controllo del ritmo:

Velocità del parlato Output
0,5
1.0
2.0

Pausa

Puoi inserire pause nel discorso generato dall'AI incorporando tag speciali direttamente nel testo utilizzando il campo di input markup. Tieni presente che i tag di pausa funzioneranno solo nel campo markup e non nel campo text.

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

Il modello di AI potrebbe ignorare occasionalmente i tag di pausa, soprattutto se sono posizionati in posizioni innaturali 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 della pausa:

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

Campioni audio del controllo di pausa:

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

Pronunce personalizzate

Puoi specificare pronunce personalizzate utilizzando rappresentazioni fonetiche IPA o X-SAMPA per le parole all'interno del testo di input. Assicurati di utilizzare fonemi appropriati per la lingua per un rendering accurato. Puoi scoprire di più sull'override dei fonemi nella nostra documentazione sui fonemi.

Esempio di SynthesizeSpeechRequest che utilizza pronunce personalizzate:

{
  "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",
  }
}

Esempio di StreamingSynthesizeConfig che utilizza pronunce personalizzate:

{
  "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",
  }
}

Campioni audio di pronunce personalizzate:

Pronunce personalizzate applicate Output
Nessuno
"dog" pronunciato come ""k{t"

Le frasi sottoposte a override possono essere formattate in qualsiasi modo, incluso l'utilizzo di simboli. Ad esempio, in caso di potenziale ambiguità basata sul contesto nella corrispondenza delle frasi (comune in lingue come il cinese e il giapponese) o di frasi in cui una parola potrebbe essere pronunciata in modi diversi, la frase può essere formattata per rimuovere l'ambiguità. Ad esempio, per evitare di sovrascrivere accidentalmente altre istanze della parola leggi nell'input, la frase "read" potrebbe essere formattata come "read1", "[read]" o "(read)" sia per il testo di input sia per la frase sovrascritta.

Vedi questo esempio di applicazione di pronunce personalizzate a una frase in cui la parola read viene pronunciata in due modi diversi:

{
  "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",
  }
}
Pronunce personalizzate applicate Output
"read" overridden two ways

Inoltre, le pronunce personalizzate possono essere utilizzate con l'input di markup, che consente anche l'utilizzo di tag di 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",
  }
}
Pronunce personalizzate utilizzate Output
Eseguire l'override della pronuncia con il tag di pausa

Lingue in cui sono disponibili i controlli vocali

  • Il controllo del ritmo è disponibile in tutte le impostazioni internazionali.

  • Il controllo della pausa è disponibile in tutte le impostazioni internazionali.

  • Le pronunce personalizzate sono disponibili in tutti i paesi, tranne: bn-in, gu-in, nl-be, sw-ke, th-th, uk-ua, ur-in e vi-vn.

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 di 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 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 in HD, devi specificarla come en-US-Chirp3-HD-Kore.

Chirp 3: voci in HD supporta SSML?

Anche se Chirp 3: voci in HD non funziona con SSML, puoi comunque gestire il controllo del ritmo, della pausa e delle pronunce personalizzate tramite le opzioni di controllo vocale di Chirp 3: voci in HD.