SSML (Speech Synthesis Markup Language)

Puoi inviare Speech Synthesis Markup Language (SSML) nella richiesta Text-to-Speech per consentire una maggiore personalizzazione della risposta audio fornendo dettagli sulle pause e sulla formattazione dell'audio di acronimi, date, orari, abbreviazioni o testo che dovrebbe essere censurato. Per ulteriori informazioni ed esempi di codice, consulta il tutorial su SSML per Text-to-Speech.

Di seguito è riportato un esempio di markup SSML e Text-to-Speech sintetizza 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 saperne di più su come creare dati audio dall'input SSML con Text-to-Speech, consulta Creazione di file audio vocali.

Provalo

Se non hai mai utilizzato Google Cloud, crea un account per valutare le prestazioni di Text-to-Speech in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Prova Text-to-Speech senza costi

Suggerimenti per l'utilizzo di SSML

A seconda dell'implementazione, potrebbe essere necessario eseguire l'escape delle virgolette o delle virgolette nel payload SSML inviato a Text-to-Speech. L'esempio seguente mostra come formattare l'input SSML incluso in 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'
    }
  }"

Riserva caratteri

Evita di utilizzare caratteri riservati SSML nel testo da convertire in audio. Quando devi utilizzare un carattere di riserva SSML, evita che il carattere venga letto come codice utilizzando il relativo codice di escape. La seguente tabella mostra i caratteri SSML riservati e i relativi codici di escape associati.

Basato su caratteri Codice di escape
" &quot;
& &amp;
". &apos;
< &lt;
> &gt;

Seleziona una voce

Puoi impostare la voce nell'oggetto VoiceSelectionParams. Consulta il tutorial su SSML di Text-to-Speech per vedere un esempio di codice che illustra l'utilizzo dell'oggetto VoiceSelectionParams.

Puoi utilizzare il tag <voice> per leggere SSML in più voci, ma 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 per gli elementi SSML

Le seguenti sezioni descrivono gli elementi SSML e le opzioni che possono essere utilizzati nelle azioni.

<speak>

L'elemento principale della risposta SSML.

Per saperne di più sull'elemento speak, consulta la specifica di W3.

Esempio

<speak>
  my SSML content
</speak>

<break>

Un elemento vuoto che controlla la messa in pausa o altri confini prosodici tra le parole. L'uso di <break> tra una coppia di token è facoltativo. Se questo elemento non è presente tra le parole, l'interruzione viene determinata automaticamente in base al contesto linguistico.

Per saperne di più sull'elemento break, consulta la specifica di W3.

Attributi

Attributo Descrizione
time

Consente di impostare la durata dell'interruzione in secondi o millisecondi (ad es. "3 s" o "250 ms").

strength

Imposta l'intensità dell'interruzione prosodica dell'output in base ai termini relativi. I valori validi sono: "x-weak", weak", "medium", "strong" e "x-strong". Il valore "nessuno" indica che non deve essere restituito alcun limite di interruzione prosodica, che può essere utilizzato per evitare una interruzione prosodica che altrimenti verrebbe prodotta dal processore. Gli altri valori indicano una forza di interruzione monotonica non in diminuzione (concettualmente in aumento) tra i token. I confini più stabili sono in genere accompagnati da pause.

Esempio

L'esempio seguente mostra come utilizzare l'elemento <break> per mettere in pausa i passaggi:

<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 del testo contenuto all'interno dell'elemento. Consente inoltre 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. È possibile utilizzare gli attributi facoltativi format e detail a seconda del valore interpret-as specifico.

Esempi

