Struktura a události dokumentu SSML

Jazyk SSML (Speech Synthesis Markup Language) se vstupním textem určuje strukturu, obsah a další vlastnosti textu na výstup řeči. SSML můžete například použít k definování odstavce, věty, konce nebo pozastavení nebo tichou. Text můžete zalamovat značkami událostí, jako je záložka nebo viseme, které může vaše aplikace zpracovat později.

Podrobnosti o strukturování prvků v dokumentu SSML najdete v následujících částech.

Struktura dokumentu

Implementace služby Speech pro SSML je založena na jazyku Speech Synthesis Markup Language konsorcia World Wide Web Consortium verze 1.0. Prvky podporované službou Speech se můžou lišit od standardu W3C.

Každý dokument SSML se vytvoří pomocí elementů nebo značek SSML. Tyto prvky slouží k úpravě hlasu, stylu, výšky, prosody, hlasitosti a dalších prvků.

Tady je podmnožina základní struktury a syntaxe dokumentu SSML:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="string">
    <mstts:backgroundaudio src="string" volume="string" fadein="string" fadeout="string"/>
    <voice name="string" effect="string">
        <audio src="string"></audio>
        <bookmark mark="string"/>
        <break strength="string" time="string" />
        <emphasis level="value"></emphasis>
        <lang xml:lang="string"></lang>
        <lexicon uri="string"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML"></math>
        <mstts:audioduration value="string"/>
        <mstts:ttsembedding speakerProfileId="string"></mstts:ttsembedding>
        <mstts:express-as style="string" styledegree="value" role="string"></mstts:express-as>
        <mstts:silence type="string" value="string"/>
        <mstts:viseme type="string"/>
        <p></p>
        <phoneme alphabet="string" ph="string"></phoneme>
        <prosody pitch="value" contour="value" range="value" rate="value" volume="value"></prosody>
        <s></s>
        <say-as interpret-as="string" format="string" detail="string"></say-as>
        <sub alias="string"></sub>
    </voice>
</speak>

Některé příklady obsahu, které jsou povoleny v každém prvku, jsou popsány v následujícím seznamu:

  • audio: Tělo elementu audio může obsahovat prostý text nebo kód SSML, který je mluvený, 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.
  • bookmark: Tento prvek nemůže obsahovat text ani žádné jiné prvky.
  • break: Tento prvek nemůže obsahovat text ani žádné jiné prvky.
  • emphasis: Tento prvek může obsahovat text a následující prvky: audio, break, emphasis, lang, phoneme, , prosody, , say-asa sub.
  • lang: Tento prvek může obsahovat všechny ostatní prvky kromě mstts:backgroundaudio, voicea speak.
  • lexicon: Tento prvek nemůže obsahovat text ani žádné jiné prvky.
  • math: Tento prvek může obsahovat pouze text a elementy MathML.
  • mstts:audioduration: Tento prvek nemůže obsahovat text ani žádné jiné prvky.
  • mstts:backgroundaudio: Tento prvek nemůže obsahovat text ani žádné jiné prvky.
  • mstts:embedding: Tento prvek může obsahovat text a následující prvky: audio, break, emphasis, lang, phoneme, , prosody, , say-asa sub.
  • mstts:express-as: Tento prvek může obsahovat text a následující prvky: audio, break, emphasis, lang, phoneme, , prosody, , say-asa sub.
  • mstts:silence: Tento prvek nemůže obsahovat text ani žádné jiné prvky.
  • mstts:viseme: Tento prvek nemůže obsahovat text ani žádné jiné prvky.
  • p: Tento prvek může obsahovat text a následující prvky: audio, break, phoneme, prosody, say-as, , sub, , mstts:express-asa s.
  • phoneme: Tento prvek může obsahovat pouze text a žádné další prvky.
  • prosody: Tento prvek může obsahovat text a následující prvky: audio, break, p, phoneme, prosody, , say-as, , suba s.
  • s: Tento prvek může obsahovat text a následující prvky: audio, break, phoneme, prosody, say-as, , mstts:express-asa sub.
  • say-as: Tento prvek může obsahovat pouze text a žádné další prvky.
  • sub: Tento prvek může obsahovat pouze text a žádné další prvky.
  • speak: Kořenový prvek dokumentu SSML. Tento prvek může obsahovat následující prvky: mstts:backgroundaudio a voice.
  • voice: Tento prvek může obsahovat všechny ostatní prvky kromě mstts:backgroundaudio a speak.

Služba Speech automaticky zpracovává interpunkci podle potřeby, například pozastavení po určité době nebo použití správné intonace, když věta končí otazníkem.

Speciální znaky

Chcete-li použít znaky &, <a > v rámci hodnoty elementu SSML nebo textu, je nutné použít formát entity. Konkrétně je nutné použít &amp; místo &, použití &lt; místo <, a použití &gt; místo >. Jinak se SSML správně neanalyguje.

