Puoi inviare Speech Synthesis Markup Language (SSML) nella tua richiesta di sintesi vocale per consentire una maggiore personalizzazione della risposta audio fornendo dettagli sulle pause e sulla formattazione audio per acronimo, date, orari, abbreviazioni o testo da censurare. Per ulteriori informazioni ed esempi di codice, consulta il tutorial su Text-to-Speech in linguaggio XML per i contenuti multimediali (SSML).
Di seguito è riportato un esempio di markup SSML e la sintesi vocale esamina il testo:
<speak> Here are <say-as interpret-as="characters">SSML</say-as> samples. I can pause <break time="3s"/>. I can play a sound <audio src="https://www.example.com/MY_MP3_FILE.mp3">didn't get your MP3 audio file</audio>. I can speak in cardinals. Your number is <say-as interpret-as="cardinal">10</say-as>. Or I can speak in ordinals. You are <say-as interpret-as="ordinal">10</say-as> in line. Or I can even speak in digits. The digits for ten are <say-as interpret-as="characters">10</say-as>. I can also substitute phrases, like the <sub alias="World Wide Web Consortium">W3C</sub>. Finally, I can speak a paragraph with two sentences. <p><s>This is sentence one.</s><s>This is sentence two.</s></p> </speak>
Ecco il testo sintetizzato per il documento SSML di esempio:
Here are S S M L samples. I can pause [3 second pause]. I can play a sound [audio file plays]. I can speak in cardinals. Your number is ten. Or I can speak in ordinals. You are tenth in line. Or I can even speak in digits. The digits for ten are one oh. I can also substitute phrases, like the World Wide Web Consortium. Finally, I can speak a paragraph with two sentences. This is sentence one. This is sentence two.
Text-to-Speech supporta un sottoinsieme dei tag SSML disponibili, descritti in questo argomento.
Per ulteriori informazioni su come creare dati audio da input SSML con Text-to-Speech, consulta Creare file audio vocali.
Suggerimenti per l'utilizzo di SSML
A seconda dell'implementazione, potresti dover eseguire la fuga di virgolette nel payload SSML inviato a Text-to-Speech. L'esempio seguente mostra come formato di input SSML incluso all'interno di un oggetto JSON.
"{ 'input':{ 'ssml':'<speak>The <say-as interpret-as=\"characters\">SSML</say-as> standard <break time=\"1s\"/>is defined by the <sub alias=\"World Wide Web Consortium\">W3C</sub>.</speak>' }, 'voice':{ 'languageCode':'en-us', 'name':'en-US-Standard-B', 'ssmlGender':'MALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }"
Caratteri riservati
Evita di utilizzare caratteri di riserva SSML nel testo da convertire e trasformarlo in audio. Quando devi utilizzare un carattere riservato SSML, impedisci che il carattere venga letto come codice utilizzando il relativo codice di escape. La tabella seguente mostra i caratteri SSML riservati e i relativi codici di escape associati.
Basato su caratteri | Codice di escape |
---|---|
" | " |
& | & |
". | ' |
< | < |
> | > |
Seleziona una voce
Puoi impostare la voce nell'oggetto
VoiceSelectionParams
. Guarda il tutorial sull'SSML di Text-to-Speech
per vedere un esempio di codice
dimostrazione dell'utilizzo dell'oggetto VoiceSelectionParams
.
Puoi utilizzare il tag <voice>
per leggere il codice SSML con più voci,
devi impostare il nome VoiceSelectionParams
su una voce compatibile:
Tipo di voce richiesto | Tipo di voce supportato nel tag <voice> | ||||
---|---|---|---|---|---|
Neural2 | Studio | Wavenet | Notizie | Standard | |
Neural2 | ✔ | ✔ | ✔ | ||
Studio | ✔ | ✔ | ✔ | ||
WaveNet | ✔ | ✔ | ✔ | ||
Standard | ✔ | ✔ | ✔ | ||
Notizie | ✔ | ✔ | ✔ |
Supporto degli elementi SSML
Le seguenti sezioni descrivono gli elementi e le opzioni SSML che possono essere utilizzati nelle azioni.
<speak>
L'elemento principale della risposta SSML.
Per scoprire di più sull'elemento speak
, consulta la specifica di W3.
Esempio
<speak> my SSML content </speak>
<break>
Un elemento vuoto che controlla le interruzioni o altri confini prosodici tra le parole. L'utilizzo di <break>
tra qualsiasi coppia di token è facoltativo. Se questo elemento non è presente tra una parola e l'altra, l'interruzione viene determinata automaticamente in base al contesto linguistico.
Per scoprire di più sull'elemento break
, consulta la specifica di W3.
Attributi
Attributo | Descrizione |
---|---|
time |
Imposta la durata dell'interruzione in secondi o millisecondi (ad es. "3 s" o "250 ms"). |
strength |
Imposta la forza dell'interruzione prosodica dell'output in base a termini relativi. I valori validi sono: "x-weak", deboli", "medium", "strong" e "x-strong". Il valore "nessuno" indica che non deve essere emesso alcun limite di interruzione prosodica, che può essere utilizzato per evitare un'interruzione prosodica che altrimenti produrrebbe il processore. Gli altri valori indicano l'intensità della interruzione tra i token in modo monotonicamente non decrescente (in aumento concettuale). I limiti più forti sono in genere accompagnati da pause. |
Esempio
L'esempio seguente mostra come utilizzare l'elemento <break>
per fare una pausa tra un passaggio e l'altro:
<speak> Step 1, take a deep breath. <break time="200ms"/> Step 2, exhale. Step 3, take a deep breath again. <break strength="weak"/> Step 4, exhale. </speak>
<say‑as>
Questo elemento consente di indicare informazioni sul tipo di costrutto di testo contenuto al suo interno. Inoltre, consente di specificare il livello di dettaglio per il rendering del testo contenuto.
L'elemento <say‑as>
ha l'attributo obbligatorio interpret-as
, che determina la modalità di pronuncia del valore. Gli attributi facoltativi format
e detail
possono essere utilizzati a seconda del valore specifico di interpret-as
.
Esempi
L'attributo interpret-as
supporta i seguenti valori:
-
currency
L'esempio seguente è pronunciato come "quarantadue dollari e un centesimo". Se l'attributo della lingua viene omesso, utilizza le impostazioni internazionali correnti.
<speak> <say-as interpret-as='currency' language='en-US'>$42.01</say-as> </speak>
-
telephone
Consulta la descrizione di
interpret-as='telephone'
nella nota del gruppo di lavoro W3C SSML 1.0 sui valori degli attributi say-as.L'esempio seguente viene pronunciato come "uno otto zero zero due zero due uno due uno due". Se lo stile "google:style" omesso, pronuncia lo zero come la lettera O.
"google:style='zero-as-zero'" attualmente funziona solo con le lingue EN.
<speak> <say-as interpret-as='telephone' google:style='zero-as-zero'>1800-202-1212</say-as> </speak>
-
verbatim
ospell-out
Il seguente esempio viene scritto lettera per lettera:
<speak> <say-as interpret-as="verbatim">abcdefg</say-as> </speak>
-
date
L'attributo
format
è una sequenza di codici di caratteri del campo della data. I codici carattere dei campi supportati informat
sono {y
,m
,d
} rispettivamente per anno, mese e giorno (del mese). Se il codice di campo viene visualizzato una volta per l'anno, il mese o il giorno, il numero previsto di cifre è rispettivamente 4, 2 e 2. Se il codice di campo viene ripetuto, il numero di cifre previste è il numero di volte in cui il codice viene ripetuto. I campi nel testo della data possono essere separati da punteggiatura e/o spazi.L'attributo
detail
controlla la forma pronunciata della data. Perdetail='1'
sono obbligatori solo i campi del giorno e uno del mese o dell'anno, sebbene possano essere forniti entrambi. Questo è il valore predefinito quando non vengono specificati tutti e tre i campi. La forma pronunciata è "Il {ordinal day} del {month} {year}".Il seguente esempio viene pronunciato come "Il decimo di settembre, mille novecento sessanta":
<speak> <say-as interpret-as="date" format="yyyymmdd" detail="1"> 1960-09-10 </say-as> </speak>
Il seguente esempio viene pronunciato come "Il 10 settembre":
<speak> <say-as interpret-as="date" format="dm">10-9</say-as> </speak>
Per
detail='2'
i campi giorno, mese e anno sono obbligatori. Si tratta del valore predefinito quando vengono compilati tutti e tre i campi. La forma parlata è "{month} {ordinal day}, {year}".Il seguente esempio viene pronunciato come "Dieci settembre mille novecento sessanta":
<speak> <say-as interpret-as="date" format="dmy" detail="2"> 10-9-1960 </say-as> </speak>
-
characters
Il seguente esempio viene pronunciato come "C A N":
<speak> <say-as interpret-as="characters">can</say-as> </speak>
-
cardinal
L'esempio seguente è pronunciato come "Dodicimilatrecentoquarantacinque" (per l'inglese americano) o "dodicimilatrecentoquarantacinque (per l'inglese britannico)":
<speak> <say-as interpret-as="cardinal">12345</say-as> </speak>
-
ordinal
Il seguente esempio viene pronunciato come "Primo":
<speak> <say-as interpret-as="ordinal">1</say-as> </speak>
-
fraction
Il seguente esempio viene pronunciato come "cinque e mezzo":
<speak> <say-as interpret-as="fraction">5+1/2</say-as> </speak>
-
expletive
obleep
L'esempio seguente viene visualizzato come un beep, come se fosse stato censurato:
<speak> <say-as interpret-as="expletive">censor this</say-as> </speak>
-
unit
Converte le unità al singolare o al plurale a seconda del numero. Il seguente esempio viene pronunciato come "10 piedi":
<speak> <say-as interpret-as="unit">10 foot</say-as> </speak>
-
time
Il seguente esempio è pronunciato "Due e trenta del pomeriggio":
<speak> <say-as interpret-as="time" format="hms12">2:30pm</say-as> </speak>
L'attributo
format
è una sequenza di codici di caratteri del campo della data e dell'ora. I codici di caratteri dei campi supportati informat
sono {h
,m
,s
,Z
,12
,24
} rispettivamente per ora, minuto (dell'ora), secondo (del minuto), fuso orario, ora in formato 12 ore e ora in formato 24 ore. Se il codice del campo viene visualizzato una volta per ora, minuto o secondo, il numero di cifre previsto è rispettivamente 1, 2 e 2. Se il codice di campo viene ripetuto, il numero di cifre previste è il numero di volte in cui il codice viene ripetuto. I campi nel testo dell'ora possono essere separati da punteggiatura e/o spazi. Se l'ora, il minuto o il secondo non sono specificati nel formato o non sono presenti cifre corrispondenti, il campo viene considerato come un valore pari a zero. Il valore predefinito diformat
è "hms12".L'attributo
detail
controlla se la forma parlata dell'ora è in formato 12 ore o 24 ore. Il formato vocale è nel formato 24 ore se il valoredetail='1'
odetail
viene omesso e il formato dell'ora è nel formato 24 ore. La forma parlata è in formato 12 ore sedetail='2'
odetail
è omesso e il formato dell'ora è 12 ore.
Per scoprire di più sull'elemento say-as
, consulta la specifica W3.
<audio>
Supporta l'inserimento di file audio registrati e l'inserimento di altri formati audio insieme all'output vocale sintetizzato.
Attributi
Attributo | Obbligatorio | Predefinito | Valori |
---|---|---|---|
src |
sì | n/a | Un URI che fa riferimento alla sorgente multimediale audio. Il protocollo supportato è https . |
clipBegin |
no | 0 | Un TimeDesignation, ovvero l'offset dall'inizio della sorgente audio da cui iniziare la riproduzione. Se questo valore è superiore o uguale alla durata effettiva della sorgente audio, non verrà inserito alcun audio. |
clipEnd |
no | infinito | Un TimeDesignation che indica l'offset dall'inizio alla fine della riproduzione della sorgente audio. Se la durata effettiva dell'origine audio è inferiore a questo valore, la riproduzione termina in quel momento. Se clipBegin è maggiore o uguale a clipEnd , non viene inserito alcun audio. |
speed |
no | 100% | Il rapporto tra la frequenza di riproduzione in uscita e la frequenza di inserimento normale, espresso in percentuale. Il formato è un numero reale positivo seguito dalla percentuale. L'intervallo attualmente supportato è [50% (lenta - velocità dimezzata), 200% (veloce - velocità doppia)]. I valori al di fuori di questo intervallo possono (o non possono) essere modificati per rientrare nell'intervallo. |
repeatCount |
no | 1 o 10 se repeatDur è impostato |
Un Numero reale che specifica quante volte inserire l'audio (dopo il clipping, se presente, tramite clipBegin e/o clipEnd ). Le ripetizioni frazionate non sono supportate, pertanto il valore verrà arrotondato all'intero più vicino. Zero non è un valore valido e viene quindi considerato non specificato e in questo caso ha il valore predefinito. |
repeatDur |
no | infinito | Un valore TimeDesignation che rappresenta un limite per la durata dell'audio inserito dopo l'elaborazione della sorgente per gli attributi clipBegin , clipEnd , repeatCount e speed (anziché la normale durata di riproduzione). Se la durata dell'audio elaborato è inferiore a questo valore, la riproduzione termina in quel momento. |
soundLevel |
no | +0 dB | Regola il livello del suono dell'audio di soundLevel decibel. La portata massima è +/-40 dB, ma l'intervallo effettivo potrebbe essere effettivamente inferiore e la qualità dell'output potrebbe non dare buoni risultati su tutta la gamma. |
Di seguito sono riportate le impostazioni attualmente supportate per l'audio:
- Formato: MP3 (MPEG v2)
- 24.000 campioni al secondo
- 24K ~ 96.000 bit al secondo, velocità fissa
- Formato: Opus in Ogg
- 24.000 campioni al secondo (super-wideband)
- 24K - 96K bit al secondo, velocità fissa
- Formato (deprecato): WAV (RIFF)
- PCM a 16 bit firmato, little endian
- 24.000 campioni al secondo
- Per tutti i formati:
- È preferibile un canale singolo, ma è accettabile anche l'audio stereo.
- Durata massima di 240 secondi. Se vuoi riprodurre audio con una durata maggiore, ti consigliamo di implementare una risposta multimediale.
- Dimensione massima del file: 5 MB.
- L'URL di origine deve utilizzare il protocollo HTTPS.
- Il nostro user agent durante il recupero dell'audio è "Google-Speech-Azioni".
I contenuti dell'elemento <audio>
sono facoltativi e vengono utilizzati se il file audio non può essere riprodotto o se il dispositivo di output non supporta l'audio. I contenuti possono includere un elemento <desc>
, nel qual caso i contenuti di testo dell'elemento vengono utilizzati per la visualizzazione. Per ulteriori informazioni, consulta la sezione Audio registrato dell'elenco di controllo delle risposte.
L'URL src
deve essere anche un URL https (Google Cloud Storage può ospitare i file audio su un URL https).
Per scoprire di più sulle risposte multimediali, consulta la sezione Risposta multimediale nella guida Risposte.
Per scoprire di più sull'elemento audio
, consulta la specifica di W3.
Esempio
<speak> <audio src="cat_purr_close.ogg"> <desc>a cat purring</desc> PURR (sound didn't load) </audio> </speak>
<p>,<s>
Elementi di frase e paragrafo.
Per scoprire di più sugli elementi p
e s
, consulta la specifica W3.
Esempio
<p><s>This is sentence one.</s><s>This is sentence two.</s></p>
Best practice
- Usa <s>...</s> tag per aggregare frasi complete, soprattutto se contengono elementi SSML che cambiano prosodia (ovvero <audio>, <break>, <emphasis>, <par>, <prosody>, <say-as>, <seq> e <sub>).
- Se una pausa nel discorso deve essere abbastanza lunga da poter essere udita, utilizza <s>...</s> e inserire l'interruzione tra le frasi.
<sub>
Indica che il testo nel valore dell'attributo alias sostituisce il testo contenuto per la pronuncia.
Puoi anche utilizzare l'elemento sub
per fornire una pronuncia semplificata di una parola difficile da leggere. L'ultimo esempio riportato di seguito mostra questo caso d'uso in giapponese.
Per scoprire di più sull'elemento sub
, consulta la specifica W3.
Esempi
<sub alias="World Wide Web Consortium">W3C</sub>
<sub alias="にっぽんばし">日本橋</sub>
<mark>
Un elemento vuoto che inserisce un indicatore nella sequenza di testo o tag. Può essere utilizzato per fare riferimento a un una posizione specifica nella sequenza o per inserire un indicatore in uno stream di output per la notifica asincrona.
Per scoprire di più sull'elemento mark
, consulta la specifica di W3.
Esempio
<speak> Go from <mark name="here"/> here, to <mark name="there"/> there! </speak>
<prosody>
Utilizzato per personalizzare la tonalità, la velocità del parlato e il volume del testo contenuto dall'elemento. Al momento sono supportati gli attributi rate
, pitch
e volume
.
Gli attributi rate
e volume
possono essere impostati in base alle specifiche W3. Esistono tre opzioni per impostare il valore dell'attributo pitch
:
Attributo | Descrizione |
---|---|
name |
L'ID stringa per ogni marca. |
Opzione | Descrizione |
---|---|
Relativo | Specifica un valore relativo (ad es. "basso", "medio", "alto" e così via), dove "medio" è l'intonazione predefinita. |
Semitoni | Aumenta o diminuisci l'intonazione di "N" semitoni utilizzando rispettivamente "+Nst" o "-Nst". Tieni presente che "+/-" e "st" sono obbligatori. |
Percentuale | Aumenta o diminuisci la proposta musicale di "N" percentuale utilizzando "+N%" o "-N%" rispettivamente. Tieni presente che "%" è obbligatorio, ma "+/-" è facoltativo. |
Per saperne di più sull'elemento prosody
, consulta la specifica W3.
Esempio
Nell'esempio seguente viene utilizzato l'elemento <prosody>
per parlare lentamente a 2 semitoni più bassi del normale:
<prosody rate="slow" pitch="-2st">Can you hear me now?</prosody>
<emphasis>
Utilizzato per aggiungere o rimuovere l'enfasi dal testo contenuto dall'elemento. L'elemento <emphasis>
modifica il parlato in modo simile a <prosody>
, ma senza dover impostare attributi vocali individuali.
Questo elemento supporta un attributo facoltativo "livello" con i seguenti valori validi:
strong
moderate
none
reduced
Per scoprire di più sull'elemento emphasis
, consulta la specifica W3.
Esempio
Nell'esempio seguente viene utilizzato l'elemento <emphasis>
per creare un annuncio:
<emphasis level="moderate">This is an important announcement</emphasis>
<par>
Un contenitore multimediale parallelo che ti consente di riprodurre più elementi multimediali contemporaneamente. Gli unici contenuti consentiti sono un insieme di uno o più elementi <par>
, <seq>
e <media>
. L'ordine degli elementi <media>
non è significativo.
A meno che un elemento secondario non specifichi un'ora di inizio diversa, l'ora di inizio implicita per l'elemento corrisponde a quella del contenitore <par>
. Se per un elemento secondario è impostato un valore di offset per l'attributo begin o end, l'offset dell'elemento sarà relativo all'ora di inizio del contenitore <par>
. Per l'elemento principale <par>
, l'attributo begin viene ignorato e l'ora di inizio corrisponde al momento in cui il processo di sintesi vocale SSML inizia a generare l'output per l'elemento principale <par>
(ovvero l'ora "zero" effettiva).
Esempio
<speak> <par> <media xml:id="question" begin="0.5s"> <speak>Who invented the Internet?</speak> </media> <media xml:id="answer" begin="question.end+2.0s"> <speak>The Internet was invented by cats.</speak> </media> <media begin="answer.end-0.2s" soundLevel="-6dB"> <audio src="https://actions.google.com/.../cartoon_boing.ogg"/> </media> <media repeatCount="3" soundLevel="+2.28dB" fadeInDur="2s" fadeOutDur="0.2s"> <audio src="https://actions.google.com/.../cat_purr_close.ogg"/> </media> </par> </speak>
<seq>
Un contenitore multimediale sequenziale che ti consente di riprodurre gli elementi multimediali uno dopo l'altro. Gli unici contenuti consentiti sono un insieme di uno o più elementi <seq>
, <par>
e <media>
. L'ordine degli elementi multimediali corrisponde all'ordine in cui vengono visualizzati.
Gli attributi begin ed end degli elementi secondari possono essere impostati su valori di offset (consulta la sezione Specifica temporale di seguito). I valori di offset di questi elementi secondari saranno relativi alla fine dell'elemento precedente nella sequenza o, nel caso del primo elemento della sequenza, all'inizio del relativo contenitore <seq>
.
Esempio
<speak> <seq> <media begin="0.5s"> <speak>Who invented the Internet?</speak> </media> <media begin="2.0s"> <speak>The Internet was invented by cats.</speak> </media> <media soundLevel="-6dB"> <audio src="https://actions.google.com/.../cartoon_boing.ogg"/> </media> <media repeatCount="3" soundLevel="+2.28dB" fadeInDur="2s" fadeOutDur="0.2s"> <audio src="https://actions.google.com/.../cat_purr_close.ogg"/> </media> </seq> </speak>
<media>
Rappresenta un livello multimediale all'interno di un elemento <par>
o <seq>
. I contenuti consentiti di un elemento <media>
sono un elemento SSML <speak>
o <audio>
. La tabella seguente descrive gli attributi validi per un elemento <media>
.
Attributi
Attributo | Obbligatorio | Predefinito | Valori |
---|---|---|---|
xml:id | no | nessun valore | Un identificatore XML univoco per questo elemento. Le entità codificate non sono supportate. I valori dell'identificatore consentiti corrispondono all'espressione regolare "([-_#]|\p{L}|\p{D})+" . Per ulteriori informazioni, consulta XML-ID. |
inizio | no | 0 | L'ora di inizio di questo contenitore multimediale. Ignorato se si tratta dell'elemento contenitore multimediale principale (trattato come il valore predefinito "0"). Per i valori di stringa validi, consulta la sezione Specifiche relative all'ora di seguito. |
end | no | nessun valore | Una specifica per l'ora di fine di questo contenitore multimediale. Per i valori di stringa validi, consulta la sezione Specifiche relative all'ora di seguito. |
repeatCount | no | 1 | Un Numero reale che specifica quante volte inserire i contenuti multimediali. Le ripetizioni frazionarie non sono supportate, pertanto il valore verrà arrotondato al numero intero più vicino. Zero non è un valore valido e viene pertanto considerato non specificato e presenta il valore predefinito in questo caso. |
repeatDur | no | nessun valore | Un valore TimeDesignation che rappresenta un limite per la durata dei contenuti multimediali inseriti. Se la durata dei contenuti multimediali è inferiore a questo valore, la riproduzione termina in quel momento. |
soundLevel | no | +0dB | Regola il livello di volume dell'audio di soundLevel decibel. La portata massima è +/-40 dB, ma l'intervallo effettivo potrebbe essere effettivamente inferiore e la qualità dell'output potrebbe non dare buoni risultati su tutta la gamma. |
fadeInDur | no | 0 s | Un elemento TimeDesignation durante il quale i contenuti multimediali passano dalla modalità silenziosa all'elemento soundLevel specificato facoltativamente. Se la durata dei contenuti multimediali è inferiore a questo valore, la dissolvenza in entrata verrà interrotta al termine della riproduzione e il livello dell'audio non raggiungerà il livello audio specificato. |
fadeOutDur | no | 0 s | Un TimeDesignation durante il quale i contenuti multimediali verranno attenuati dall'ora soundLevel specificata facoltativamente fino a quando non saranno silenziosi. Se la durata dei contenuti multimediali è inferiore a questo valore, il livello dell'audio viene impostato su un valore inferiore per garantire che venga raggiunto il silenzio alla fine della riproduzione. |
Specifica temporale
Una specifica di tempo, utilizzata per il valore degli attributi "begin" ed "end" degli elementi <media>
e dei contenitori multimediali (elementi <par>
e <seq>
), è un valore di offset (ad es. +2.5s
) o un valore syncbase (ad es. foo_id.end-250ms
).
- Valore di offset. Il valore di offset di tempo è un valore di Timecount SMIL che consente valori corrispondenti all'espressione regolare:
"\s\*(+|-)?\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"
La stringa della prima cifra è la parte intera del numero decimale e la stringa della seconda cifra è la parte frazionaria decimale. Il segno predefinito ("(+|-)?") è "+". I valori delle unità corrispondono rispettivamente a ore, minuti, secondi e millisecondi. L'impostazione predefinita per le unità è "s". (secondi).
- Valore Syncbase: un valore syncbase è un valore syncbase SMIL che consente valori corrispondenti all'espressione regolare:
"([-_#]|\p{L}|\p{D})+\.(begin|end)\s\*(+|-)\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"
Le cifre e le unità vengono interpretate nello stesso modo di un valore di offset.
<phoneme>
Puoi utilizzare il tag <phoneme>
per produrre pronunce personalizzate delle parole
in linea. Text-to-Speech accetta
IPA e
Alfabeti fonetici X-SAMPA. Consulta le
pagina dei fonemi per un elenco delle lingue supportate
e fonemi.
Ogni applicazione del tag <phoneme>
indica la pronuncia di una singola
parola:
<phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme> <phoneme alphabet="x-sampa" ph='m@"hA:g@%ni:'>mahogany</phoneme>
Indicatori di stress
In una trascrizione è possibile inserire fino a tre livelli di accento:
- Accento principale: indicato con /ˈ/ in IPA e /"/ in X-SAMPA.
- Stress secondario: indicato con /tali/ nell'IPA e /%/ in X-SAMPA.
- Senza accento: non indicato con un simbolo (in nessuna notazione).
Alcune lingue potrebbero avere meno di tre livelli o non indicare affatto l'accento. Consulta la pagina dei fonemi per visualizzare lo stress livelli disponibili per la tua lingua. Gli indicatori di stress sono posizionati all'inizio ciascuna sillabe sottolineata. Ad esempio, in inglese americano:
Parola di esempio | IPA | X-SAMPA |
---|---|---|
acqua | ˈwɑːtɚ | "wA:t@` |
sott'acqua | ˌʌndɚˈwɑːtɚ | %Vnd@"wA:t@ |
Trascrizioni generiche e specifiche
Come regola generale, fai in modo che le trascrizioni siano più generiche e di natura fonetica. Ad esempio, in inglese americano, trascrivi la /t/ intervocalica (anziché usare un tap):
Parola di esempio | IPA | X-SAMPA |
---|---|---|
burro | tali al posto di b | "bVt@` invece di "bV4@` |
In alcuni casi, l'utilizzo della rappresentazione fonetica fa sì che i risultati della sintesi vocale non siano naturali (ad esempio, se la sequenza di fonemi è anatomicamente difficile da pronunciare).
Un esempio è l'assimilazione della sonorità per /s/ in inglese. In questo caso, l'assimilazione deve essere riportata nella trascrizione:
Parola di esempio | IPA | X-SAMPA |
---|---|---|
gatti | ˈkæts | "k{ts |
cani | dregz al posto di dreg | "dA:gz anziché "dA:gs |
Riduzione
Ogni sillaba deve contenere una (e una sola) vocale. Ciò significa che devi evitare le consonanti sillabiche e trascriverle con una vocale ridotta. Per esempio:
Parola di esempio | IPA | X-SAMPA |
---|---|---|
gattino | ˈkɪtən anziché ˈkɪtn | "kIt@n anziché "kitn |
bollitore | ktΣ al posto di ktl | "kEt@l anziché "kEtl |
Sillabificazione
Puoi specificare i limiti delle sillabe facoltativamente utilizzando /./. Ogni sillaba deve deve contenere una (e una sola) vocale. Ad esempio:
Parola di esempio | IPA | X-SAMPA |
---|---|---|
leggibilità | ˌɹiː.də.ˈbɪ.lə.tiː | %r\i:.d@."bI.l@.ti: |
Dizionario pronuncia personalizzato
In alternativa alla fornitura di pronunce in linea con il tag phoneme
, fornisci un dizionario di pronunce personalizzate nell'RPC di sintesi vocale. Quando il dizionario della pronuncia personalizzato è nella richiesta, il testo di input verrà trasformato automaticamente con il tag phoneme
SSML.
Ad esempio, la seguente richiesta con input di testo e pronuncia personalizzata verrà trasformata ed equivalerà al codice SSML riportato di seguito.
Input originale:
input: { text: 'Hello world! It is indeed a beautiful world!', custom_pronunciations: { pronunciations: { phrase: 'world' phonetic_encoding: PHONETIC_ENCODING_IPA pronunciation: 'wɜːld' } } }
Input trasformato:
input: { ssml: '<speak>Hello <phoneme alphabet="ipa" ph="wɜːld">world</phoneme>! It is indeed a beautiful <phoneme alphabet="ipa" ph="wɜːld">world</phoneme>!</speak>' }
Durata
Text-to-Speech supporta <say-as interpret-as="duration">
per leggere correttamente le durate. Ad esempio, l'esempio seguente sarebbe verbalizzato come
"cinque ore e trenta minuti":
<say-as interpret-as="duration" format="h:m">5:30</say-as>
La stringa di formato supporta i seguenti valori:
Abbreviazione | Valore |
---|---|
h | ore |
m | minuti |
s | secondi |
ms | millisecondi |
<voice>
Il tag <voice>
ti consente di utilizzare più voci in una singola richiesta
SSML. Nell'esempio seguente, la voce predefinita è una voce maschile inglese.
Tutte le parole verranno sintetizzate in questa voce, ad eccezione di "qu'est-ce qui t'amène
ici", che verrà verbalizzata in francese utilizzando una voce femminile anziché la lingua e il genere predefiniti (inglese e maschile).
<speak>And then she asked, <voice language="fr-FR" gender="female">qu'est-ce qui t'amène ici</voice><break time="250ms"/> in her sweet and gentle voice.</speak>
In alternativa, puoi utilizzare un tag <voice>
per specificare una singola voce (il
nome della voce nella pagina delle voci supportate)
anziché specificare un valore language
e/o gender
:
<speak>The dog is friendly<voice name="fr-CA-Wavenet-B">mais la chat est mignon</voice><break time="250ms"/> said a pet shop owner</speak>
Quando utilizzi il tag <voice>
, la funzionalità Text-to-Speech si aspetta di ricevere un name
(il nome della voce che vuoi utilizzare) o una combinazione dei seguenti attributi. Tutti e tre gli attributi sono facoltativi, ma devi fornire almeno uno se non fornisci un name
.
gender
: uno tra "male" e "female" o "neutro".variant
: utilizzato come criterio di spareggio nei casi in cui sono disponibili più voci da utilizzare in base alla configurazione.language
: la lingua che preferisci. È possibile specificare una sola lingua in un<voice>
tag specificato. Specifica la lingua nel formato BCP-47. Puoi trovare il codice BCP-47 per la tua lingua nella colonna codice lingua della pagina Voci e lingue supportate.
Puoi anche controllare la priorità relativa di ciascuno degli attributi gender
, variant
e language
utilizzando due tag aggiuntivi: required
e ordering
.
required
: se un attributo è designato comerequired
e non è configurato correttamente, la richiesta non andrà a buon fine.ordering
: tutti gli attributi elencati dopo un tagordering
sono considerati preferiti anziché obbligatori. L'API Text-to-Speech prende in considerazione attributi preferiti in base al criterio del "best effort" nell'ordine in cui sono elencati dopo il tagordering
. Se gli attributi preferiti sono configurati scorrettamente, la sintesi vocale potrebbe comunque restituire una voce valida, ma la configurazione errata verrà ignorata.
Esempi di configurazioni che utilizzano i tag required
e ordering
:
<speak>And there it was <voice language="en-GB" gender="male" required="gender" ordering="gender language">a flying bird </voice>roaring in the skies for the first time.</speak>
<speak>Today is supposed to be <voice language="en-GB" gender="female" ordering="language gender">Sunday Funday.</voice></speak>
<lang>
Puoi utilizzare <lang>
per includere testo in più lingue all'interno della stessa richiesta
SSML. Tutte le lingue verranno sintetizzate con la stessa voce, a meno che tu non utilizzi il
<voice>
tag per cambiare esplicitamente la voce. La stringa xml:lang
deve contenere
la lingua di destinazione nel formato BCP-47 (questo valore è indicato come "codice lingua" in
nella tabella voci supportate). Nel seguente
esempio, la parola "chat" verrà verbalizzata in francese anziché nella lingua predefinita
(inglese):
<speak>The french word for cat is <lang xml:lang="fr-FR">chat</lang></speak>
Text-to-Speech supporta il tag <lang>
secondo il criterio del massimo impegno. Non tutte
di combinazioni linguistiche producono risultati della stessa qualità se specificati nello stesso
richiesta SSML. In alcuni casi, una combinazione di lingue potrebbe produrre un effetto che è rilevabile, ma sottile o percepito come negativo. Problemi noti:
- Il giapponese con caratteri kanji non è supportato dal tag
<lang>
. L'input viene trascritto e letto come caratteri cinesi. - Le lingue semitiche come l'arabo, l'ebraico e il persiano non sono supportate
dal tag
<lang>
, di conseguenza viene silenziato. Se vuoi utilizzare uno degli queste lingue ti consigliamo di usare il tag<voice>
per passare a una voce che parla la lingua desiderata (se disponibile).
Timepoint SSML
L'API Text-to-Speech supporta l'utilizzo di punti temporali nell'audio creato
e i dati di Google Cloud. Un punto in tempo è un timestamp (in secondi, misurato dall'inizio
dell'audio generato) che corrisponde a un punto designato nello script. Puoi impostare un punto temporale nello script utilizzando il tag <mark>
. Quando l'audio viene
generato, l'API restituisce quindi l'offset temporale tra l'inizio
l'audio e il punto temporale.
Per impostare un punto in tempo sono necessari due passaggi:
- Aggiungi un tag SSML
<mark>
nel punto dello script in cui vuoi inserire un timestamp . - Imposta TimepointType su
SSML_MARK
. Se questo campo non viene impostato, i punti temporali non vengono restituiti dal predefinito.
L'esempio seguente restituisce due istanti di tempo:
- timepoint_1: indica il tempo (in secondi) in cui la parola "Mark" appare in l'audio generato.
- timepoint_2: indica il momento (in secondi) in cui la parola "vedi" viene visualizzata nell'audio generato.
<speak>Hello <mark name="timepoint_1"/> Mark. Good to <mark name="timepoint_2"/> see you.</speak>
Stili
Le seguenti voci possono parlare in più stili:- en-US-Neural2-F
- en-US-Neural2-J
Utilizza il tag <google:style>
per controllare lo stile da utilizzare. Utilizza il tag solo intorno a frasi complete.
Esempio:
<speak><google:style name="lively">Hello I'm so happy today!</google:style></speak>
Il campo name
supporta i seguenti valori:
apologetic
calm
empathetic
firm
lively