L'attributo interpret-as supporta i seguenti valori:

  • currency

    L'esempio seguente è parlato come "quarantadue dollari e un centesimo". Se omesso l'attributo della lingua, verranno utilizzate le impostazioni internazionali correnti.

    <speak>
      <say-as interpret-as='currency' language='en-US'>$42.01</say-as>
    </speak>
        
  • telephone

    Consulta la descrizione interpret-as='telephone' nella nota WG di W3C SSML 1.0 say-as attributi values.

    L'esempio seguente è detto "uno otto zero zero due zero due uno due uno due". Se l'attributo "google:style" viene omesso, viene restituito il zero come la lettera O.

    L'attributo "google:style='zero-as-zero'" al momento funziona solo per le lingue inglese.

          <speak>
            <say-as interpret-as='telephone' google:style='zero-as-zero'>1800-202-1212</say-as>
          </speak>
        
  • verbatim o spell-out

    Il seguente esempio è scritto lettera per lettera:

    <speak>
      <say-as interpret-as="verbatim">abcdefg</say-as>
    </speak>
        
  • date

    L'attributo format è una sequenza di codici di caratteri dei campi della data. I codici dei caratteri dei campi supportati in format sono {y, m, d} rispettivamente per l'anno, il mese e il giorno (del mese). Se il codice di campo viene visualizzato una volta per l'anno, il mese o il giorno, il numero di cifre previsto è rispettivamente 4, 2 e 2. Se il codice di campo viene ripetuto, il numero di cifre previste corrisponde al 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 vocale della data. Per detail='1' sono obbligatori solo i campi del giorno e uno del mese o dell'anno, sebbene possano essere forniti entrambi. Questa è l'impostazione predefinita quando vengono specificati meno di tutti e tre i campi. La forma pronunciata è "Il {giorno ordinale} di {mese} {year}".

    L'esempio seguente è parlato come "Il decimo settembre, millenovenne":

    <speak>
      <say-as interpret-as="date" format="yyyymmdd" detail="1">
        1960-09-10
      </say-as>
    </speak>
        

    L'esempio seguente è parlato come "Il decimo settembre":

    <speak>
      <say-as interpret-as="date" format="dm">10-9</say-as>
    </speak>
        

    Per detail='2', i campi relativi a giorno, mese e anno sono obbligatori e questa è l'impostazione predefinita quando vengono specificati tutti e tre i campi. Il formato parlato è "{month} {ordinal day}, {year}".

    L'esempio seguente è pronunciato "10 settembre, diciannove sessanta":

    <speak>
      <say-as interpret-as="date" format="dmy" detail="2">
        10-9-1960
      </say-as>
    </speak>
        
  • characters

    L'esempio seguente viene pronunciato come "C A N":

    <speak>
      <say-as interpret-as="characters">can</say-as>
    </speak>
        
  • cardinal

    L'esempio seguente è parlato come "Dodicimilatrecentoquarantacinque" (per l'inglese americano) o "Dodicimilatrecentoquarantacinque (per l'inglese britannico)":

    <speak>
      <say-as interpret-as="cardinal">12345</say-as>
    </speak>
        
  • ordinal

    L'esempio seguente è pronunciato come "First":

    <speak>
      <say-as interpret-as="ordinal">1</say-as>
    </speak>
        
  • fraction

    L'esempio seguente viene pronunciato come "cinque e mezzo":

    <speak>
      <say-as interpret-as="fraction">5+1/2</say-as>
    </speak>
        
  • expletive o bleep

    L'esempio seguente viene visualizzato come 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 in base al numero. L'esempio seguente viene pronunciato come "10 piedi":

    <speak>
      <say-as interpret-as="unit">10 foot</say-as>
    </speak>
        
  • time

    L'esempio seguente viene pronunciato come "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 dei campi temporali. I codici di caratteri dei campi supportati in format sono rispettivamente {h,m, s, Z, 12, 24} per ora, minuti (dell'ora), secondi (dei minuti), fuso orario, formato 12 ore e formato 24 ore. Se il codice di campo viene visualizzato una volta per ora, minuti o secondi, il numero di cifre previste sarà 1, 2 e 2 rispettivamente. Se il codice di campo viene ripetuto, il numero di cifre previste corrisponde al numero di volte in cui il codice viene ripetuto. I campi nel testo temporale possono essere separati da punteggiatura e/o spazi. Se ora, minuti o secondi non sono specificati nel formato o se non ci sono cifre corrispondenti, il campo viene considerato come un valore zero. Il valore predefinito di format è "hms12".

    L'attributo detail determina se la forma dell'ora è nel formato di 12 o 24 ore. La forma vocale è nel formato 24 ore se detail='1' o se detail viene omesso e il formato dell'ora è nel formato 24 ore. La forma vocale è nel formato di 12 ore se detail='2' o se detail viene omesso e il formato dell'ora è nel formato 12 ore.

