SSML-dokumentstruktur och -händelser
Talsyntesmarkeringsspråket (SSML) med indatatext avgör strukturen, innehållet och andra egenskaper för text till tal-utdata. Du kan till exempel använda SSML för att definiera ett stycke, en mening, en paus eller en paus eller tystnad. Du kan radbryta text med händelsetaggar som bokmärke eller viseme som kan bearbetas senare av ditt program.
Mer information om hur du strukturerar element i SSML-dokumentet finns i avsnitten nedan.
Kommentar
Förutom neurala Azure AI Speech-röster (icke HD) kan du också använda HD-röster (Azure AI Speech) och Neurala Azure OpenAI-röster (HD och icke HD). HD-rösterna ger en högre kvalitet för mer mångsidiga scenarier.
Vissa röster stöder inte alla SSML-taggar (Speech Synthesis Markup Language). Detta inkluderar neural text till HD-talröster, personliga röster och inbäddade röster.
- För HD-röster (Azure AI Speech high definition) kontrollerar du SSML-stödet här.
- För personlig röst kan du hitta SSML-supporten här.
- För inbäddade röster kontrollerar du SSML-stödet här.
Dokumentstruktur
Implementeringen av Speech-tjänsten av SSML baseras på World Wide Web Consortiums Speech Synthesis Markup Language Version 1.0. De element som stöds av Speech kan skilja sig från W3C-standarden.
Varje SSML-dokument skapas med SSML-element eller taggar. Dessa element används för att justera röst, stil, tonhöjd, prosody, volym med mera.
Här är en delmängd av den grundläggande strukturen och syntaxen för ett SSML-dokument:
<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ågra exempel på innehåll som tillåts i varje element beskrivs i följande lista:
audio
: Elementetsaudio
brödtext kan innehålla oformaterad text eller SSML-markering som talas om ljudfilen inte är tillgänglig eller inte går att spela upp. Elementetaudio
kan också innehålla text och följande element:audio
,break
,p
,s
,phoneme
,prosody
, ,say-as
ochsub
.bookmark
: Det här elementet får inte innehålla text eller andra element.break
: Det här elementet får inte innehålla text eller andra element.emphasis
: Det här elementet kan innehålla text och följande element:audio
,break
,emphasis
,lang
,phoneme
,prosody
,say-as
ochsub
.lang
: Det här elementet kan innehålla alla andra element utommstts:backgroundaudio
,voice
ochspeak
.lexicon
: Det här elementet får inte innehålla text eller andra element.math
: Det här elementet kan bara innehålla text- och MathML-element.mstts:audioduration
: Det här elementet får inte innehålla text eller andra element.mstts:backgroundaudio
: Det här elementet får inte innehålla text eller andra element.mstts:embedding
: Det här elementet kan innehålla text och följande element:audio
,break
,emphasis
,lang
,phoneme
,prosody
,say-as
ochsub
.mstts:express-as
: Det här elementet kan innehålla text och följande element:audio
,break
,emphasis
,lang
,phoneme
,prosody
,say-as
ochsub
.mstts:silence
: Det här elementet får inte innehålla text eller andra element.mstts:viseme
: Det här elementet får inte innehålla text eller andra element.p
: Det här elementet kan innehålla text och följande element:audio
,break
,phoneme
,prosody
,say-as
,sub
,mstts:express-as
ochs
.phoneme
: Det här elementet kan bara innehålla text och inga andra element.prosody
: Det här elementet kan innehålla text och följande element:audio
,break
,p
,phoneme
,prosody
,say-as
,sub
ochs
.s
: Det här elementet kan innehålla text och följande element:audio
,break
,phoneme
,prosody
,say-as
,mstts:express-as
ochsub
.say-as
: Det här elementet kan bara innehålla text och inga andra element.sub
: Det här elementet kan bara innehålla text och inga andra element.speak
: Rotelementet i ett SSML-dokument. Det här elementet kan innehålla följande element:mstts:backgroundaudio
ochvoice
.voice
: Det här elementet kan innehålla alla andra element utommstts:backgroundaudio
ochspeak
.
Speech-tjänsten hanterar automatiskt skiljetecken efter behov, till exempel pausa efter en period eller använda rätt intonation när en mening slutar med ett frågetecken.
Specialtecken
Om du vill använda tecknen &
, <
och >
inom SSML-elementets värde eller text måste du använda entitetsformatet. Mer specifikt måste du använda &
i stället för &
, använda <
i stället för <
, och använda >
i stället för >
. Annars parsas inte SSML korrekt.
Ange till exempel green & yellow
i stället för green & yellow
. Följande SSML parsas som förväntat:
<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>
Specialtecken som citattecken, apostrofer och hakparenteser måste vara undantagna. Mer information finns i Utökningsbart markupspråk (XML) 1.0: Bilaga D.
Dubbla eller enkla citattecken måste omsluta attributvärdena. Till exempel <prosody volume="90">
och <prosody volume='90'>
är välformulerad, giltiga element, men <prosody volume=90>
känns inte igen.
Läs in rotelement
Elementet speak
innehåller information som version, språk och ordförrådsdefinitionen för markering. Elementet speak
är det rotelement som krävs för alla SSML-dokument. Du måste ange standardspråket i elementet speak
, oavsett om språket justeras någon annanstans, till exempel i elementet lang
.
Här är syntaxen för elementet speak
:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>
Attribut | beskrivning | Obligatorisk eller valfri |
---|---|---|
version |
Anger vilken version av SSML-specifikationen som används för att tolka dokumentpålägget. Den aktuella versionen är "1.0". | Obligatoriskt |
xml:lang |
Rotdokumentets språk. Värdet kan innehålla en språkkod som en (engelska) eller en språkvariant som en-US (engelska – USA). |
Obligatoriskt |
xmlns |
URI:n till dokumentet som definierar markeringsordlistan (elementtyperna och attributnamnen) i SSML-dokumentet. Den aktuella URI:n är "http://www.w3.org/2001/10/synthesis". | Obligatoriskt |
Elementet speak
måste innehålla minst ett röstelement.
tala exempel
De värden som stöds för elementets speak
attribut beskrevs tidigare.
Exempel på en röst
I det en-US-AvaNeural
här exemplet används rösten. Fler exempel finns i röstexempel.
<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>
Lägg till en paus
Använd elementet break
för att åsidosätta standardbeteendet för pauser eller pauser mellan ord. Annars pausar Speech-tjänsten automatiskt.
Användning av break
elementets attribut beskrivs i följande tabell.
Attribut | beskrivning | Obligatorisk eller valfri |
---|---|---|
strength |
Den relativa varaktigheten för en paus med något av följande värden:
|
Valfritt |
time |
Den absoluta varaktigheten för en paus i sekunder (till exempel 2s ) eller millisekunder (till exempel 500ms ). Giltiga värden sträcker sig från 0 till 2 0000 millisekunder. Om du anger ett värde som är större än det maximala värdet som stöds använder 20000ms tjänsten . Om attributet time har angetts strength ignoreras attributet. |
Valfritt |
Här följer mer information om attributet strength
.
Styrka | Relativ varaktighet |
---|---|
X-svag | 250 ms |
Låg | 500 ms |
Medium | 750 ms |
Stark | 1 000 ms |
X-stark | 1 250 ms |
Bryt exempel
De värden som stöds för elementets break
attribut beskrevs tidigare. Följande tre sätt lägger alla till 750 ms-pauser.
<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>
Lägg till tystnad
Använd elementet mstts:silence
för att infoga pausar före eller efter text, eller mellan två intilliggande meningar.
En av skillnaderna mellan mstts:silence
och break
är att ett break
element kan infogas var som helst i texten. Tystnad fungerar endast i början eller slutet av indatatexten eller vid gränsen för två intilliggande meningar.
Tystnadsinställningen tillämpas på all indatatext i dess omslutande voice
element. Om du vill återställa eller ändra tystnadsinställningen igen måste du använda ett nytt voice
element med antingen samma röst eller en annan röst.
Användning av mstts:silence
elementets attribut beskrivs i följande tabell.
mstts tystnadsexempel
De värden som stöds för elementets mstts:silence
attribut beskrevs tidigare.
I det här exemplet mstts:silence
används för att lägga till 200 ms tystnad mellan två meningar.
<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>
I det här exemplet mstts:silence
används för att lägga till 50 ms tystnad på kommatecknet, 100 ms tystnad vid semikolonet och 150 ms tystnad vid uppräknings kommatecknet.
<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>
Ange stycken och meningar
Elementen p
och s
används för att ange stycken respektive meningar. I avsaknad av dessa element avgör Speech-tjänsten automatiskt strukturen för SSML-dokumentet.
Exempel på stycken och meningar
I följande exempel definieras två stycken som var och en innehåller meningar. I det andra stycket avgör Speech-tjänsten automatiskt meningsstrukturen, eftersom de inte definieras i SSML-dokumentet.
<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>
Bokmärkeselement
Du kan använda elementet bookmark
i SSML för att referera till en specifik plats i text- eller taggsekvensen. Sedan använder du Speech SDK och prenumererar på BookmarkReached
händelsen för att få förskjutningen av varje markör i ljudströmmen. Elementet bookmark
är inte talat. Mer information finns i Prenumerera på synthesizer-händelser.
Användning av bookmark
elementets attribut beskrivs i följande tabell.
Attribut | beskrivning | Obligatorisk eller valfri |
---|---|---|
mark |
Referenstexten för elementet bookmark . |
Obligatoriskt |
Bokmärkesexempel
De värden som stöds för elementets bookmark
attribut beskrevs tidigare.
Du kanske till exempel vill veta tidsförskjutningen för varje blomord i följande kodfragment:
<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-element
En viseme är den visuella beskrivningen av ett fonme på talat språk. Det definierar ansiktets och munnens position medan en person talar. Du kan använda elementet mstts:viseme
i SSML för att begära viseme-utdata. Mer information finns i Hämta ansiktsposition med viseme.
Viseme-inställningen tillämpas på all indatatext i dess omslutande voice
element. Om du vill återställa eller ändra viseme-inställningen igen måste du använda ett nytt voice
element med antingen samma röst eller en annan röst.
Användning av viseme
elementets attribut beskrivs i följande tabell.
Attribut | beskrivning | Obligatorisk eller valfri |
---|---|---|
type |
Typ av viseme-utdata.
|
Obligatoriskt |
Kommentar
redlips_front
För närvarande stöder endast neurala röster i en-US
nationella inställningar och FacialExpression
stöder neurala röster i en-US
och zh-CN
nationella inställningar.
Viseme-exempel
De värden som stöds för elementets viseme
attribut beskrevs tidigare.
Det här SSML-kodfragmentet visar hur du begär blandningsformer med ditt syntetiserade tal.
<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>