Výslovnost pomocí SSML
Pomocí jazyka SSML (Speech Synthesis Markup Language) s textem můžete určit, jak se řeč vyslovuje. SSML můžete například použít s fony a vlastní lexikon ke zlepšení výslovnosti. SSML můžete také použít k definování výrazu slova nebo matematického výrazu.
Podrobnosti o použití prvků SSML ke zlepšení výslovnosti najdete v následujících částech. Další informace o syntaxi SSML najdete v tématu Struktura a události dokumentu SSML.
phoneme – element
Prvek phoneme
se používá pro fonetickou výslovnost v dokumentech SSML. Vždy poskytovat lidskou čitelnost řeči jako záložní.
Fonetické abecedy se skládají z telefonů, které jsou tvořeny písmeny, číslicemi nebo znaky, někdy v kombinaci. Každý telefon popisuje jedinečný zvuk řeči. Fonetická abeceda je na rozdíl od latinky, kde jakékoli písmeno může představovat více mluvených zvuků. Vezměte v úvahu různé en-US
výslovnosti písmena "c" ve slovech "candy" a "přestat" nebo různé výslovnosti kombinace písmen "th" ve slovech "věc" a "ty".
Poznámka:
Seznam národních prostředí, která podporují fony, najdete v tabulce podpory jazyků poznámky pod čarou.
phoneme
Použití atributů elementu je popsáno v následující tabulce.
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
alphabet |
Fonetická abeceda, která se má použít při syntetizaci výslovnosti řetězce v atributu ph . Řetězec, který určuje abecedu, musí být zadán malými písmeny. Následující možnosti jsou možné abecedy, které můžete zadat:
Abeceda se vztahuje pouze na phoneme prvek. |
Volitelné |
ph |
Řetězec obsahující telefony, které určují výslovnost slova v phoneme prvku. Pokud zadaný řetězec obsahuje nerozpoznané telefony, text na řeč odmítne celý dokument SSML a nevygeneruje žádný výstup řeči zadaný v dokumentu.Chcete-li ipa zdůraznit jednu slabiku umístěním symbolu stresu před tímto slabikem, musíte označit všechny slabiky pro slovo. Nebo jinak, slabika před tímto stresovým symbolem je stresována. Pokud sapi chcete zdůraznit jednu slabiku, musíte za tuto slabiku umístit symbol stresu, zda jsou označeny všechny slabiky. |
Požaduje se |
příklady telefonního motivu
Podporované hodnoty atributů elementu phoneme
byly popsány dříve. V prvníchdvouch ph="tə.ˈmeɪ.toʊ"
ph="təmeɪˈtoʊ"
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>
Vlastní lexikon
V SSML můžete definovat, jak se v SSML čtou jednotlivé entity (například společnost, lékařský termín nebo emoji). Pokud chcete definovat, jak se čte více entit, vytvořte strukturovaný vlastní soubor lexicon XML. Pak nahrajete vlastní soubor LEXICON XML a na něj odkazujete pomocí elementu SSML lexicon
.
Poznámka:
Seznam národních prostředí, která podporují vlastní lexikon, najdete v tabulce podpory jazyků poznámky pod čarou.
Rozhraní lexicon
API Long Audio nepodporuje prvek. U dlouhého textu na řeč použijte místo toho rozhraní API pro dávkovou syntézu (Preview).
lexicon
Použití atributů elementu je popsáno v následující tabulce.
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
uri |
Identifikátor URI veřejně přístupného vlastního souboru LEXICON XML s příponou nebo .pls příponou .xml souboru. Použití služby Azure Blob Storage se doporučuje, ale nevyžaduje se. Další informace o vlastním souboru lexicon naleznete v tématu Výslovnost Lexicon Specification (PLS) verze 1.0. |
Požaduje se |
Vlastní příklady lexikonu
Podporované hodnoty atributů elementu lexicon
byly popsány dříve.
Po publikování vlastního slovníku na něj můžete odkazovat z vašeho SSML. Následující příklad SSML odkazuje na vlastní lexikon, který byl odeslán do https://www.example.com/customlexicon.xml
. Podporujeme adresy URL lexiconu ze služby Azure Blob Storage, Advanced Media Services (AMS) Storage a GitHubu. Upozorňujeme však, že jiné veřejné adresy URL nemusí být kompatibilní.
<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>
Vlastní soubor lexiconu
Pokud chcete definovat, jak se čte více entit, můžete je definovat ve vlastním souboru LEXICON XML s příponou nebo .pls
příponou .xml
souboru.
Poznámka:
Vlastní soubor lexiconu je platný dokument XML, ale nelze jej použít jako dokument SSML.
Tady jsou některá omezení vlastního souboru lexiconu:
- Velikost souboru: Vlastní velikost souboru lexiconu je omezena na maximálně 100 kB. Pokud velikost souboru překročí limit 100 kB, žádost o syntézu selže. Lexikon můžete rozdělit na více lexikonů a zahrnout je do SSML, pokud velikost souboru přesahuje 100 kB.
- Aktualizace mezipaměti Lexicon: Vlastní lexicon se ukládá do mezipaměti s identifikátorem URI jako klíčem u textu na řeč při prvním načtení. Lexikon se stejným identifikátorem URI se nenačte během 15 minut, takže změna vlastního slovníku musí maximálně počkat 15 minut, aby se projevila.
Podporované prvky a atributy vlastního souboru lexicon XML jsou popsány v výslovnosti Lexicon Specification (PLS) verze 1.0. Tady je několik příkladů podporovaných prvků a atributů:
- Prvek
lexicon
obsahuje alespoň jedenlexeme
prvek. Lexicon obsahuje nezbytnýxml:lang
atribut, který označuje, pro které národní prostředí má být použito. Jeden vlastní lexikon je omezen na jedno národní prostředí podle návrhu, takže pokud ho použijete pro jiné národní prostředí, nefunguje. Prveklexicon
máalphabet
také atribut označující abecedu použitou v lexikonu. Hodnoty pole jsouipa
ax-microsoft-sapi
. - Každý
lexeme
prvek obsahuje alespoň jedengrapheme
prvek a jeden nebo vícegrapheme
,alias
aphoneme
prvky. U elementulexeme
se rozlišují malá a velká písmena ve vlastním lexikonu. Pokud například zadáte jenom fonát prolexeme
"Hello", nebude fungovat prolexeme
"hello". - Prvek
grapheme
obsahuje text, který popisuje orthografii. - Prvky
alias
se používají k označení výslovnosti zkratky nebo zkráceného termínu. - Element
phoneme
poskytuje text, který popisuje, jaklexeme
se vyslovuje. Slabika je v abecedě IPA .. Prvekphoneme
nemůže obsahovat prázdné znaky při použití abecedy IPA. - Pokud jsou prvky
phoneme
alias
k dispozici se stejnýmgrapheme
prvkem,alias
mají vyšší prioritu.
Microsoft poskytuje ověřovací nástroj pro vlastní lexikon , který vám pomůže najít chyby (s podrobnými chybovými zprávami) ve vlastním souboru slovníku. Použití nástroje se doporučuje před použitím vlastního souboru LEXICON XML v produkčním prostředí se službou Speech.
Příklady vlastních souborů lexicon
Následující příklad XML (nikoli SSML) by byl obsažen ve vlastním souboru lexicon .xml
. Když použijete tento vlastní lexikon, "BTW" se přečte jako "Mimochodem". "Benigni" je přečteno s poskytnutou IPA "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>
Výslovnost fráze nejde nastavit přímo pomocí vlastního slovníku. Pokud potřebujete nastavit výslovnost pro zkratku nebo zkrácený termín, nejprve zadejte a alias
pak přidružte k phoneme
tomu alias
. Příklad:
<?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>
Můžete také přímo zadat svůj očekávaný alias
výraz pro zkratku nebo zkrácený termín. Příklad:
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>Scotland Media Wave</alias>
</lexeme>
Předchozí příklady vlastního souboru LEXICON XML používají abecedu IPA, která se také označuje jako sada ipa pro telefon. Doporučujeme použít IPA, protože se jedná o mezinárodní standard. U některých znaků IPA se jedná o předkomposovanou a dekomposovanou verzi, když jsou reprezentované kódem Unicode. Vlastní lexikon podporuje pouze rozloženou sadu Unicode.
Služba Speech definuje fonetickou sadu pro tato národní prostředí: en-US
, fr-FR
, de-DE
, , ja-JP
es-ES
, , zh-CN
zh-HK
a zh-TW
. Další informace o podrobné fonetické abecedě služby Speech najdete v fonetických sadách služby Speech.
Jako hodnotu atributu x-microsoft-sapi
alphabet
můžete použít vlastní lexikony, jak je znázorněno zde:
<?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>
say-as – element
Prvek say-as
označuje typ obsahu, například číslo nebo datum, textu elementu. Tento prvek poskytuje pokyny pro modul syntézy řeči o tom, jak vyslovovat text.
say-as
Použití atributů elementu je popsáno v následující tabulce.
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
interpret-as |
Označuje typ obsahu textu elementu. Seznam typů najdete v následující tabulce. | Požaduje se |
format |
Poskytuje další informace o přesném formátování textu elementu pro typy obsahu, které mohou mít nejednoznačné formáty. SSML definuje formáty pro typy obsahu, které je používají. Viz následující tabulka. | Volitelné |
detail |
Označuje úroveň podrobností, které se mají vyslovovat. Tento atribut může například požadovat, aby modul syntézy řeči vyslovuje interpunkční znaménka. Neexistují žádné standardní hodnoty definované pro detail . |
Volitelné |
Pro atributy jsou podporovány interpret-as
format
následující typy obsahu. format
Atribut zahrňte pouze v případě, že format
sloupec není v této tabulce prázdný.
Poznámka:
Pro characters
všechny národní prostředí řeči na řeč jsou podporovány hodnoty a spell-out
hodnoty atributuinterpret-as
.
Ostatní interpret-as
hodnoty atributů jsou podporovány pro všechny národní prostředí následujících jazyků: arabština, katalánština, čínština, dánština, holandština, angličtina, francouzština, finština, němčina, hindština, italština, japonština, korejština, norština, polština, portugalština, ruština, španělština a švédština.
interpretovat jako | format | Interpretace |
---|---|---|
characters , spell-out |
Text se mluví jako jednotlivá písmena (napsaná). Modul syntézy řeči vyslovuje:<say-as interpret-as="characters">test</say-as> Jako "T E S T". |
|
cardinal , number |
Nic | Text je mluvený jako kardinalní číslo. Modul syntézy řeči vyslovuje:There are <say-as interpret-as="cardinal">10</say-as> options Jako "Existuje deset možností.". |
ordinal |
Nic | Text je mluvený jako pořadové číslo. Modul syntézy řeči vyslovuje:Select the <say-as interpret-as="ordinal">3rd</say-as> option Jako "Vybrat třetí možnost". |
number_digit |
Nic | Text je mluvený jako posloupnost jednotlivých číslic. Modul syntézy řeči vyslovuje:<say-as interpret-as="number_digit">123456789</say-as> Jako "1 2 3 4 5 6 7 8 9." |
fraction |
Nic | Text je mluvený jako desetinné číslo. Modul syntézy řeči vyslovuje:<say-as interpret-as="fraction">3/8</say-as> of an inch Jako "tři osmé palce". |
date |
dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y | Text se mluví jako datum. Atribut format určuje formát data (d=day, m=month a y=year). Modul syntézy řeči vyslovuje:Today is <say-as interpret-as="date">10-12-2016</say-as> Jako "Dnes je říjen dvanáctý dva tisíce šestnáct." Vyslovuje: Today is <say-as interpret-as="date" format="dmy">10-12-2016</say-as> Jako "Dnes je prosinec desátý dva tisíce šestnáct." |
time |
hms12, hms24 | Text je mluvený jako čas. Atribut format určuje, zda je čas určen pomocí 12hodinových hodin (hms12) nebo 24hodinových hodin (hms24). Dvojtečka slouží k oddělení čísel představujících hodiny, minuty a sekundy. Tady je několik platných příkladů času: 12:35, 1:14:32, 08:15 a 02:50:45. Modul syntézy řeči vyslovuje:The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as> Jak "Vlak odjíždí ve čtyřech A M." |
duration |
hms, hm, ms | Text je mluvený jako doba trvání. Atribut format určuje formát doby trvání (h=hour, m=minute a s=second). Modul syntézy řeči vyslovuje:<say-as interpret-as="duration">01:18:30</say-as> Jako "1 hodina 18 minut a třicet sekund". Vyslovuje: <say-as interpret-as="duration" format="ms">01:18</say-as> Jako "jedna minuta a 18 sekund". Tato značka je podporována pouze v angličtině a španělštině. |
telephone |
Nic | Text se mluví jako telefonní číslo. Modul syntézy řeči vyslovuje:The number is <say-as interpret-as="telephone">(888) 555-1212</say-as> Jako "Moje číslo je směrové číslo osm osm 8 pět pět pět jeden dva dva dva." |
currency |
Nic | Text se mluví jako měna. Modul syntézy řeči vyslovuje:<say-as interpret-as="currency">99.9 USD</say-as> Jako "devadesát devět amerických dolarů a devadesát centů". |
address |
Nic | Text je mluvený jako adresa. Modul syntézy řeči vyslovuje:I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as> Jako "Jsem na 150th Court Northeast Redmond Washington." |
name |
Nic | Text se mluví jako jméno osoby. Modul syntézy řeči vyslovuje:<say-as interpret-as="name">ED</say-as> Jako [æd]. V čínských názvech se některé znaky vyslovují jinak, když se objeví v rodinném jménu. Například modul syntézy řeči říká 仇 v <say-as interpret-as="name">仇先生</say-as> Jako [qiú] místo [chóu]. |
Příklady řekněme jako
Podporované hodnoty atributů elementu say-as
byly popsány dříve.
Modul syntézy řeči hovoří v následujícím příkladu jako "Váš první požadavek byl na jednu místnost v 15. říjnu devátého desátého s počátečním příjezdem v dvanácti pěti 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>
sub – element
Pomocí elementu sub
označte, že textová hodnota atributu aliasu by měla být vyslovována místo ohraničeného textu elementu. Tímto způsobem obsahuje SSML mluvený i psaný formulář.
sub
Použití atributů elementu je popsáno v následující tabulce.
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
alias |
Textová hodnota, která by měla být vyslovována místo uzavřeného textu elementu. | Požaduje se |
dílčí příklady
Podporované hodnoty atributů elementu sub
byly popsány dříve.
Modul syntézy řeči hovoří v následujícím příkladu jako "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>
Výslovnost pomocí MathML
Math Markup Language (MathML) je jazyk pro revize kompatibilní s jazykem XML, který popisuje matematický obsah a strukturu. Služba Speech může jako vstupní text použít MathML k správnému vyslovování matematických notací ve výstupním zvuku.
Poznámka:
Elementy MathML (značky) jsou v současné době podporovány v následujících národních prostředích: de-DE
, en-AU
, , en-US
en-GB
, es-MX
es-ES
, fr-CA
, , fr-FR
, ja-JP
it-IT
, , ko-KR
pt-BR
a .zh-CN
Všechny prvky ze specifikací MathML 2.0 a MathML 3.0 jsou podporovány s výjimkou elementů MathML 3.0 Elementary Mathy .
Poznamenejte si tyto elementy a atributy MathML:
- Atribut
xmlns
je<math xmlns="http://www.w3.org/1998/Math/MathML">
nepovinný. - Funkce
semantics
,annotation
aannotation-xml
elementy nemají výstup řeči, takže jsou ignorovány. - Pokud se prvek nerozpozná, ignoruje se a podřízené prvky v něm se stále zpracovávají.
Syntaxe XML nepodporuje entity MathML, takže musíte použít odpovídající znaky Unicode k reprezentaci entit, například entita ©
by měla být reprezentována jeho znaky ©
Unicode , jinak dojde k chybě.
Příklady pro MathML
Text na výstup řeči v tomto příkladu je "čtvercový plus b čtvercový rovna c squared".
<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>