Per saperne di più sull'elemento say-as, consulta la specifica di W3.

<audio>

Supporta l'inserimento di file audio registrati e l'inserimento di altri formati audio in combinazione con l'output vocale sintetizzato.

Attributi

Attributo Obbligatorio Predefinito Valori
src n/d Un URI che fa riferimento alla sorgente del supporto audio. Il protocollo supportato è https.
clipBegin no 0 Una TimeDesignation che rappresenta l'offset dall'inizio della riproduzione della sorgente audio. Se questo valore è maggiore o uguale alla durata effettiva della sorgente audio, non viene inserito alcun audio.
clipEnd no infinito Una TimeDesignation che rappresenta l'offset dall'inizio alla fine della riproduzione della sorgente audio. Se la durata effettiva della sorgente 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% La velocità di riproduzione dell'output del rapporto rispetto alla velocità di input normale espressa in percentuale. Il formato è un numero reale positivo seguito da %. L'intervallo attualmente supportato è [50% (lenta - metà velocità), 200% (veloce - doppia velocità)]. I valori al di fuori di questo intervallo possono (o meno) essere modificati per rientrare nell'intervallo.
repeatCount no 1 o 10 se repeatDur è impostato Un numero reale che specifica il numero di volte in cui inserire l'audio (dopo il clip, se presente, di clipBegin e/o clipEnd). 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 in tal caso ha il valore predefinito.
repeatDur no infinito Un valore TimeDesignation che rappresenta un limite alla durata dell'audio inserito dopo l'elaborazione della sorgente per gli attributi clipBegin, clipEnd, repeatCount e speed (invece della normale durata di riproduzione). Se la durata dell'audio elaborato è inferiore a questo valore, la riproduzione termina in quel momento.
soundLevel no +0dB Regola il livello sonoro dell'audio tramite soundLeveldecibel. L'intervallo massimo è +/-40 dB, ma l'intervallo effettivo potrebbe essere inferiore e la qualità di output potrebbe non produrre buoni risultati sull'intero intervallo.

Di seguito sono riportate le impostazioni attualmente supportate per l'audio:

  • Formato: MP3 (MPEG v2)
    • 24.000 campioni al secondo
    • 24.000 ~ 96.000 bit al secondo, frequenza fissa
  • Formato: Opus in Ogg
    • 24.000 campioni al secondo (banda super larga)
    • 24.000 - 96.000 bit al secondo, frequenza fissa
  • Formato (deprecato): WAV (RIFF)
    • PCM a 16 bit firmato, small endian
    • 24.000 campioni al secondo
  • Per tutti i formati:
    • È preferibile un canale singolo, ma lo stereo è accettabile.
    • Durata massima di 240 secondi. Se vuoi riprodurre audio con una durata più lunga, valuta la possibilità di implementare una risposta multimediale.
    • Limite di dimensione del file: 5 MB.
    • L'URL di origine deve utilizzare il protocollo HTTPS.
    • Il nostro user agent durante il recupero dell'audio è "Google-Speech-Actions".

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 testuali di quell'elemento vengono utilizzati per la visualizzazione. Per ulteriori informazioni, consulta la sezione Audio registrato nell'elenco di controllo per le risposte.

