Dela via


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.

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: Elementets audio 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. Elementet audio kan också innehålla text och följande element: audio, break, p, s, phoneme, prosody, , say-asoch sub.
  • 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-asoch sub.
  • lang: Det här elementet kan innehålla alla andra element utom mstts:backgroundaudio, voiceoch speak.
  • 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-asoch sub.
  • mstts:express-as: Det här elementet kan innehålla text och följande element: audio, break, emphasis, lang, phoneme, prosody, say-asoch sub.
  • 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-asoch s.
  • 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, suboch s.
  • s: Det här elementet kan innehålla text och följande element: audio, break, phoneme, prosody, say-as, mstts:express-asoch sub.
  • 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 och voice.
  • voice: Det här elementet kan innehålla alla andra element utom mstts:backgroundaudio och speak.

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 &amp; i stället för &, använda &lt; i stället för <, och använda &gt; i stället för >. Annars parsas inte SSML korrekt.

Ange till exempel green &amp; 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 &amp; 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:
  • x-svag
  • Svag
  • medium (standard)
  • Stark
  • x-strong
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 5 000 millisekunder. Om du anger ett värde som är större än det maximala värdet som stöds använder 5000mstjä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.

Attribut beskrivning Obligatorisk eller valfri
type Anger var och hur du lägger till tystnad. Följande typer av tystnad stöds:
  • Leading – Extra tystnad i början av texten. Värdet som du anger läggs till i den naturliga tystnaden innan texten börjar.
  • Leading-exact – Tystnad i början av texten. Värdet är en absolut tystnadslängd.
  • Tailing – Extra tystnad i slutet av texten. Värdet som du anger läggs till i den naturliga tystnaden efter sista ordet.
  • Tailing-exact – Tystnad i slutet av texten. Värdet är en absolut tystnadslängd.
  • Sentenceboundary – Extra tystnad mellan intilliggande meningar. Den faktiska tystnadslängden för den här typen inkluderar den naturliga tystnaden efter sista ordet i föregående mening, värdet du angav för den här typen och den naturliga tystnaden före startordet i nästa mening.
  • Sentenceboundary-exact – Tystnad mellan intilliggande meningar. Värdet är en absolut tystnadslängd.
  • Comma-exact – Tystnad vid kommatecken i halvbredd eller fullbreddsformat. Värdet är en absolut tystnadslängd.
  • Semicolon-exact – Tystnad vid semikolonet i halvbredd eller fullbreddsformat. Värdet är en absolut tystnadslängd.
  • Enumerationcomma-exact – Tystnad vid uppräknings kommatecknet i fullbreddsformat. Värdet är en absolut tystnadslängd.

En absolut tystnadstyp (med suffixet -exact ) ersätter alla annars naturliga inledande eller avslutande tystnader. Absoluta tystnadstyper har företräde framför motsvarande icke-absoluta typ. Om du till exempel anger både Leading och Leading-exact typer Leading-exact börjar typen gälla. WordBoundary-händelsenhar företräde framför skiljeteckenrelaterade tystnadsinställningar, inklusive Comma-exact, Semicolon-exacteller Enumerationcomma-exact. När du använder både WordBoundary händelse- och skiljeteckenrelaterade tystnadsinställningar börjar inte de skiljeteckenrelaterade tystnadsinställningarna gälla.
Obligatoriskt
Value 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 5 000 millisekunder. Om du anger ett värde som är större än det maximala värdet som stöds använder 5000mstjänsten . Obligatoriskt

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.
  • redlips_front – läppsynkronisering med viseme-ID och utdata för ljudförskjutning
  • FacialExpression – blanda former 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>

Nästa steg