Zadejte například green &amp; yellow místo .green & yellow Následující SSML se parsuje podle očekávání:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        My favorite colors are green &amp; yellow.
    </voice>
</speak>

Speciální znaky, jako jsou uvozovky, apostrofy a hranaté závorky, musí být uvozovky. Další informace naleznete v tématu Extensible Markup Language (XML) 1.0: Příloha D.

Dvojité nebo jednoduché uvozovky musí uzavřít hodnoty atributů. Jsou například <prosody volume="90"><prosody volume='90'> správně vytvořené, platné prvky, ale <prosody volume=90> nerozpoznají se.

Přečíst kořenový prvek

Prvek speak obsahuje informace, jako je verze, jazyk a definice slovníku značek. Element speak je kořenový prvek, který je nutný pro všechny dokumenty SSML. Je nutné zadat výchozí jazyk v rámci speak elementu, zda je jazyk upraven jinde, například v rámci elementu lang .

Tady je syntaxe elementu speak :

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>
Atribut Popis Požadované nebo volitelné
version Označuje verzi specifikace SSML použitou k interpretaci značky dokumentu. Aktuální verze je 1.0. Požaduje se
xml:lang Jazyk kořenového dokumentu. Hodnota může obsahovat kód jazyka, například en (angličtina) nebo národní prostředí, například en-US (angličtina – USA). Požaduje se
xmlns Identifikátor URI dokumentu, který definuje slovník značek (typy elementů a názvy atributů) dokumentu SSML. Aktuální identifikátor URI je ;http://www.w3.org/2001/10/synthesis". Požaduje se

Prvek speak musí obsahovat alespoň jeden hlasový prvek.

Mluvte příklady

Podporované hodnoty atributů elementu speak byly popsány dříve.

Příklad s jedním hlasem

Tento příklad používá en-US-AvaNeural hlas. Další příklady najdete v příkladech hlasových hovorů.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        This is the text that is spoken.
    </voice>
</speak>

Přidání konce

Pomocí elementu break můžete přepsat výchozí chování konců nebo pozastavení mezi slovy. Jinak služba Speech automaticky vloží pozastavení.

break Použití atributů elementu je popsáno v následující tabulce.

Atribut Popis Požadované nebo volitelné
strength Relativní doba trvání pozastavení pomocí jedné z následujících hodnot:
  • slabá x
  • Slabý
  • střední (výchozí)
  • Silné
  • x-strong
Volitelné
time Absolutní doba trvání pozastavení v sekundách (například 2s) nebo milisekundách (například 500ms). Platné hodnoty jsou v rozsahu od 0 do 5000 milisekund. Pokud nastavíte hodnotu větší než podporované maximum, služba použije 5000ms. time Pokud je atribut nastaven, strength bude atribut ignorován. Volitelné

Tady jsou další podrobnosti o atributu strength .

Síla Relativní doba trvání
Slabá X 250 ms
Týden 500 ms
Střední 750 ms
Silné 1 000 ms
Silná X 1 250 ms

Příklady přerušení

Podporované hodnoty atributů elementu break byly popsány dříve. Následující tři způsoby všechny přidat 750 ms break.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        Welcome <break /> to text to speech.
        Welcome <break strength="medium" /> to text to speech.
        Welcome <break time="750ms" /> to text to speech.
    </voice>
</speak>

Přidání ticha

Pomocí elementu mstts:silence můžete vložit pozastavení před nebo za text nebo mezi dvě sousední věty.

Jedním z rozdílů mezi mstts:silence a break je, že break prvek lze vložit kamkoli do textu. Ticho funguje jenom na začátku nebo na konci vstupního textu nebo na hranici dvou sousedních vět.

Nastavení ticha se použije u veškerého vstupního textu v rámci jeho ohraničujícího voice prvku. Pokud chcete nastavení ticha resetovat nebo změnit znovu, musíte použít nový voice prvek se stejným hlasem nebo jiným hlasem.

mstts:silence Použití atributů elementu je popsáno v následující tabulce.

Atribut Popis Požadované nebo volitelné
type Určuje, kde a jak přidat ticho. Podporují se následující typy ticha:
  • Leading – Zvláštní ticho na začátku textu. Hodnota, kterou nastavíte, se přidá do přirozeného ticha před začátkem textu.
  • Leading-exact - Ticho na začátku textu. Hodnota je absolutní délka ticha.
  • Tailing - Zvláštní ticho na konci textu. Hodnota, kterou nastavíte, se přidá k přirozenému tichu za posledním slovem.
  • Tailing-exact - Ticho na konci textu. Hodnota je absolutní délka ticha.
  • Sentenceboundary - Nadbytečné ticho mezi sousedními větami. Skutečná délka ticha pro tento typ zahrnuje přirozené ticho za posledním slovem v předchozí větě, hodnotu, kterou jste pro tento typ nastavili, a přirozené ticho před počátečním slovem v další větě.
  • Sentenceboundary-exact - Ticho mezi sousedními větami. Hodnota je absolutní délka ticha.
  • Comma-exact – Ticho u čárky ve formátu s poloviční šířkou nebo plnou šířkou. Hodnota je absolutní délka ticha.
  • Semicolon-exact – Ticho na středníku ve formátu s poloviční šířkou nebo plnou šířkou. Hodnota je absolutní délka ticha.
  • Enumerationcomma-exact – Ticho na výčtu čárka ve formátu plné šířky. Hodnota je absolutní délka ticha.