L'URL src deve anche essere un URL https (Google Cloud Storage può ospitare i tuoi file audio su un URL https).

Per ulteriori informazioni sulle risposte multimediali, consulta la sezione relativa alle risposte multimediali nella guida Risposte.

Per saperne 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 di W3.

Esempio

<p><s>This is sentence one.</s><s>This is sentence two.</s></p>

best practice

  • Usa i tag <s>...</s> per mandare a capo frasi complete, soprattutto se contengono elementi SSML che cambiano la prosodia (ossia <audio>, <break>, <emphasis>, <par>, <prosody>, <say-as>, <seq> e <sub>).
  • Se un'interruzione del discorso deve durare abbastanza a lungo da poter essere udita, utilizza i tag <s>...</s> e inserisci l'interruzione tra una frase e l'altra.

<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 di difficile lettura. L'ultimo esempio riportato di seguito mostra questo caso d'uso in giapponese.

Per saperne di più sull'elemento sub, consulta la specifica di W3.

Esempi

<sub alias="World Wide Web Consortium">W3C</sub>
<sub alias="にっぽんばし">日本橋</sub>

<mark>

Un elemento vuoto che inserisce un indicatore nel testo o nella sequenza di tag. Può essere utilizzata per fare riferimento a una posizione specifica nella sequenza o per inserire un indicatore in uno stream di output per una notifica asincrona.

Per saperne 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 il tono, la velocità del parlato e il volume del testo contenuto nell'elemento. Attualmente sono supportati gli attributi rate, pitch e volume.

Gli attributi rate e volume possono essere impostati in base alle specifiche di W3. Esistono tre opzioni per impostare il valore dell'attributo pitch:

Attributo Descrizione
name

L'ID stringa per ogni contrassegno.

Opzione Descrizione
Relative Specifica un valore relativo (ad es. "low", "medium", "high" e così via), dove "medium" è il tono predefinito.
Semitoni Aumenta o diminuisci il tono di "N" semitoni utilizzando rispettivamente "+Nst" o "-Nst". Tieni presente che i segni "+/-" e "st" sono obbligatori.
Percentuale Aumenta o riduci il tono di una percentuale di "N" utilizzando rispettivamente "+N%" o "-N%". Tieni presente che il valore "%" è obbligatorio, mentre "+/-" è facoltativo.

Per saperne di più sull'elemento prosody, consulta la specifica di W3.

Esempio

L'esempio seguente utilizza 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 la necessità di impostare singoli attributi vocali.

Questo elemento supporta un attributo facoltativo "level" con i seguenti valori validi:

  • strong
  • moderate
  • none
  • reduced

Per saperne di più sull'elemento emphasis, consulta la specifica di W3.

Esempio

L'esempio seguente utilizza l'elemento <emphasis> per creare un annuncio:

<emphasis level="moderate">This is an important announcement</emphasis>

<par>

Un contenitore multimediale parallelo che 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 è la stessa 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 <par> principale, l'attributo start viene ignorato e l'ora di inizio corrisponde al momento in cui il processo di sintesi vocale SSML inizia a generare output per l'elemento <par> principale (ovvero, il tempo è "zero").

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 consente di riprodurre 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 è l'ordine in cui vengono visualizzati.

