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:

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-YunxiNeurala 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-USa 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:
  • žádné
  • x-slabá
  • Slabý
  • střední (výchozí)
  • Silné
  • x-strong
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:
  • Leading – Na začátku textu
  • Tailing – Na konci textu
  • Sentenceboundary – Mezi sousedními větami
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, , breaksay-asprosodysubphonememstts:express-asa .s

Prvek s může obsahovat text a následující prvky: audio, break, phoneme, prosodysay-as, , a mstts:express-assub.

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 phonemesub 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, aliasa 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 phonemealias 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 aliaspak 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-ESde-DEja-JPfr-FRzh-CNa .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, pphoneme, prosody, say-as, , , suba 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:
  • Absolutní hodnota vyjádřená číslem následovaným "Hz" (Hertz). Například, <prosody pitch="600Hz">some text</prosody>.
  • Relativní hodnota vyjádřená jako číslo před "+" nebo "-" a za ním "Hz" nebo "st", která určuje hodnotu, která má změnit rozteč. Například: <prosody pitch="+80Hz">some text</prosody> nebo <prosody pitch="-2st">some text</prosody>. "st" označuje jednotku změny středníkem, což je polovina tónu (půl kroku) na standardní diatonové škále.
  • Konstantní hodnota:
    • x-low
    • Nízké
    • střední
    • high
    • x-high
    • default
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:
  • Relativní hodnota vyjádřená jako číslo, které funguje jako násobitel výchozí hodnoty. Například hodnota 1 způsobí, že se míra nezmění. Výsledkem hodnoty 0,5 je halvování sazby. Výsledkem hodnoty 3 je tripling sazby.
  • Konstantní hodnota:
    • x-slow
    • Pomalé
    • střední
    • Rychle
    • x-fast
    • default
Volitelné
volume Označuje úroveň hlasitosti hlasu mluveného hlasu. Svazek můžete vyjádřit takto:
  • Absolutní hodnota vyjádřená číslem v rozsahu od 0,0 do 100,0 od nejtiššího po nejhladší. Příklad je 75. Výchozí hodnota je 100.0.
  • Relativní hodnota vyjádřená číslem předcházejícím "+" nebo "-", která určuje velikost, která má změnit svazek. Příklady jsou +10 nebo -5.5.
  • Konstantní hodnota:
    • Tichý
    • x-soft
    • Měkké
    • střední
    • Hlasité
    • x-hlasitá
    • default
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, , breakp, s, phoneme, , prosody, say-asa 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 prvkem bookmark . Čas se měří ve stovkách nanosekundových jednotek (HNS) s 10 000 HNS ekvivalentem 1 milisekund.
  • Text je referenční text elementu bookmark , což je řetězec, který jste nastavili v atributu mark .

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, annotationa 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 &copy; by měla být reprezentována jeho znaky &#x00A9;unicode , jinak dojde k chybě.

Další kroky

Podpora jazyka: Hlasy, národní prostředí, jazyky