Absolutní typ ticha (s příponou -exact ) nahrazuje jakékoli jinak přirozené úvodní nebo koncové ticho. Absolutní typy ticha mají přednost před odpovídajícím ne absolutním typem. Pokud například nastavíte oba Leading typy, Leading-exactLeading-exact typ se projeví. Událost WordBoundary má přednost před nastavením ticha souvisejícího s interpunkcí, včetně Comma-exact, Semicolon-exactnebo Enumerationcomma-exact. Když použijete WordBoundary nastavení ticha související s událostí i interpunkcí, nastavení ticha související s interpunkcí se neprojeví.
Požaduje se
Value Doba trvání pozastavení v sekundách (například 2s) nebo milisekundách (například 500ms). Platné hodnoty jsou v rozsahu od 0 do 5000 milisekund. Pokud nastavíte hodnotu větší než podporované maximum, služba použije 5000ms. Požaduje se

Příklady ticha mstts

Podporované hodnoty atributů elementu mstts:silence byly popsány dříve.

V tomto příkladu mstts:silence se používá k přidání 200 ms ticha mezi dvě věty.

<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">
<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>

V tomto příkladu mstts:silence se používá k přidání 50 ms ticha na čárku, 100 ms ticha na středník a 150 ms ticha na výčtu čárky.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="zh-CN">
<voice name="zh-CN-YunxiNeural">
<mstts:silence type="comma-exact" value="50ms"/><mstts:silence type="semicolon-exact" value="100ms"/><mstts:silence type="enumerationcomma-exact" value="150ms"/>你好呀,云希、晓晓;你好呀。
</voice>
</speak>

Zadání odstavců a vět

s Prvky p se používají k označení odstavců a vět v uvedeném pořadí. Pokud tyto prvky chybí, služba Speech automaticky určuje strukturu dokumentu SSML.

Příklady odstavců a vět

Následující příklad definuje dva odstavce, které každý obsahuje věty. Ve druhém odstavci služba Speech automaticky určuje strukturu vět, protože nejsou definovány v dokumentu SSML.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        <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>

Element Bookmark

Pomocí elementu bookmark v SSML můžete odkazovat na konkrétní umístění v textu nebo sekvenci značek. Pak použijete sadu Speech SDK a přihlásíte se k odběru BookmarkReached události, abyste získali posun každé značky ve zvukovém streamu. Prvek bookmark není mluvený. Další informace naleznete v tématu Přihlášení k odběru syntetizátoru událostí.

bookmark Použití atributů elementu je popsáno v následující tabulce.

Atribut Popis Požadované nebo volitelné
mark Referenční text elementu bookmark . Požaduje se

Příklady záložek

Podporované hodnoty atributů elementu bookmark byly popsány dříve.

Jako příklad můžete chtít znát časový posun každého slova květiny 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-AvaNeural">
        We are selling <bookmark mark='flower_1'/>roses and <bookmark mark='flower_2'/>daisies.
    </voice>
</speak>

Element Viseme

Viseme je vizuální popis fonemu v mluveném jazyce. Definuje pozici obličeje a úst, když člověk mluví. K vyžádání výstupu mstts:viseme viseme můžete použít element v SSML. Další informace najdete v tématu Získání pozice obličeje pomocí viseme.

Nastavení viseme se použije u veškerého vstupního textu v rámci jeho ohraničujícího voice prvku. Pokud chcete nastavení viseme resetovat nebo změnit znovu, musíte použít nový voice prvek se stejným hlasem nebo jiným hlasem.

viseme Použití atributů elementu je popsáno v následující tabulce.

Atribut Popis Požadované nebo volitelné
type Typ výstupu viseme.
  • redlips_front – synchronizace rtů s ID viseme a výstupem posunu zvuku
  • FacialExpression – prolnutí výstupu obrazců
Požaduje se

Poznámka:

redlips_front V současné době podporuje pouze neurální hlasy v en-US národním prostředí a FacialExpression podporuje neurální hlasy v en-US národních prostředích a zh-CN národní prostředí.

Příklady Viseme

Podporované hodnoty atributů elementu viseme byly popsány dříve.

Tento fragment kódu SSML ukazuje, jak požádat o kombinování obrazců s syntetizovanou řečí.

<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">
    <mstts:viseme type="FacialExpression"/>
    Rainbow has seven colors: Red, orange, yellow, green, blue, indigo, and violet.
  </voice>
</speak>

Další kroky