Gli attributi begin e end degli elementi secondari possono essere impostati su valori di offset (consulta la sezione Specifica dell'ora 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, rispetto 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 degli identificatori 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 container multimediale principale (trattato allo stesso modo del valore predefinito di "0"). Consulta la sezione Specifica dell'ora di seguito per i valori stringa validi.
fine no nessun valore Una specifica per l'ora di fine di questo contenitore multimediale. Consulta la sezione Specifica dell'ora di seguito per i valori stringa validi.
repeatCount no 1 Un numero reale che specifica il numero di volte in cui inserire i contenuti multimediali. Le frazioni di ripetizione non sono supportate, quindi il valore verrà arrotondato al numero intero più vicino. Zero non è un valore valido e viene pertanto considerato non specificato e in tal caso ha il valore predefinito.
repeatDur no nessun valore Una TimeDesignation che rappresenta un limite per la durata del supporto inserito. Se la durata del contenuto multimediale è inferiore a questo valore, la riproduzione termina in quel momento.
soundLevel no +0dB Regola il livello sonoro dell'audio di soundLevel decibel. L'intervallo massimo è +/-40 dB, ma l'intervallo effettivo potrebbe essere inferiore e la qualità di output potrebbe non produrre buoni risultati sull'intero intervallo.
fadeInDur no 0 s Una TimeDesignation durante la quale i contenuti multimediali passeranno dalla modalità silenziosa al valore 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 audio non raggiungerà il livello audio specificato.
fadeOutDur no 0 s Una TimeDesignation durante la quale i contenuti multimediali scompariranno dal valore soundLevel specificato facoltativamente finché non saranno disattivati. Se la durata dei contenuti multimediali è inferiore a questo valore, il livello audio viene impostato su un valore più basso per garantire che il silenzio venga raggiunto alla fine della riproduzione.

Specifica dell'ora

Una specifica temporale, 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 esempio +2.5s) o un valore di syncbase (ad esempio foo_id.end-250ms).

  • Valore di offset: il valore di offset temporale è un valore SMIL Timecount 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, mentre la seconda stringa di cifre è la parte decimale frazionaria. Il segno predefinito (ad es. "(+|-)?") è "+". I valori dell'unità corrispondono rispettivamente a ore, minuti, secondi e millisecondi. Il valore predefinito delle 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 come un valore di offset.

<phoneme>

Puoi usare il tag <phoneme> per produrre pronunce personalizzate delle parole in linea. Text-to-Speech accetta gli alfabeti fonetici IPA e X-SAMPA. Consulta la pagina dei fonemi per un elenco delle lingue e dei fonemi supportati.

Ogni applicazione del tag <phoneme> indirizza 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 possono essere inseriti fino a tre livelli di stress:

  1. Sforzo primario: indicato con /↓/ in IPA e /"/ in X-SAMPA.
  2. Stress secondario: indicato con /↓/ in IPA e /%/ in X-SAMPA.
  3. Non stressato: non è indicato con un simbolo (in entrambe le notazioni).

Alcune lingue potrebbero avere meno di tre livelli o non indicare affatto il posizionamento dello stress. Consulta la pagina dei fonemi per vedere i livelli di stress disponibili per la tua lingua. Gli indicatori di stress sono posizionati all'inizio di ogni sillaba stressata. Ad esempio, in inglese americano:

Parola di esempio IPA X-SAMPA
acqua "wA:t@`
sott'acqua ⌛ accetted/i %Vnd@"wA:t@

Trascrizioni ampie e strette

Come regola generale, mantieni le trascrizioni più ampie e di natura fonemica. Ad esempio, in inglese americano, trascrivi l'intervocalico /t/ (anziché usare un tocco):

Parola di esempio IPA X-SAMPA
burro ∎ bliff t community "bVt@" anziché "bV4@"

In alcuni casi, l'utilizzo della rappresentazione fonemica rende i risultati della sintesi vocale innaturale (ad esempio, se la sequenza di fonemi è anatomicamente difficile da pronunciare).

Un esempio è la voce dell'assimilazione per /s/ in inglese. In questo caso l'assimilazione deve essere riflessa nella trascrizione:

Parola di esempio IPA X-SAMPA
gatti ⁠kæts "k{ts
cani r "dA:gz anziché "dA:gs

Riduzione

Ogni sillaba deve contenere una (e una sola) vocale. Ciò significa che evita le consonanti sillabiche e trascrivile con una vocale ridotta. Ad esempio:

