Zlepšení syntézy pomocí jazyka SSML (Speech Synthesis Markup Language)
Speech Synthesis Markup Language (SSML) je jazyk značek založený na jazyce XML, který vývojářům umožňuje určit, jak se vstupní text převede na syntetizovaný řeč pomocí převodu textu na řeč. V porovnání s prostým textem umožňuje jazyk SSML vývojářům vyladit výšku hlasu, výslovnost, rychlost řeči, hlasitost a další aspekty výstupu převodu textu na řeč. Normální interpunkce, například pauzy za čárkami nebo použití správné intonace v případě, že věta končí otazníkem, se zpracovává automaticky.
Implementace služby Speech pro SSML je založená na jazyku pro syntézu řeči ve verzi 1.0 konsorcia World Wide Web Consortium.
Důležité
Čínské znaky se počítají jako dva znaky pro fakturaci, včetně Kanji používaného v japonštině, Hanja používané v korejštině nebo Hanzi v jiných jazycích. Další informace najdete na stránce s cenami.
Předem připravené neurální hlasy a vlastní neurální hlasy
Použijte lidský neurální hlas nebo vytvořte vlastní neurální hlas jedinečný pro váš produkt nebo značku. Úplný seznam podporovaných jazyků, národních prostředí a hlasů najdete v tématu Podpora jazyka. Další informace o použití předem připraveného neurálního hlasu a vlastního neurálního hlasu najdete v přehledu převodu textu na řeč.
Poznámka
Pomocí tohoto webu pro převod textu na řeč můžete slyšet hlasy v různých stylech a rozsazích.
Speciální znaky
Pokud používáte SSML, mějte na paměti, že speciální znaky, jako jsou uvozovky, apostrofy a závorky, musí být řídicí. Další informace naleznete v tématu XML (Extensible Markup Language) 1.0: Příloha D.
Podporované elementy SSML
Každý dokument SSML se vytvoří s prvky SSML (nebo značkami). Tyto prvky slouží k úpravě rozteče, prosody, hlasitosti a dalších. Následující části podrobně popisuje, jak se jednotlivé prvky používají a kdy je prvek povinný nebo volitelný.
Důležité
Nezapomeňte použít dvojité uvozovky kolem hodnot atributů. Standardy pro dobře vytvořené, platné XML vyžaduje, aby hodnoty atributů byly uzavřeny do dvojitých uvozovek. Například <prosody volume="90">
je dobře vytvořený, platný prvek, ale <prosody volume=90>
není. SSML nemusí rozpoznat hodnoty atributů, které nejsou v uvozovkách.
Vytvoření dokumentu SSML
Element speak
je kořenový prvek. Vyžaduje se pro všechny dokumenty SSML. Prvek speak
obsahuje důležité informace, jako je verze, jazyk a definice slovníku značek.
Syntax
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>
Atributy
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
version |
Označuje verzi specifikace SSML použitou k interpretaci revize dokumentu. Aktuální verze je 1.0. | Vyžadováno |
xml:lang |
Určuje jazyk kořenového dokumentu. Hodnota může obsahovat malá písmena, dvoumísmenný kód jazyka, například en . Nebo může hodnota obsahovat kód jazyka a velká písmena země/oblast, například en-US . |
Vyžadováno |
xmlns |
Určuje identifikátor URI dokumentu, který definuje slovník značek (typy prvků a názvy atributů) dokumentu SSML. Aktuální identifikátor URI je http://www.w3.org/2001/10/synthesis. | Vyžadováno |
Volba hlasu pro převod textu na řeč
Prvek voice
je povinný. Slouží k určení hlasu, který se používá pro převod textu na řeč.
Syntax
<voice name="string">
This text will get converted into synthesized speech.
</voice>
Atribut
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
name |
Identifikuje hlas používaný pro výstup textu na řeč. Úplný seznam podporovaných hlasů najdete v tématu Podpora jazyka. | Vyžadováno |
Příklad
Poznámka
Tento příklad používá en-US-JennyNeural
hlas. Úplný seznam podporovaných hlasů najdete v tématu Podpora jazyka.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
This is the text that is spoken.
</voice>
</speak>
Použití více hlasů
V rámci elementu speak
můžete zadat více hlasů pro výstup převodu textu na řeč. Tyto hlasy můžou být v různých jazycích. Pro každý hlas musí být text zabalený do elementu voice
.
Atribut
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
name |
Identifikuje hlas používaný pro výstup textu na řeč. Úplný seznam podporovaných hlasů najdete v tématu Podpora jazyka. | Vyžadováno |
Příklad
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
Good morning!
</voice>
<voice name="en-US-ChristopherNeural">
Good morning to you too Jenny!
</voice>
</speak>
Úprava stylů řeči
Ve výchozím nastavení text-to-speech syntetizuje text pomocí neutrálního mluveného stylu pro neurální hlasy. Styl mluvení, stupeň stylu a roli můžete upravit na úrovni věty.
Styly, stupeň stylu a role jsou podporovány pro podmnožinu neurálních hlasů. Pokud se styl nebo role nepodporuje, služba používá výchozí neutrální řeč. Pokud chcete určit, jaké styly a role jsou podporovány pro každý hlas, použijte:
- Tabulka stylů a rolí hlasu
- Rozhraní API seznamu hlasu
- Portál pro vytváření zvukového obsahu bez kódu.
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
style |
Určuje styl mluvení. Styly mluvení jsou specifické pro hlas. | Vyžaduje se, pokud upravíte styl mluvení pro neurální hlas. Pokud používáte mstts:express-as , musíte zadat styl. Pokud je zadaná neplatná hodnota, tento prvek se ignoruje. |
styledegree |
Určuje intenzitu stylu mluvení. Přijaté hodnoty: 0,01 až 2 včetně. Výchozí hodnota je 1, což znamená intenzitu předdefinovaného stylu. Minimální jednotka je 0,01, což vede k mírnému sklonu pro cílový styl. Výsledkem hodnoty 2 je zdvojnásobení výchozí intenzity stylu. | Nepovinný parametr. Pokud atribut nenastavíte style , styledegree atribut se ignoruje. Úpravy stupně stylu mluvení jsou podporovány pro čínské (mandarinské, zjednodušené) neurální hlasy. |
role |
Určuje mluvenou roli. Hlas funguje jako jiný věk a pohlaví, ale jméno hlasu se nezmění. | Nepovinný parametr. Úpravy rolí jsou podporovány pro tyto čínské (mandarínské, zjednodušené) neurální hlasy: zh-CN-XiaomoNeural , , zh-CN-XiaoxuanNeural , zh-CN-YunxiNeural a zh-CN-YunyeNeural . |
Styl
Tento prvek používáte mstts:express-as
k vyjádření emocí, jako je veselost, empatie a klid. Hlas můžete také optimalizovat pro různé scénáře, jako je zákaznický servis, newscast a hlasový asistent.
Syntax
<mstts:express-as style="string"></mstts:express-as>
Příklad
Tento fragment kódu SSML ukazuje, jak <mstts:express-as>
se prvek používá ke změně stylu mluvení na cheerful
.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<mstts:express-as style="cheerful">
That'd be just amazing!
</mstts:express-as>
</voice>
</speak>
Následující tabulka obsahuje popisy jednotlivých podporovaných stylů.
Styl | Popis |
---|---|
style="affectionate" |
Vyjadřuje teplý a milý tón s vyšší rozhodou a hlasovou energií. Mluvčí je ve stavu, ve které je upoutat pozornost naslouchacího procesu. Osobnost mluvčího je často endearing v přírodě. |
style="angry" |
Vyjadřuje naštvaný a neštvaný tón. |
style="assistant" |
Vyjadřuje teplé a uvolněné tóny pro digitální asistenty. |
style="calm" |
Vyjadřuje skvělý, shromážděný a složený postoj při mluvení. Tón, rozteč a prosody jsou v porovnání s jinými typy řeči jednotnější. |
style="chat" |
Vyjadřuje neformální a uvolněný tón. |
style="cheerful" |
Vyjadřuje pozitivní a šťastný tón. |
style="customerservice" |
Vyjadřuje přátelský a užitečný tón pro zákaznickou podporu. |
style="depressed" |
Vyjadřuje melancholic a despondent tón s nižším sklonem a energií. |
style="disgruntled" |
Vyjadřuje pohrdání a stěžuje si tón. Řeč této emoce zobrazuje nelibost a opovržení. |
style="embarrassed" |
Vyjadřuje nejistý a neútěšný tón, když se mluvčí cítí nepříjemně. |
style="empathetic" |
Vyjadřuje smysl pro péče a porozumění. |
style="envious" |
Vyjadřuje tón obdivu, když si přejete něco, co má někdo jiný. |
style="excited" |
Vyjadřuje upbeat a doufáme tón. Zní to, že se děje něco skvělého a reproduktor je opravdu šťastný o tom. |
style="fearful" |
Vyjadřuje strach a nervózní tón, s vyšší výškou, vyšší hlasovou energií a rychlejší rychlostí. Mluvčí je ve stavu napětí a unease. |
style="friendly" |
Vyjadřuje příjemný, pozvaný a teplý tón. Zní to upřímně a pečuje o to. |
style="gentle" |
Vyjadřuje mírnou, zdvořilou a příjemnou tónovou tón, s nižším sklonem a hlasovou energií. |
style="hopeful" |
Vyjadřuje teplé tóny a tóny. Zní to jako něco dobrého, co se stane s reproduktorem. |
style="lyrical" |
Vyjadřuje emoce melodikickým a sentimentálním způsobem. |
style="narration-professional" |
Vyjadřuje profesionální, objektivní tón pro čtení obsahu. |
style="narration-relaxed" |
Vyjádřete uklidňující a melodickou tón pro čtení obsahu. |
style="newscast" |
Vyjadřuje formální a profesionální tón pro předčítání zpráv. |
style="newscast-casual" |
Vyjadřuje univerzální a neformální tón pro obecné doručování zpráv. |
style="newscast-formal" |
Vyjadřuje formální, sebevědomý a autoritativní tón pro doručování zpráv. |
style="sad" |
Vyjadřuje smutku. |
style="serious" |
Vyjadřuje striktní a příkazový tón. Reproduktor často zní ztužlejší a mnohem méně uvolněný s pevnou četností. |
style="shouting" |
Mluví jako z daleko vzdáleného nebo vnějšího prostředí a aby se jasně slyšelo |
style="whispering" |
Mluví velmi jemně a jemný zvuk. |
style="terrified" |
Vyjadřuje velmi děsný tón s rychlejším tempem a zatřesením hlasu. Zní to, že mluvčí je nechtěný a šílený stav. |
style="unfriendly" |
Vyjadřuje chlad a nechutný tón. |
Stupeň stylu
Intenzita stylu mluvení se dá upravit tak, aby lépe vyhovovala vašemu případu použití. Pomocí atributu styledegree
určíte silnější nebo měkčí styl, aby se řeč vyjadřovala nebo ztlumila. Úpravy stupně stylu mluvení jsou podporovány pro čínské (mandarinské, zjednodušené) neurální hlasy.
Syntax
<mstts:express-as style="string" styledegree="value"></mstts:express-as>
Příklad
Tento fragment kódu SSML ukazuje, jak styledegree
se atribut používá ke změně intenzity stylu mluvení pro zh-CN-XiaomoNeural
.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-CN">
<voice name="zh-CN-XiaoxiaoNeural">
<mstts:express-as style="sad" styledegree="2">
快走吧,路上一定要注意安全,早去早回。
</mstts:express-as>
</voice>
</speak>
Role
Kromě úprav stylů mluvení a stupně stylu můžete také upravit role
parametr tak, aby hlas napodobuje jiný věk a pohlaví. Například mužský hlas může zvýšit tón a změnit intonaci na napodobování ženského hlasu, ale jméno hlasu se nezmění. Úpravy rolí jsou podporovány pro tyto čínské (mandarínské, zjednodušené) neurální hlasy:
zh-CN-XiaomoNeural
zh-CN-XiaoxuanNeural
zh-CN-YunxiNeural
zh-CN-YunyeNeural
Syntax
<mstts:express-as role="string" style="string"></mstts:express-as>
Příklad
Tento fragment kódu SSML ukazuje, jak role
se atribut používá ke změně role pro zh-CN-XiaomoNeural
.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-CN">
<voice name="zh-CN-XiaomoNeural">
女儿看见父亲走了进来,问道:
<mstts:express-as role="YoungAdultFemale" style="calm">
“您来的挺快的,怎么过来的?”
</mstts:express-as>
父亲放下手提包,说:
<mstts:express-as role="OlderAdultMale" style="calm">
“刚打车过来的,路上还挺顺畅。”
</mstts:express-as>
</voice>
</speak>
Následující tabulka obsahuje popisy jednotlivých podporovaných rolí.
Role | Popis |
---|---|
role="Girl" |
Hlas napodobuje holku. |
role="Boy" |
Hlas napodobuje chlapci. |
role="YoungAdultFemale" |
Hlas napodobuje mladé dospělé ženy. |
role="YoungAdultMale" |
Hlas napodobuje mladého dospělého muže. |
role="OlderAdultFemale" |
Hlas napodobuje starší dospělé ženy. |
role="OlderAdultMale" |
Hlas napodobuje staršího dospělého muže. |
role="SeniorFemale" |
Hlas napodobuje starší ženu. |
role="SeniorMale" |
Hlas napodobuje staršího muže. |
Úprava jazyků mluvení
Ve výchozím nastavení jsou všechny neurální hlasy plynulé ve vlastním jazyce a angličtině bez použití <lang xml:lang>
prvku. Pokud je například vstupní text v angličtině "Jsem nadšený z pokusu es-ES-ElviraNeural
o převod textu na řeč" a používáte hlas, text je mluvený v angličtině se španělským zvýrazněním. U většiny neurálních hlasů se v současné době nepodporuje nastavení konkrétního jazyka mluvení s elementem <lang xml:lang>
na úrovni věty nebo slova.
Jazyk mluvení pro en-US-JennyMultilingualNeural
neurální hlas můžete upravit na úrovni vět a na úrovni slova pomocí elementu <lang xml:lang>
. en-US-JennyMultilingualNeural
Neurální hlas je vícejazyčný ve 14 jazycích (například angličtina, španělština a čínština). Podporované jazyky jsou uvedeny v tabulce za <lang>
syntaxí a definicemi atributů.
Syntax
<lang xml:lang="string"></lang>
Atribut
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
lang |
Určuje jazyk, který má neurální hlas mluvit. | Vyžaduje se k úpravě jazyka mluvení pro neurální hlas. Pokud používáte lang xml:lang , musí se zadat národní prostředí. |
Poznámka
Prvek <lang xml:lang>
není kompatibilní s prosody
prvky a break
prvky. V tomto prvku nemůžete upravit pozastavení a prosody, jako je rozteč, obrys, rychlost nebo hlasitost.
Pomocí této tabulky můžete určit, které jazyky mluvení se podporují pro každý neurální hlas. Pokud hlas nepřemluví jazyk vstupního textu, služba Speech nevypíše syntetizovaný zvuk.
Hlas | Primární a výchozí národní prostředí | Další národní prostředí |
---|---|---|
en-US-JennyMultilingualNeural |
en-US |
de-DE , en-AU , en-CA , en-GB , es-ES , es-MX , fr-CA , fr-FR , it-IT , ja-JP , ko-KR , pt-BR , zh-CN |
Příklad
Primárním jazykem en-US-JennyMultilingualNeural
je en-US
. Je nutné zadat en-US
jako výchozí jazyk v rámci elementu speak
, zda je jazyk upraven jinde. Tento fragment kódu SSML ukazuje, jak mluvit de-DE
s neurálním hlasem en-US-JennyMultilingualNeural
.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-JennyMultilingualNeural">
<lang xml:lang="de-DE">
Wir freuen uns auf die Zusammenarbeit mit Ihnen!
</lang>
</voice>
</speak>
V rámci elementu můžete zadat více jazyků, včetně en-US
výstupu speak
převodu textu na řeč. U každého upraveného jazyka musí text odpovídat jazyku a musí být zabalený do elementu voice
. Tento fragment kódu SSML ukazuje, jak použít <lang xml:lang>
ke změně jazyků mluvení na es-MX
, en-US
a fr-FR
.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-JennyMultilingualNeural">
<lang xml:lang="es-MX">
¡Esperamos trabajar con usted!
</lang>
<lang xml:lang="en-US">
We look forward to working with you!
</lang>
<lang xml:lang="fr-FR">
Nous avons hâte de travailler avec vous!
</lang>
</voice>
</speak>
Přidání nebo odebrání konce nebo pozastavení
Pomocí elementu break
můžete vložit pozastavení nebo konce mezi slovy. Můžete ho také použít k tomu, abyste zabránili pozastavením, která se automaticky přidávají pomocí převodu textu na řeč.
Poznámka
Tento prvek slouží k přepsání výchozího chování převodu textu na řeč pro slovo nebo frázi, pokud syntetizovaná řeč pro toto slovo nebo fráze zní nepřirozeně. Nastavte strength
tak, aby none
se zabránilo prosodicím přerušení, které se automaticky vloží textem na řeč.
Syntax
<break strength="string" />
<break time="string" />
Atributy
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
strength |
Určuje relativní dobu trvání pozastavení pomocí jedné z následujících hodnot:
|
Volitelné |
time |
Určuje absolutní dobu pozastavení v sekundách nebo milisekundách (ms). Tato hodnota by měla být nastavena méně než 5 000 ms. Příklady platných hodnot jsou 2s a 500ms . |
Volitelné |
Sílu | Popis |
---|---|
Žádná, nebo pokud není zadaná žádná hodnota | 0 ms |
Slabá X | 250 ms |
Slabý | 500 ms |
Střední | 750 ms |
Silná | 1 000 ms |
X-strong | 1 250 ms |
Příklad
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
Welcome to Microsoft Cognitive Services <break time="100ms" /> Text-to-Speech API.
</voice>
</speak>
Přidání ticha
mstts:silence
Pomocí prvku můžete vložit pozastavení před nebo za text nebo mezi dvěma sousedními větami.
Poznámka
Rozdíl mezi mstts:silence
textem a break
je možné break
přidat libovolné místo v textu. Ticho funguje jenom na začátku nebo na konci vstupního textu nebo na hranici dvou sousedních vět.
Syntax
<mstts:silence type="string" value="string"/>
Atributy
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
type |
Určuje umístění ticha, které se má přidat:
|
Vyžadováno |
Value |
Určuje absolutní dobu pozastavení v sekundách nebo milisekundách. Tato hodnota by měla být nastavena méně než 5 000 ms. Příklady platných hodnot jsou 2s a 500ms . |
Vyžadováno |
Příklad
V tomto příkladu mtts:silence
se používá k přidání 200 ms mlčení mezi dvě věty.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<mstts:silence type="Sentenceboundary" value="200ms"/>
If we’re home schooling, the best we can do is roll with what each day brings and try to have fun along the way.
A good place to start is by trying out the slew of educational apps that are helping children stay happy and smash their schooling at the same time.
</voice>
</speak>
Zadání odstavců a vět
Prvky p
se s
používají k označení odstavců a vět, v uvedeném pořadí. Pokud tyto prvky chybí, text-to-speech automaticky určuje strukturu dokumentu SSML.
Prvek p
může obsahovat text a následující prvky: audio
, , break
say-as
prosody
sub
phoneme
mstts:express-as
a .s
Prvek s
může obsahovat text a následující prvky: audio
, break
, phoneme
, prosody
say-as
, , a mstts:express-as
sub
.
Syntax
<p></p>
<s></s>
Příklad
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<p>
<s>Introducing the sentence element.</s>
<s>Used to mark individual sentences.</s>
</p>
<p>
Another simple paragraph.
Sentence structure in this paragraph is not explicitly marked.
</p>
</voice>
</speak>
Zlepšení výslovnosti pomocí fonetů
Prvek ph
se používá pro fonetickou výslovnost v dokumentech SSML. Prvek ph
může obsahovat pouze text, ale žádné další prvky. Vždy poskytovat lidskou čitelný řeč jako náhradní.
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. To je na rozdíl od latinky, kde libovolné písmeno může představovat více mluvených zvuků. Vezměte v úvahu různé výslovnosti písmena "c" ve slovech "candy" a "zastavit" nebo různé výslovnosti písmena "th" ve slovech "věc" a "ty".
Poznámka
V tuto chvíli se značka fonetů nepodporuje pro pět hlasů: et-EE-AnuNeural, ga-IE-OrlaNeural, lt-LT-OnaNeural, lv-LV-EveritaNeural a mt-MT-GarceNeural.
Syntax
<phoneme alphabet="string" ph="string"></phoneme>
Atributy
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
alphabet |
Určuje fonetickou abecedu, 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, odmítne text na řeč celý dokument SSML a nevygeneruje žádný výstup řeči zadaný v dokumentu. |
Povinné, pokud používáte fonely. |
Příklady
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<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-JennyNeural">
<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-JennyNeural">
<s>His name is Mike <phoneme alphabet="ups" ph="JH AU"> Zhou </phoneme></s>
</voice>
</speak>
Vylepšení výslovnosti pomocí vlastního slovníku
Někdy text na řeč nemůže přesně vyslovovat slovo. Příkladem může být název společnosti, lékařský termín nebo emoji. Pomocí značek phoneme
sub
a značek můžete definovat, jak se jednotlivé entity čtou v SSML. Pokud potřebujete definovat, jak se čte více entit, můžete pomocí lexicon
značky vytvořit vlastní lexikon.
Vlastní lexicon aktuálně podporuje kódování UTF-8.
Poznámka
V tuto chvíli se vlastní lexicon nepodporuje pro pět hlasů: et-EE-AnuNeural, ga-IE-OrlaNeural, lt-LT-OnaNeural, lv-LV-EveritaNeural a mt-MT-GarceNeural.
Syntax
<lexicon uri="string"/>
Atribut
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
uri |
Adresa externího dokumentu PLS | Vyžadováno |
Použití
Pokud chcete definovat, jak se čte více entit, můžete vytvořit vlastní lexicon, který je uložený jako soubor .xml nebo .pls. Následující kód je ukázkový soubor .xml.
<?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>
Element lexicon
obsahuje alespoň jeden lexeme
prvek. Každý lexeme
prvek obsahuje alespoň jeden grapheme
prvek a jeden nebo více grapheme
, alias
a phoneme
elementy. Element grapheme
obsahuje text, který popisuje ortografii. Prvky alias
slouží k označení výslovnosti zkratky nebo zkráceného termínu. Element phoneme
poskytuje text, který popisuje, jak lexeme
se vyslovuje. Pokud jsou prvky phoneme
alias
k dispozici se stejným grapheme
prvkem, alias
má vyšší prioritu.
Důležité
Prvek lexeme
rozlišuje malá a velká písmena ve vlastním lexiconu. Pokud například zadáte jenom fonát pro lexeme
"Hello", nebude fungovat pro lexeme
"hello".
Lexicon obsahuje nezbytný xml:lang
atribut, který indikuje, pro které národní prostředí se má použít. Jeden vlastní lexicon je omezen na jedno národní prostředí podle návrhu, takže pokud ho použijete pro jiné národní prostředí, nebude fungovat.
Výslovnost fráze nelze nastavit přímo pomocí vlastního lexikonu. 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:
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>ScotlandMV</alias>
</lexeme>
<lexeme>
<grapheme>ScotlandMV</grapheme>
<phoneme>ˈskɒtlənd.ˈmiːdiəm.weɪv</phoneme>
</lexeme>
Poznámka
Slabika je v IPA ..
Můžete také přímo zadat očekávané alias
zkratky nebo zkrácené termíny. Příklad:
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>Scotland Media Wave</alias>
</lexeme>
Důležité
Když phoneme
použijete IPA, element nemůže obsahovat prázdné znaky.
Další informace o vlastním souboru lexicon naleznete v tématu Výslovnost Lexicon Specification (PLS) verze 1.0.
Dále publikujte vlastní soubor lexicon. Nemáme omezení, kde se tento soubor dá uložit, ale doporučujeme používat Azure Blob Storage.
Po publikování vlastního lexikonu na něj můžete odkazovat z SSML.
Poznámka
Prvek lexicon
musí být uvnitř voice
prvku.
<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">
<lexicon uri="http://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>
Když použijete tento vlastní lexicon, "BTW" se přečte jako "Mimochodem". "Benigni" je přečten pomocí poskytnuté IPA "bɛːnji".
Ve vlastním slovníku je snadné dělat chyby, takže Microsoft poskytuje nástroj pro ověření vlastního lexikonu. Obsahuje podrobné chybové zprávy, které vám pomůžou najít chyby. Před odesláním SSML s vlastním lexiconem do služby Speech zkontrolujte vlastní lexikon pomocí tohoto nástroje.
Omezení
- Velikost souboru: Maximální maximální velikost souboru vlastního lexiconu je 100 kB. Pokud je soubor nad rámec této velikosti, žádost o syntézu selže.
- Aktualizace mezipaměti Lexicon: Vlastní lexicon se uloží do mezipaměti s identifikátorem URI jako klíčem při prvním načtení textu na řeč. Lexikon se stejným identifikátorem URI se během 15 minut znovu nenačte, takže změna vlastního lexikonu musí trvat maximálně 15 minut, aby se projevila.
Fonetické sady služby Speech
V předchozí ukázce používáme IPA, která se označuje také jako sada IPA pro telefon. Doporučujeme používat 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ódováním Unicode. Vlastní lexicon podporuje pouze dekompresovanou sadu Unicode.
IPA není snadno zapamatovatelná, takže služba Speech definuje fonetickou sadu pro sedm jazyků: en-US
, , es-ES
de-DE
ja-JP
fr-FR
zh-CN
a .zh-TW
Jako hodnotu atributu alphabet
můžete použít x-microsoft-sapi
vlastní lexikony, jak je znázorněno tady:
<?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>
Další informace o podrobné fonetické abecedě služby Speech najdete v fonetických sadách služby Speech.
Úprava prozódie
Tento prosody
prvek slouží k určení změn rozteče, obrysu, rozsahu, rychlosti a hlasitosti výstupu převodu textu na řeč. Prvek prosody
může obsahovat text a následující prvky: audio
, , break
, p
phoneme
, prosody
, say-as
, , , sub
a s
.
Vzhledem k tomu, že hodnoty atributů prosodic se mohou lišit v širokém rozsahu, rozpoznávání řeči interpretuje přiřazené hodnoty jako návrh toho, co mají být skutečné prosodické hodnoty vybraného hlasu. Omezení převodu textu na řeč nebo nahrazení hodnot, které nejsou podporovány. Příklady nepodporovaných hodnot jsou rozteč 1 MHz nebo objem 120.
Syntax
<prosody pitch="value" contour="value" range="value" rate="value" volume="value"></prosody>
Atributy
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
pitch |
Označuje směrný rozteč textu. Prezentaci můžete vyjádřit takto:
|
Volitelné |
contour |
Obrys teď podporuje neurální hlas. Obrys představuje změny v rozteč. Tyto změny jsou reprezentovány jako pole cílů v určených časových pozicích ve výstupu řeči. Každý cíl je definován sadami párů parametrů. Příklad:<prosody contour="(0%,+20Hz) (10%,-2st) (40%,+10Hz)"> První hodnota v každé sadě parametrů určuje umístění změny rozteče jako procento doby trvání textu. Druhá hodnota určuje hodnotu, která má zvýšit nebo snížit rozteč, pomocí relativní hodnoty nebo hodnoty výčtu pro rozteč (viz pitch ). |
Volitelné |
range |
Hodnota, která představuje rozsah rozteč textu. Můžete vyjádřit range pomocí stejných absolutních hodnot, relativních hodnot nebo výčtových hodnot, které se používají k popisu pitch . |
Volitelné |
rate |
Označuje míru mluvení textu. Můžete vyjádřit rate takto:
|
Volitelné |
volume |
Označuje úroveň hlasitosti hlasu mluveného hlasu. Svazek můžete vyjádřit takto:
|
Volitelné |
Změna četnosti mluvení
Mluvenou sazbu lze použít na úrovni slova nebo věty.
Příklad
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<prosody rate="+30.00%">
Welcome to Microsoft Cognitive Services Text-to-Speech API.
</prosody>
</voice>
</speak>
Změna svazku
Změny hlasitosti je možné použít na úrovni věty.
Příklad
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<prosody volume="+20.00%">
Welcome to Microsoft Cognitive Services Text-to-Speech API.
</prosody>
</voice>
</speak>
Změna rozteče
Změny sklonu lze použít na úrovni věty.
Příklad
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
Welcome to <prosody pitch="high">Microsoft Cognitive Services Text-to-Speech API.</prosody>
</voice>
</speak>
Změna obrysu rozteče
Důležité
Změny obrysu rozteče jsou nyní podporovány neurálními hlasy.
Příklad
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<prosody contour="(60%,-60%) (100%,+80%)" >
Were you the only person in the room?
</prosody>
</voice>
</speak>
say-as – element
Prvek say-as
je volitelný. Označuje typ obsahu, například číslo nebo datum, textu prvku. Tento prvek poskytuje pokyny pro modul syntézy řeči o tom, jak vyslovovat text.
Syntax
<say-as interpret-as="string" format="digit string" detail="string"> </say-as>
Atributy
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
interpret-as |
Označuje typ obsahu textu prvku. Seznam typů najdete v následující tabulce. | Vyžadováno |
format |
Poskytuje další informace o přesném formátování textu prvku pro typy obsahu, které mohou mít nejednoznačné formáty. SSML definuje formáty pro typy obsahu, které je používají. Podívejte se na následující tabulku. | Volitelné |
detail |
Označuje úroveň podrobností, které se mají vyslovovat. Tento atribut může například požadovat, aby modul syntézy řeči vyslovovat interpunkční znaménka. Nejsou definovány žádné standardní hodnoty pro detail . |
Volitelné |
Následující typy obsahu jsou podporovány pro interpret-as
atributy a format
atributy. format
Atribut zahrňte pouze v případě, že interpret-as
je nastavený na datum a čas.
interpretovat jako | formát | Interpretace |
---|---|---|
address |
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." |
|
cardinal , number |
Text je mluvený jako číslo mohutného čísla. Modul syntézy řeči vyslovuje:There are <say-as interpret-as="cardinal">3</say-as> alternatives Jako "Existují tři alternativy.". |
|
characters , spell-out |
Text je mluvený jako jednotlivá písmena (napsaná). Modul syntézy řeči vyslovuje:<say-as interpret-as="characters">test</say-as> Jako "T E S T". |
|
date |
dmy, mdy, ymd, ym, my, md, dm, d, m, y | Text je mluvený 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" format="mdy">10-19-2016</say-as> "Dnes je říjen devátý dva tisíce šestnáct." |
digits , number_digit |
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 |
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". |
|
ordinal |
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". |
|
telephone |
Text je mluvený jako telefonní číslo. Atribut format může obsahovat číslice, které představují kód země. Příklady jsou "1" pro USA nebo "39" pro Itálii. Modul syntézy řeči může tyto informace použít k vedení jeho výslovnosti telefonního čísla. Telefonní číslo může obsahovat také kód země, a pokud ano, má přednost před kódem země v atributu format . Modul syntézy řeči vyslovuje:The number is <say-as interpret-as="telephone" format="1">(888) 555-1212</say-as> Jako "Moje číslo je směrové číslo osm osm osm pět pět pět pět jedna dvě dvě dvě." |
|
time |
hms12, hms24 | Text je mluvený jako čas. Atribut format určuje, zda je čas určen pomocí 12hodinového formátu (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 M." |
name |
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 některé znaky vyslovují odlišně, když se zobrazí 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]. |
Použití
Element say-as
může obsahovat pouze text.
Příklad
Modul syntézy řeči hovoří v následujícím příkladu: "Váš první požadavek byl pro jednu místnost v říjnu devátého desátého s prvním příjezdem do 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-JennyNeural">
<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>
Přidání nahraného zvuku
Prvek audio
je volitelný. Můžete ho použít k vložení předem zaznamenaného zvuku do dokumentu SSML. Text zvukového prvku může obsahovat prostý text nebo kód SSML, který se mluví, pokud zvukový soubor není dostupný nebo nelze přehrát. Prvek audio
může obsahovat také text a následující prvky: audio
, , break
p
, s
, phoneme
, , prosody
, say-as
a sub
.
Veškerý zvuk zahrnutý v dokumentu SSML musí splňovat tyto požadavky:
- Zvuk musí být hostovaný na koncovém bodu HTTPS přístupném z internetu. Vyžaduje se protokol HTTPS a doména hostující soubor musí obsahovat platný důvěryhodný certifikát TLS/SSL. Doporučujeme vložit zvukový soubor do objektu blob Storage do stejné oblasti Azure jako koncový bod převodu textu na řeč, abyste minimalizovali latenci.
- Zvukový soubor musí být platný *.mp3, *.wav, *.opus, *.ogg, *.null nebo *.wma soubory.
- Celková celková doba pro všechny textové a zvukové soubory v jedné odpovědi nesmí překročit 600 sekund.
- Zvuk nesmí obsahovat žádné citlivé informace specifické pro zákazníka ani jiné citlivé informace.
Syntax
<audio src="string"/></audio>
Atribut
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
src |
Určuje umístění a adresu URL zvukového souboru. | Vyžaduje se, pokud používáte zvukový prvek v dokumentu SSML. |
Příklad
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-JennyNeural">
<p>
<audio src="https://contoso.com/opinionprompt.wav"/>
Thanks for offering your opinion. Please begin speaking after the beep.
<audio src="https://contoso.com/beep.wav">
Could not play the beep, please voice your opinion now.
</audio>
</p>
</voice>
</speak>
Přidání zvuku na pozadí
Tento prvek můžete použít k přidání zvuku mstts:backgroundaudio
na pozadí do dokumentů SSML nebo kombinaci zvukového souboru s převodem textu na řeč. S mstts:backgroundaudio
, můžete opakovat zvukový soubor na pozadí, fade in na začátku převodu textu na řeč a vyblednout na konci převodu textu na řeč.
Pokud je zadaný zvuk na pozadí kratší než převod textu na řeč nebo zeslabení, smyčka se smyček. Pokud je delší než převod textu na řeč, zastaví se po dokončení prolnutí.
Pro každý dokument SSML je povolený jenom jeden zvukový soubor na pozadí. Značky uvnitř elementu voice
můžete interspersovataudio
, abyste do dokumentu SSML přidali další zvuk.
Syntax
<mstts:backgroundaudio src="string" volume="string" fadein="string" fadeout="string"/>
Atributy
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
src |
Určuje umístění a adresu URL zvukového souboru na pozadí. | Vyžadováno, pokud v dokumentu SSML používáte zvuk na pozadí. |
volume |
Určuje hlasitost zvukového souboru na pozadí. Akceptované hodnoty: 0 včetně 100 . Výchozí hodnota je 1 . |
Volitelné |
fadein |
Určuje dobu trvání zvuku pozadí fade-in jako milisekundy. Výchozí hodnota je 0 , což je ekvivalentem bez prolnutí. Akceptované hodnoty: 0 včetně 10000 . |
Volitelné |
fadeout |
Určuje dobu trvání zvuku na pozadí v milisekundách. Výchozí hodnota je 0 , což je ekvivalent k žádnému zeslabování. Akceptované hodnoty: 0 včetně 10000 . |
Volitelné |
Příklad
<speak version="1.0" xml:lang="en-US" xmlns:mstts="http://www.w3.org/2001/mstts">
<mstts:backgroundaudio src="https://contoso.com/sample.wav" volume="0.7" fadein="3000" fadeout="4000"/>
<voice name="Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)">
The text provided in this document will be spoken over the background audio.
</voice>
</speak>
Element Bookmark
Pomocí elementu bookmark
můžete do SSML vložit vlastní značky, abyste získali posun jednotlivých značek ve zvukovém streamu. Prvky si nepřečteme bookmark
. Prvek bookmark
lze použít k odkazování na konkrétní umístění v textu nebo posloupnosti značek. Záložka je dostupná pro všechny jazyky a hlasy.
Syntax
<bookmark mark="string"/>
Atribut
Atribut | Popis | Požadované nebo volitelné |
---|---|---|
mark |
Určuje referenční text bookmark prvku. |
Vyžadováno |
Příklad
Jako příklad můžete chtít znát časový posun každého slova květin v následujícím fragmentu kódu:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AriaNeural">
We are selling <bookmark mark='flower_1'/>roses and <bookmark mark='flower_2'/>daisies.
</voice>
</speak>
Získání záložky pomocí sady Speech SDK
Pokud chcete získat posuny záložek, můžete se přihlásit k odběru BookmarkReached
události v sadě Speech SDK.
Poznámka
Událost BookmarkReached
je k dispozici pouze od verze sady Speech SDK verze 1.16.
Události BookmarkReached
jsou vyvolány při zpřístupnění výstupních zvukových dat, což bude rychlejší než přehrávání do výstupního zařízení.
AudioOffset
hlásí uplynulý čas výstupního zvuku mezi začátkem syntézy a prvkembookmark
. Čas se měří ve stovkách nanosekundových jednotek (HNS) s 10 000 HNS ekvivalentem 1 milisekund.Text
je referenční text elementubookmark
, což je řetězec, který jste nastavili v atributumark
.
Další informace naleznete v tématu BookmarkReached
.
synthesizer.BookmarkReached += (s, e) =>
{
// The unit of e.AudioOffset is tick (1 tick = 100 nanoseconds), divide by 10,000 to convert to milliseconds.
Console.WriteLine($"Bookmark reached. Audio offset: " +
$"{e.AudioOffset / 10000}ms, bookmark text: {e.Text}.");
};
V předchozím příkladu SSML BookmarkReached
se událost aktivuje dvakrát a výstup konzoly bude:
Bookmark reached. Audio offset: 825ms, bookmark text: flower_1.
Bookmark reached. Audio offset: 1462.5ms, bookmark text: flower_2.
Podporované elementy MathML
Math Markup Language (MathML) je jazyk značek kompatibilní se standardem XML, který vývojářům umožňuje určit, jak se vstupní text převede na syntetizovaný řeč pomocí převodu textu na řeč.
Poznámka
Elementy MathML (značky) jsou v současné době podporovány všemi neurálními hlasy v en-US
národních prostředích.en-AU
Příklad
Tento fragment kódu SSML ukazuje, jak se prvky MathML používají k výstupu syntetizované řeči. Výstup převodu textu na řeč 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>
Atribut xmlns
in <math xmlns="http://www.w3.org/1998/Math/MathML">
je volitelný.
Podporují se všechny prvky ze specifikací MathML 2.0 a MathML 3.0 s výjimkou elementů MathML 3.0 Základní matematika . Funkce semantics
, annotation
a annotation-xml
elementy nemají výstup řeči, takže jsou ignorovány.
Poznámka
Pokud prvek není rozpoznán, bude ignorován a podřízené prvky v něm budou i nadále zpracovány.
Entity MathML nejsou podporovány syntaxí XML, 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ě.