SSML-dokumentumstruktúra és események
A beszédszintézis korrektúranyelve (SSML) bemeneti szöveggel határozza meg a szöveg szerkezetét, tartalmát és egyéb jellemzőit a beszédkimenethez. Az SSML használatával például definiálhat bekezdést, mondatot, szünetet, szünetet vagy csendet. Az alkalmazás később feldolgozható eseménycímkéket, például könyvjelzőt vagy viseme-et tartalmazó szöveget tördelhet.
Az SSML-dokumentum elemeinek strukturálásáról az alábbi szakaszokban olvashat.
Dokumentumstruktúra
Az SSML Speech service implementációja a World Wide Web Consortium 1.0-s beszédszintézisi korrektúranyelvén alapul. A Speech által támogatott elemek eltérhetnek a W3C szabványtól.
Minden SSML-dokumentum SSML-elemekkel vagy címkékkel jön létre. Ezek az elemek a hang, a stílus, a hangmagasság, a próza, a hangerő és egyebek beállítására szolgálnak.
Íme egy SSML-dokumentum alapstruktúrájának és szintaxisának egy részhalmaza:
<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>
Az egyes elemekben engedélyezett tartalom néhány példáját az alábbi listában találja:
audio
: Az elem törzseaudio
tartalmazhat egyszerű szöveget vagy SSML-korrektúrát, amely akkor hallható, ha a hangfájl nem érhető el vagy nem játszható le. Azaudio
elem tartalmazhat szöveget és a következő elemeket is:audio
, ,break
,s
p
,phoneme
, ,prosody
,say-as
éssub
.bookmark
: Ez az elem nem tartalmazhat szöveget vagy más elemeket.break
: Ez az elem nem tartalmazhat szöveget vagy más elemeket.emphasis
: Ez az elem tartalmazhat szöveget és a következő elemeket:audio
, ,break
,emphasis
lang
,phoneme
, ,prosody
,say-as
éssub
.lang
: Ez az elem az összes többi elemet is tartalmazhat, kivévemstts:backgroundaudio
az ,voice
ésspeak
a .lexicon
: Ez az elem nem tartalmazhat szöveget vagy más elemeket.math
: Ez az elem csak szöveget és MathML-elemeket tartalmazhat.mstts:audioduration
: Ez az elem nem tartalmazhat szöveget vagy más elemeket.mstts:backgroundaudio
: Ez az elem nem tartalmazhat szöveget vagy más elemeket.mstts:embedding
: Ez az elem tartalmazhat szöveget és a következő elemeket:audio
, ,break
,emphasis
lang
,phoneme
, ,prosody
,say-as
éssub
.mstts:express-as
: Ez az elem tartalmazhat szöveget és a következő elemeket:audio
, ,break
,emphasis
lang
,phoneme
, ,prosody
,say-as
éssub
.mstts:silence
: Ez az elem nem tartalmazhat szöveget vagy más elemeket.mstts:viseme
: Ez az elem nem tartalmazhat szöveget vagy más elemeket.p
: Ez az elem tartalmazhat szöveget és a következő elemeket:audio
, ,break
,phoneme
prosody
,say-as
, ,sub
,mstts:express-as
éss
.phoneme
: Ez az elem csak szöveget és más elemeket tartalmazhat.prosody
: Ez az elem tartalmazhat szöveget és a következő elemeket:audio
, ,break
,p
phoneme
,prosody
, ,say-as
,sub
éss
.s
: Ez az elem tartalmazhat szöveget és a következő elemeket:audio
, ,break
,prosody
phoneme
, ,say-as
,mstts:express-as
éssub
.say-as
: Ez az elem csak szöveget és más elemeket tartalmazhat.sub
: Ez az elem csak szöveget és más elemeket tartalmazhat.speak
: Egy SSML-dokumentum gyökéreleme. Ez az elem a következő elemeket tartalmazhatja:mstts:backgroundaudio
ésvoice
.voice
: Ez az elem az összes többi elemet is tartalmazhat, kivévemstts:backgroundaudio
az ésspeak
a .
A Speech szolgáltatás a megfelelő módon automatikusan kezeli az írásjeleket, például egy idő után szünetelteti az írásjeleket, vagy a megfelelő intonációt használja, amikor egy mondat kérdőjellel végződik.
Speciális karakterek
A karakterek &
<
használatához , valamint >
az SSML-elem értékén vagy szövegén belül az entitásformátumot kell használnia. Konkrétan a helyén kell használnia, helyette kell használnia <
<
, és helyette kell használnia >
>
.&
&
Ellenkező esetben az SSML nincs megfelelően elemezve.
Adja meg például ahelyettgreen & yellow
, hogy green & yellow
. A következő SSML a várt módon van elemezve:
<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>
A speciális karaktereket, például idézőjeleket, aposztrófokat és szögletes zárójeleket meg kell szökni. További információ: Bővíthető korrektúranyelv (XML) 1.0: D függelék.
A dupla vagy az egy idézőjelnek tartalmaznia kell az attribútumértékeket. Például <prosody volume="90">
<prosody volume='90'>
jól formázott, érvényes elemek, de <prosody volume=90>
nem ismerik fel.
Gyökérelem felolvassa
Az speak
elem olyan információkat tartalmaz, mint a verzió, a nyelv és a korrektúra szókincsének definíciója. Az speak
elem az összes SSML-dokumentumhoz szükséges gyökérelem. Meg kell adnia az elem alapértelmezett nyelvét speak
, függetlenül attól, hogy a nyelv máshol, például az lang
elemen belül van-e beállítva.
Az elem szintaxisa speak
a következő:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
version |
A dokumentum-korrektúra értelmezéséhez használt SSML-specifikáció verzióját jelzi. Az aktuális verzió az "1.0". | Kötelező |
xml:lang |
A gyökérdokumentum nyelve. Az érték tartalmazhat olyan nyelvi kódot, mint en az (angol) vagy egy területi beállítás (angol en-US – Egyesült Államok). |
Kötelező |
xmlns |
A dokumentum URI-ja, amely meghatározza az SSML-dokumentum jelölőszókincsét (az elemtípusokat és attribútumneveket). A jelenlegi URI a következő: "http://www.w3.org/2001/10/synthesis". | Kötelező |
Az speak
elemnek legalább egy hangelemet tartalmaznia kell.
példák felolvasása
Az elem attribútumainak speak
támogatott értékeit korábban ismertették.
Példa egyhangos hangra
Ez a példa a en-US-AvaNeural
hangot használja. További példákért tekintse meg a hangra vonatkozó példákat.
<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>
Törés hozzáadása
break
Az elem használatával felülbírálhatja a szavak közötti szünetek vagy szünetek alapértelmezett viselkedését. Ellenkező esetben a Speech szolgáltatás automatikusan beszúrja a szüneteket.
break
Az elem attribútumainak használatát az alábbi táblázat ismerteti.
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
strength |
A szüneteltetés relatív időtartama az alábbi értékek egyikével:
|
Választható |
time |
A szünet abszolút időtartama másodpercben (például 2s ) vagy ezredmásodpercben (például 500ms ). Az érvényes értékek 0 és 5000 ezredmásodperc között mozognak. Ha a támogatott maximális értéknél nagyobb értéket állít be, a szolgáltatás a következőt használja 5000ms : . Ha az time attribútum be van állítva, a rendszer figyelmen kívül hagyja az strength attribútumot. |
Választható |
Az alábbiakban további részleteket talál az strength
attribútumról.
Erősség | Relatív időtartam |
---|---|
X-gyenge | 250 ms |
Gyenge | 500 ms |
Közepes | 750 ms |
Erős | 1000 ms |
X-erős | 1250 ms |
Példák törésre
Az elem attribútumainak break
támogatott értékeit korábban ismertették. Az alábbi három módszer 750 ms-os törést ad hozzá.
<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>
Csend hozzáadása
mstts:silence
Az elem használatával szöveg előtt vagy után, illetve két szomszédos mondat közé szúrhat be szüneteket.
Az egyik különbség mstts:silence
break
az, hogy egy break
elem bárhol beszúrható a szövegbe. A csend csak a bemeneti szöveg elején vagy végén, illetve két szomszédos mondat határán működik.
A csöndbeállítást a rendszer az összes bemeneti szövegre alkalmazza a belefoglaló voice
elemen belül. A csend beállításának visszaállításához vagy módosításához egy új voice
elemet kell használnia ugyanazzal a hanggal vagy másik hanggal.
mstts:silence
Az elem attribútumainak használatát az alábbi táblázat ismerteti.
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
type |
Megadja a csend hozzáadásának helyét és módját. A következő csöndtípusok támogatottak:
Az abszolút csendtípus (az -exact utótaggal) minden más módon természetes kezdő vagy záró csendet helyettesít. Az abszolút csendtípusok elsőbbséget élveznek a megfelelő nem abszolút típussal szemben. Ha például mindkettőt Leading és Leading-exact típust beállítja, a Leading-exact típus érvénybe lép. A WordBoundary esemény elsőbbséget élvez az írásjelekkel kapcsolatos csendbeállításokkal szemben, beleértve az Comma-exact , Semicolon-exact vagy Enumerationcomma-exact . Ha az eseményhez és az WordBoundary írásjelhez kapcsolódó csendbeállításokat is használja, az írásjelekkel kapcsolatos csendbeállítások nem lépnek érvénybe. |
Kötelező |
Value |
A szünet időtartama másodpercben (például 2s ) vagy ezredmásodpercben (például 500ms ). Az érvényes értékek 0 és 5000 ezredmásodperc között mozognak. Ha a támogatott maximális értéknél nagyobb értéket állít be, a szolgáltatás a következőt használja 5000ms : . |
Kötelező |
mstts silence examples
Az elem attribútumainak mstts:silence
támogatott értékeit korábban ismertették.
Ebben a példában mstts:silence
két mondat között 200 ms csendet adunk hozzá.
<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>
Ebben a példában mstts:silence
50 ms csendet adunk hozzá a vesszőnél, 100 ms csendet a pontosvesszőnél, és 150 ms csendet az enumerálási vesszőnél.
<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>
Bekezdések és mondatok megadása
Az p
elemek a s
bekezdések és mondatok jelölésére szolgálnak. Ezen elemek hiányában a Speech szolgáltatás automatikusan meghatározza az SSML-dokumentum szerkezetét.
Példák bekezdésre és mondatra
Az alábbi példa két olyan bekezdést határoz meg, amelyek mindegyike mondatokat tartalmaz. A második bekezdésben a Speech szolgáltatás automatikusan meghatározza a mondatstruktúrát, mivel ezek nincsenek definiálva az SSML-dokumentumban.
<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>
Könyvjelző elem
Az SSML elemével bookmark
hivatkozhat a szöveg vagy címkesorozat egy adott helyére. Ezután használja a Speech SDK-t, és feliratkozik az BookmarkReached
eseményre, hogy megkapja az egyes jelölők eltolódását a hangstreamben. Az bookmark
elem nincs kimondva. További információ: Feliratkozás szintetizátoreseményekre.
bookmark
Az elem attribútumainak használatát az alábbi táblázat ismerteti.
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
mark |
Az elem referenciaszövege bookmark . |
Kötelező |
Példák könyvjelzőkre
Az elem attribútumainak bookmark
támogatott értékeit korábban ismertették.
Példaként érdemes lehet tudni az egyes virágszavak időeltolódását az alábbi kódrészletben:
<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>
Viseme elem
A viseme egy beszélt nyelvű telefonkép vizuális leírása. Meghatározza az arc és a száj helyzetét, miközben egy személy beszél. Az SSML elemével mstts:viseme
viseme kimenetet kérhet le. További információ: Archelyzet lekérése viseme használatával.
A viseme beállítást a rendszer a belefoglaló voice
elemen belüli összes bemeneti szövegre alkalmazza. A viseme beállítás visszaállításához vagy módosításához egy új voice
elemet kell használnia ugyanazzal a hanggal vagy másik hanggal.
viseme
Az elem attribútumainak használatát az alábbi táblázat ismerteti.
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
type |
A viseme kimenet típusa.
|
Kötelező |
Feljegyzés
redlips_front
Jelenleg csak a neurális hangokat támogatja a területi beállításokbanen-US
, és FacialExpression
támogatja a neurális hangokat és en-US
zh-CN
a területi beállításokat.
Viseme-példák
Az elem attribútumainak viseme
támogatott értékeit korábban ismertették.
Ez az SSML-kódrészlet bemutatja, hogyan kérhet elegyalakzatokat a szintetizált beszédhez.
<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>