Pronuncia con SSML
È possibile usare Speech Synthesis Markup Language (SSML) con testo per la sintesi vocale per specificare il modo in cui viene pronunciato il parlato. Ad esempio, è possibile usare SSML con fonemi e un lessico personalizzato per migliorare la pronuncia. È anche possibile usare SSML per definire il modo in cui viene pronunciata una parola o un'espressione matematica.
Per informazioni dettagliate sull'uso degli elementi SSML per migliorare la pronuncia, vedere le sezioni seguenti. Per altre informazioni sulla sintassi SSML, vedere Struttura ed eventi del documento SSML.
elemento phoneme
L'elemento phoneme
viene usato per la pronuncia fonetica nei documenti SSML. Fornire sempre il riconoscimento vocale leggibile come fallback.
Telefono alfabeti sono costituiti da telefoni, costituiti da lettere, numeri o caratteri, talvolta in combinazione. Ogni telefono descrive un suono univoco del parlato. L'alfabeto fonetico è in contrasto con l'alfabeto latino, dove qualsiasi lettera può rappresentare più suoni pronunciati. Considera le diverse en-US
pronunce della lettera "c" nelle parole "candy" e "cessate" o le diverse pronunce della combinazione di lettere "th" nelle parole "thing" e "quelle".
Nota
Per un elenco delle impostazioni locali che supportano i fonemi, vedere le note a piè di pagina nella tabella del supporto linguistico.
L'utilizzo degli phoneme
attributi dell'elemento è descritto nella tabella seguente.
Attributo | Descrizione | Obbligatorio o facoltativo |
---|---|---|
alphabet |
Alfabeto fonetico da usare quando si sintetizza la pronuncia della stringa nell'attributo ph . La stringa che specifica l'alfabeto deve essere specificata in lettere minuscole. Le opzioni seguenti sono gli alfabeti possibili che è possibile specificare:
L'alfabeto si applica solo all'oggetto phoneme nell'elemento . |
Facoltativo |
ph |
Stringa contenente telefoni che specificano la pronuncia della parola nell'elemento phoneme . Se la stringa specificata contiene telefoni non riconosciuti, il testo per il riconoscimento vocale rifiuta l'intero documento SSML e non produce nessuno dell'output vocale specificato nel documento.Per ipa , per sottolineare una sillaba posizionando il simbolo di stress prima di questa sillaba, è necessario contrassegnare tutte le sillabe per la parola. Altrimenti, la sillaba prima che questo simbolo di stress sia sottolineato. Per sapi , se si desidera stressare una sillaba, è necessario posizionare il simbolo di stress dopo questa sillaba, indipendentemente dal fatto che tutte le sillabe della parola siano contrassegnate. |
Richiesto |
esempi di phoneme
I valori supportati per gli attributi dell'elemento phoneme
sono stati descritti in precedenza. Nei primi due esempi, i valori di ph="tə.ˈmeɪ.toʊ"
o ph="təmeɪˈtoʊ"
vengono specificati per stressare l'allable meɪ
.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<phoneme alphabet="ipa" ph="tə.ˈmeɪ.toʊ"> tomato </phoneme>
</voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<phoneme alphabet="ipa" ph="təmeɪˈtoʊ"> tomato </phoneme>
</voice>
</speak>
<speak version="1.0" xmlns="https://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<phoneme alphabet="sapi" ph="iy eh n y uw eh s"> en-US </phoneme>
</voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<s>His name is Mike <phoneme alphabet="ups" ph="JH AU"> Zhou </phoneme></s>
</voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<phoneme alphabet='x-sampa' ph='he."lou'>hello</phoneme>
</voice>
</speak>
Lessico personalizzato
È possibile definire il modo in cui le singole entità (ad esempio società, un termine medico o un emoji) vengono lette in SSML usando il foneme e i sottoelementi. Per definire la modalità di lettura di più entità, creare un file lessico personalizzato strutturato XML. Caricare quindi il file XML lessico personalizzato e farvi riferimento con l'elemento SSML lexicon
.
Nota
Per un elenco delle impostazioni locali che supportano lessico personalizzato, vedere le note a piè di pagina nella tabella di supporto della lingua.
L'elemento lexicon
non è supportato dall'API Audio lungo. Per la sintesi vocale in formato lungo, usare invece l'API di sintesi batch (anteprima).
L'utilizzo degli lexicon
attributi dell'elemento è descritto nella tabella seguente.
Attributo | Descrizione | Obbligatorio o facoltativo |
---|---|---|
uri |
URI del file XML del lessico personalizzato accessibile pubblicamente con l'estensione .xml o .pls . L'uso di Archiviazione BLOB di Azure è consigliato ma non obbligatorio. Per altre informazioni sul file lessico personalizzato, vedere Lexicon Specification (PLS) Specification (PLS) Version 1.0 (Specifica del lessico di pronuncia versione 1.0). |
Richiesto |
Esempi di lessico personalizzato
I valori supportati per gli attributi dell'elemento lexicon
sono stati descritti in precedenza.
Dopo aver pubblicato il lessico personalizzato, è possibile farvi riferimento da SSML. Nell'esempio SSML seguente viene fatto riferimento a un lessico personalizzato caricato in https://www.example.com/customlexicon.xml
. Sono supportati url lessico da Archiviazione BLOB di Azure, Archiviazione advanced Servizi multimediali (AMS) e GitHub. Si noti tuttavia che altri URL pubblici potrebbero non essere compatibili.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="http://www.w3.org/2001/mstts"
xml:lang="en-US">
<voice name="en-US-AvaNeural">
<lexicon uri="https://www.example.com/customlexicon.xml"/>
BTW, we will be there probably at 8:00 tomorrow morning.
Could you help leave a message to Robert Benigni for me?
</voice>
</speak>
File lessico personalizzato
Per definire la modalità di lettura di più entità, è possibile definirle in un file XML lessico personalizzato con l'estensione .xml
o .pls
.
Nota
Il file lessico personalizzato è un documento XML valido, ma non può essere usato come documento SSML.
Ecco alcune limitazioni del file lessico personalizzato:
- Dimensioni file: le dimensioni personalizzate del file lessico sono limitate a un massimo di 100 KB. Se le dimensioni del file superano il limite di 100 KB, la richiesta di sintesi non riesce. È possibile suddividere il lessico in più lessici e includerli in SSML se le dimensioni del file superano 100 KB.
- Aggiornamento della cache lessico: il lessico personalizzato viene memorizzato nella cache con l'URI come chiave per la sintesi vocale al primo caricamento. Il lessico con lo stesso URI non viene ricaricato entro 15 minuti, quindi la modifica del lessico personalizzato deve attendere al massimo 15 minuti per rendere effettiva la modifica del lessico personalizzato.
Gli elementi e gli attributi supportati di un file XML lessico personalizzato sono descritti nella specifica del lessico della pronuncia (PLS) versione 1.0. Ecco alcuni esempi di elementi e attributi supportati:
- L'elemento
lexicon
contiene almeno unlexeme
elemento. Lessico contiene l'attributo necessarioxml:lang
per indicare le impostazioni locali per cui deve essere applicato. Un lessico personalizzato è limitato a un'impostazione locale per impostazione predefinita, quindi se lo si applica per impostazioni locali diverse, non funziona. L'elementolexicon
ha anche unalphabet
attributo per indicare l'alfabeto usato nel lessico. I valori possibili sonoipa
ex-microsoft-sapi
. - Ogni
lexeme
elemento contiene almeno ungrapheme
elemento e uno o piùgrapheme
elementi ,alias
ephoneme
. L'elementolexeme
fa distinzione tra maiuscole e minuscole nel lessico personalizzato. Ad esempio, se si specifica solo un fonema perlexeme
"Hello", non funziona per "lexeme
hello". - L'elemento
grapheme
contiene testo che descrive l'ortografia. - Gli
alias
elementi vengono usati per indicare la pronuncia di un acronimo o di un termine abbreviato. - L'elemento
phoneme
fornisce testo che descrive come viene pronunciato l'oggettolexeme
. Il limite sillabe è '.' nell'alfabeto IPA. L'elementophoneme
non può contenere spazi vuoti quando si usa l'alfabeto IPA. - Quando gli
alias
elementi ephoneme
vengono forniti con lo stessographeme
elemento,alias
ha priorità più alta.
Microsoft fornisce uno strumento di convalida per il lessico personalizzato che consente di trovare errori (con messaggi di errore dettagliati) nel file lessico personalizzato. È consigliabile usare lo strumento prima di usare il file XML del lessico personalizzato nell'ambiente di produzione con il servizio Voce.
Esempi di file lessico personalizzati
L'esempio XML seguente (non SSML) sarebbe contenuto in un file lessico .xml
personalizzato. Quando si usa questo lessico personalizzato, "BTW" viene letto come "A proposito". "Benigni" viene letto con l'IPA fornito "bɛːnji".
<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="ipa" xml:lang="en-US">
<lexeme>
<grapheme>BTW</grapheme>
<alias>By the way</alias>
</lexeme>
<lexeme>
<grapheme>Benigni</grapheme>
<phoneme>bɛˈniːnji</phoneme>
</lexeme>
<lexeme>
<grapheme>😀</grapheme>
<alias>test emoji</alias>
</lexeme>
</lexicon>
Non è possibile impostare direttamente la pronuncia di una frase usando il lessico personalizzato. Se è necessario impostare la pronuncia per un acronimo o un termine abbreviato, specificare prima un alias
e quindi associare l'oggetto phoneme
a tale alias
. Ad esempio:
<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="ipa" xml:lang="en-US">
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>ScotlandMV</alias>
</lexeme>
<lexeme>
<grapheme>ScotlandMV</grapheme>
<phoneme>ˈskɒtlənd.ˈmiːdiəm.weɪv</phoneme>
</lexeme>
</lexicon>
È anche possibile specificare direttamente il termine previsto alias
per l'acronimo o abbreviato. Ad esempio:
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>Scotland Media Wave</alias>
</lexeme>
Gli esempi di file XML del lessico personalizzato precedenti usano l'alfabeto IPA, noto anche come set di telefoni IPA. È consigliabile usare l'IPA perché è lo standard internazionale. Per alcuni caratteri IPA, sono la versione "precomposta" e "scomposta" quando vengono rappresentate con Unicode. Il lessico personalizzato supporta solo l'unicode scomposto.
Il servizio Voce definisce un set fonetico per queste impostazioni locali: en-US
, fr-FR
, de-DE
, es-ES
ja-JP
, zh-CN
, , zh-HK
, e zh-TW
. Per altre informazioni sull'alfabeto fonetico del servizio Voce dettagliato, vedere i set fonetici del servizio Voce.
È possibile usare come x-microsoft-sapi
valore per l'attributo alphabet
con lessico personalizzati, come illustrato di seguito:
<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="x-microsoft-sapi" xml:lang="en-US">
<lexeme>
<grapheme>BTW</grapheme>
<alias> By the way </alias>
</lexeme>
<lexeme>
<grapheme> Benigni </grapheme>
<phoneme> b eh 1 - n iy - n y iy </phoneme>
</lexeme>
</lexicon>
elemento say-as
L'elemento say-as
indica il tipo di contenuto, ad esempio numero o data, del testo dell'elemento. Questo elemento fornisce indicazioni al motore di sintesi vocale su come pronunciare il testo.
L'utilizzo degli say-as
attributi dell'elemento è descritto nella tabella seguente.
Attributo | Descrizione | Obbligatorio o facoltativo |
---|---|---|
interpret-as |
Indica il tipo di contenuto del testo di un elemento. Per un elenco dei tipi, vedere la tabella seguente. | Richiesto |
format |
Fornisce informazioni aggiuntive sulla formattazione precisa del testo dell'elemento per i tipi di contenuto che potrebbero avere formati ambigui. SSML definisce i formati per i tipi di contenuto che li usano. Vedi la tabella seguente. | Facoltativo |
detail |
Indica il livello di dettaglio da pronunciare. Ad esempio, questo attributo potrebbe richiedere che il motore di sintesi vocale pronuncia segni di punteggiatura. Non sono definiti valori standard per detail . |
Facoltativo |
Per gli attributi e format
sono supportati i interpret-as
tipi di contenuto seguenti. Includere l'attributo format
solo se format
la colonna non è vuota in questa tabella.
Nota
I characters
valori e spell-out
per l'attributo interpret-as
sono supportati per tutte le impostazioni locali di sintesi vocale.
Altri interpret-as
valori di attributo sono supportati per tutte le impostazioni locali delle lingue seguenti: arabo, catalano, cinese, danese, olandese, inglese, francese, finlandese, tedesco, hindi, italiano, giapponese, coreano, norvegese, polacco, portoghese, russo, spagnolo e svedese.
interpret-as | format | Interpretazione |
---|---|---|
characters , spell-out |
Il testo viene pronunciato come singole lettere (specificato). Il motore di sintesi vocale pronuncia:<say-as interpret-as="characters">test</say-as> Come "T E S T". |
|
cardinal , number |
None | Il testo viene pronunciato come numero cardinale. Il motore di sintesi vocale pronuncia:There are <say-as interpret-as="cardinal">10</say-as> options Come "Ci sono dieci opzioni". |
ordinal |
None | Il testo viene pronunciato come numero ordinale. Il motore di sintesi vocale pronuncia:Select the <say-as interpret-as="ordinal">3rd</say-as> option Come "Selezionare la terza opzione". |
number_digit |
None | Il testo viene pronunciato come sequenza di singole cifre. Il motore di sintesi vocale pronuncia:<say-as interpret-as="number_digit">123456789</say-as> Come "1 2 3 4 5 6 7 8 9". |
fraction |
None | Il testo viene pronunciato come numero frazionaria. Il motore di sintesi vocale pronuncia:<say-as interpret-as="fraction">3/8</say-as> of an inch Come "tre ottavi di pollice". |
date |
dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y | Il testo viene pronunciato come data. L'attributo format specifica il formato della data (d=day, m=month e y=year). Il motore di sintesi vocale pronuncia:Today is <say-as interpret-as="date">10-12-2016</say-as> Come "Oggi è il dodicesimo ottobre duemila sedici". Pronuncia: Today is <say-as interpret-as="date" format="dmy">10-12-2016</say-as> Come "Oggi è dicembre diecimila sedici". |
time |
hms12, hms24 | Il testo viene pronunciato come ora. L'attributo format specifica se l'ora viene specificata usando un orologio di 12 ore (hms12) o un orologio di 24 ore (hms24). Usare due punti per separare i numeri che rappresentano ore, minuti e secondi. Ecco alcuni esempi di ora validi: 12:35, 1:14:32, 08:15 e 02:50:45. Il motore di sintesi vocale pronuncia:The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as> Come "Il treno parte a quattro M." |
duration |
hms, hm, ms | Il testo viene pronunciato come durata. L'attributo format specifica il formato della durata (h=hour, m=minute e s=second). Il motore di sintesi vocale pronuncia:<say-as interpret-as="duration">01:18:30</say-as> Come "un'ora diciotto minuti e trenta secondi". Pronuncia: <say-as interpret-as="duration" format="ms">01:18</say-as> Come "un minuto e diciotto secondi". Questo tag è supportato solo in inglese e spagnolo. |
telephone |
None | Il testo viene pronunciato come numero di telefono. Il motore di sintesi vocale pronuncia:The number is <say-as interpret-as="telephone">(888) 555-1212</say-as> Come "Il mio numero è codice area otto otto otto cinque cinque cinque cinque uno due". |
currency |
None | Il testo viene pronunciato come valuta. Il motore di sintesi vocale pronuncia:<say-as interpret-as="currency">99.9 USD</say-as> Come "nove-nove dollari statunitensi e novanta centesimi". |
address |
None | Il testo viene pronunciato come indirizzo. Il motore di sintesi vocale pronuncia:I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as> "Sono a 150th Court Northeast Redmond Washington". |
name |
None | Il testo viene pronunciato come nome di una persona. Il motore di sintesi vocale pronuncia:<say-as interpret-as="name">ED</say-as> Come [æd]. Nei nomi cinesi alcuni caratteri si pronunciano in modo diverso quando appaiono in un nome di famiglia. Ad esempio, il motore di sintesi vocale dice 仇 in <say-as interpret-as="name">仇先生</say-as> Come [qiú] invece di [chóu]. |
esempi say-as
I valori supportati per gli attributi dell'elemento say-as
sono stati descritti in precedenza.
Il motore di sintesi vocale parla l'esempio seguente come "La prima richiesta è stata per una stanza il diciannovesimo ottobre 2000 con arrivo anticipato a dodici trentacinque PM".
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaMultilingualNeural">
<p>
Your <say-as interpret-as="ordinal"> 1st </say-as> request was for <say-as interpret-as="cardinal"> 1 </say-as> room
on <say-as interpret-as="date" format="mdy"> 10/19/2010 </say-as>, with early arrival at <say-as interpret-as="time" format="hms12"> 12:35pm </say-as>.
</p>
</voice>
</speak>
sottoelemento
Usare l'elemento sub
per indicare che il valore di testo dell'attributo alias deve essere pronunciato anziché il testo racchiuso dell'elemento. In questo modo, SSML contiene sia una forma parlata che scritta.
L'utilizzo degli sub
attributi dell'elemento è descritto nella tabella seguente.
Attributo | Descrizione | Obbligatorio o facoltativo |
---|---|---|
alias |
Valore di testo che deve essere pronunciato anziché il testo racchiuso dell'elemento. | Richiesto |
esempi secondari
I valori supportati per gli attributi dell'elemento sub
sono stati descritti in precedenza.
Il motore di sintesi vocale parla l'esempio seguente come "World Wide Web Consortium".
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaMultilingualNeural">
<sub alias="World Wide Web Consortium">W3C</sub>
</voice>
</speak>
Pronuncia con MathML
MathML (Mathematical Markup Language) è un linguaggio di markup conforme a XML che descrive il contenuto matematico e la struttura. Il servizio Voce può usare MathML come testo di input per pronunciare correttamente le notazioni matematiche nell'audio di output.
Nota
Gli elementi MathML (tag) sono attualmente supportati nelle impostazioni locali seguenti: de-DE
, en-AU
en-GB
, en-US
, , es-ES
es-MX
, fr-CA
fr-FR
ja-JP
ko-KR
it-IT
, pt-BR
e .zh-CN
Tutti gli elementi delle specifiche MathML 2.0 e MathML 3.0 sono supportati, ad eccezione degli elementi MathML 3.0 Elementary Math .
Prendere nota di questi elementi e attributi MathML:
- L'attributo
xmlns
in<math xmlns="http://www.w3.org/1998/Math/MathML">
è facoltativo. - Gli
semantics
elementi ,annotation
eannotation-xml
non remettono il riconoscimento vocale, quindi vengono ignorati. - Se un elemento non viene riconosciuto, viene ignorato e gli elementi figlio al suo interno vengono comunque elaborati.
La sintassi XML non supporta le entità MathML, pertanto è necessario usare i caratteri Unicode corrispondenti per rappresentare le entità, ad esempio, l'entità ©
deve essere rappresentata dai relativi caratteri ©
Unicode, in caso contrario si verifica un errore.
Esempi di MathML
L'output di sintesi vocale per questo esempio è "un quadrato più b quadrato è uguale a c quadrato".
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='http://www.w3.org/2001/mstts' xml:lang='en-US'>
<voice name='en-US-JennyNeural'>
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<msup>
<mi>a</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mi>b</mi>
<mn>2</mn>
</msup>
<mo>=</mo>
<msup>
<mi>c</mi>
<mn>2</mn>
</msup>
</math>
</voice>
</speak>