Parola di esempio IPA X-SAMPA
gattino ⁠ksempre }}invece di r "kIt@n anziché "kitn"
bollitore Punto d'interesse "kEt@l anziché "kEtl

Sillabificazione

Facoltativamente, puoi specificare i limiti delle sillabe utilizzando /./. Ogni sillaba deve contenere una (e una sola) vocale. Ad esempio:

Parola di esempio IPA X-SAMPA
leggibilità adolescente %r\i:.d@."bI.l@.ti:

Durata

Text-to-Speech supporta <say-as interpret-as="duration"> per leggere correttamente le durate. Ad esempio, il seguente esempio verrebbe 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 ora
m minuti
s secondi
ms millisecondi

<voice>

Il tag <voice> consente di utilizzare più di una voce 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 sarà verbalizzato in francese utilizzando una voce femminile al posto della lingua predefinita (inglese) e del genere (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 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>, Text-to-Speech prevede di ricevere un name (il nome della voce che vuoi utilizzare) oppure una combinazione dei seguenti attributi. Tutti e tre gli attributi sono facoltativi, ma devi specificarne almeno uno se non specifichi un valore name.

  • gender: "maschile", "femminile" o "neutro".
  • variant: utilizzato come punto di svolta nei casi in cui ci siano molteplici possibilità di quale voce utilizzare in base alla tua configurazione.
  • language: la lingua desiderata. È possibile specificare una sola lingua in un determinato tag <voice>. Specifica la tua lingua nel formato BCP-47. Puoi trovare il codice BCP-47 per la tua lingua nella colonna language code (codice lingua) della pagina delle voci e delle 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 viene designato come required e non configurato correttamente, la richiesta avrà esito negativo.
  • ordering: tutti gli attributi elencati dopo un tag ordering sono considerati come attributi preferiti anziché obbligatori. L'API Text-to-Speech prende in considerazione gli attributi preferiti nell'ordine in cui sono elencati dopo il tag ordering. Se alcuni attributi preferiti sono configurati in modo errato, Text-to-Speech potrebbe comunque restituire una voce valida, ma con la configurazione errata eliminata.

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 non utilizzi il tag <voice> per cambiare esplicitamente la voce. La stringa xml:lang deve contenere la lingua di destinazione in formato BCP-47 (questo valore è indicato come "codice lingua" nella tabella delle 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> nel modo più efficiente. Non tutte le combinazioni di lingue producono gli stessi risultati di qualità se specificate nella stessa richiesta SSML. In alcuni casi, una combinazione linguistica può produrre un effetto rilevabile ma sottile o percepito come negativo. Problemi noti:

  • Il giapponese con caratteri Kanji non è supportato dal tag <lang>. L'input viene traslitterato e letto come caratteri cinesi.
  • Le lingue semitiche come l'arabo, l'ebraico e il persiano non sono supportate dal tag <lang> e comportano il silenzio. Se vuoi usare una di queste lingue, ti consigliamo di usare il tag <voice> per passare a una voce che parla la lingua desiderata (se disponibile).

Punti temporali SSML

L'API Text-to-Speech supporta l'utilizzo di punti temporali nei dati audio creati. Un timepoint è 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 dell'audio e il punto temporale.

Per impostare un punto temporale sono necessari due passaggi:

  1. Aggiungi un tag SSML <mark> nel punto dello script per il quale vuoi ottenere un timestamp.
  2. Imposta TimepointType su SSML_MARK. Se questo campo non viene configurato, per impostazione predefinita non vengono restituiti i punti temporali.

L'esempio seguente restituisce due punti temporali:

  • timepoint_1: indica il tempo (in secondi) in cui la parola "Mark" viene visualizzata nell'audio generato.
  • timepoint_2: indica il tempo (in secondi) in cui la parola "vedere" appare 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 diversi stili:

  1. en-US-Neural2-F
  2. en-US-Neural2-J

Usa 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:

  1. apologetic
  2. calm
  3. empathetic
  4. firm
  5. lively