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.
Poznámka:
Kromě hlasových hovorů Azure AI Speech (jiné než HD) můžete použít také hlasy azure AI Speech s vysokou definicí (HD) a neurální hlasy Azure OpenAI (HD a jiné než HD). Hlasy HD poskytují vyšší kvalitu pro všestrannější scénáře.
Některé hlasy nepodporují všechny značky jazyka SSML (Speech Synthesis Markup Language). To zahrnuje neurální text na hlasy HD řeči, osobní hlasy a vložené hlasy.
- V případě hlasových hovorů s vysokou definicí azure AI Speech (HD) se podívejte na podporu SSML.
- Pro osobní hlas najdete podporu SSML zde.
- U vložených hlasů se podívejte na podporu SSML.
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 elementuaudio
může obsahovat prostý text nebo kód SSML, který je mluvený, pokud zvukový soubor není dostupný nebo nelze přehrát. Prvekaudio
může obsahovat také text a následující prvky:audio
,break
,p
,s
,phoneme
, ,prosody
, ,say-as
, asub
.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-as
asub
.lang
: Tento prvek může obsahovat všechny ostatní prvky kroměmstts:backgroundaudio
,voice
aspeak
.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-as
asub
.mstts:express-as
: Tento prvek může obsahovat text a následující prvky:audio
,break
,emphasis
,lang
,phoneme
, ,prosody
, ,say-as
asub
.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-as
as
.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
, ,sub
as
.s
: Tento prvek může obsahovat text a následující prvky:audio
,break
,phoneme
,prosody
,say-as
, ,mstts:express-as
asub
.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
avoice
.voice
: Tento prvek může obsahovat všechny ostatní prvky kroměmstts:backgroundaudio
aspeak
.
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 &
místo &
, použití <
místo <
, a použití >
místo >
. Jinak se SSML správně neanalyguje.
Zadejte například green & 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 & 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:
|
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 2 0000 milisekund. Pokud nastavíte hodnotu větší než podporované maximum, služba použije 20000ms . 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.
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.
|
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>