Uttal med SSML
Du kan använda Speech Synthesis Markup Language (SSML) med text till tal för att ange hur talet uttalas. Du kan till exempel använda SSML med fonem och ett anpassat lexikon för att förbättra uttalet. Du kan också använda SSML för att definiera hur ett ord eller matematiskt uttryck uttalas.
Mer information om hur du använder SSML-element för att förbättra uttalet finns i följande avsnitt. Mer information om SSML-syntax finns i SSML-dokumentstruktur och -händelser.
phoneme-element
Elementet phoneme
används för fonetiska uttal i SSML-dokument. Ge alltid mänskligt läsbart tal som en reserv.
Fonetiska alfabet består av telefoner, som består av bokstäver, siffror eller tecken, ibland i kombination. Varje telefon beskriver ett unikt talljud. Det fonetiska alfabetet står i kontrast till det latinska alfabetet, där en bokstav kan representera flera talade ljud. Tänk på de olika en-US
uttalen av bokstaven "c" i orden "candy" och "cease" eller de olika uttalen i bokstavskombinationen "th" i orden "thing" och "those".
Kommentar
En lista över nationella inställningar som stöder fonem finns i fotnoter i språkstödstabellen.
Användning av phoneme
elementets attribut beskrivs i följande tabell.
Attribut | beskrivning | Obligatorisk eller valfri |
---|---|---|
alphabet |
Det fonetiska alfabet som ska användas när du syntetiserar uttalet av strängen ph i attributet. Strängen som anger alfabetet måste anges med gemener. Följande alternativ är de möjliga alfabet som du kan ange:
Alfabetet gäller endast i phoneme -elementet. |
Valfritt |
ph |
En sträng som innehåller telefoner som anger uttalet av ordet i elementet phoneme . Om den angivna strängen innehåller okända telefoner avvisar text till tal hela SSML-dokumentet och genererar inget av talutdata som anges i dokumentet.För ipa , för att betona en stavelse genom att placera stresssymbolen före denna stavelse, måste du markera alla stavelser för ordet. Annars är stavelsen före denna stresssymbol stressad. För sapi , om du vill betona en stavelse, måste du placera stresssymbolen efter den här stavelsen, oavsett om alla stavelser i ordet är markerade eller inte. |
Obligatoriskt |
phoneme-exempel
De värden som stöds för elementets phoneme
attribut beskrevs tidigare. I de två första exemplen anges värdena ph="tə.ˈmeɪ.toʊ"
för eller ph="təmeɪˈtoʊ"
för att betona stavelsen meɪ
.
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<phoneme alphabet="ipa" ph="tə.ˈmeɪ.toʊ"> tomato </phoneme>
</voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<phoneme alphabet="ipa" ph="təmeɪˈtoʊ"> tomato </phoneme>
</voice>
</speak>
<speak version="1.0" xmlns="https://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<phoneme alphabet="sapi" ph="iy eh n y uw eh s"> en-US </phoneme>
</voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<s>His name is Mike <phoneme alphabet="ups" ph="JH AU"> Zhou </phoneme></s>
</voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaNeural">
<phoneme alphabet='x-sampa' ph='he."lou'>hello</phoneme>
</voice>
</speak>
Anpassat lexikon
Du kan definiera hur enskilda entiteter (till exempel företag, en medicinsk term eller en emoji) ska läsas i SSML med hjälp av fonem- och underelementen. Om du vill definiera hur flera entiteter läses skapar du en XML-strukturerad anpassad lexikonfil. Sedan laddar du upp den anpassade LEXICON XML-filen och refererar till den med SSML-elementet lexicon
.
Kommentar
En lista över nationella inställningar som stöder anpassat lexikon finns i fotnoter i språkstödstabellen.
Elementet lexicon
stöds inte av API:et för långt ljud. För långformatstext till tal använder du batchsyntes-API:et (förhandsversion) i stället.
Användning av lexicon
elementets attribut beskrivs i följande tabell.
Attribut | beskrivning | Obligatorisk eller valfri |
---|---|---|
uri |
URI:n för den offentligt tillgängliga anpassade lexikon-XML-filen med antingen filnamnstillägget .xml eller .pls . Användning av Azure Blob Storage rekommenderas men krävs inte. Mer information om den anpassade lexikonfilen finns i Uttal Lexicon Specification (PLS) Version 1.0. |
Obligatoriskt |
Anpassade lexikonexempel
De värden som stöds för elementets lexicon
attribut beskrevs tidigare.
När du har publicerat ditt anpassade lexikon kan du referera till det från din SSML. Följande SSML-exempel refererar till ett anpassat lexikon som laddades upp till https://www.example.com/customlexicon.xml
. Vi stöder lexikon-URL:er från Azure Blob Storage, AMS Storage (Advanced Media Services) och GitHub. Observera dock att andra offentliga URL:er kanske inte är kompatibla.
<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">
<lexicon uri="https://www.example.com/customlexicon.xml"/>
BTW, we will be there probably at 8:00 tomorrow morning.
Could you help leave a message to Robert Benigni for me?
</voice>
</speak>
Anpassad lexikonfil
Om du vill definiera hur flera entiteter läses kan du definiera dem i en anpassad LEXICON XML-fil med filnamnstillägget .xml
eller .pls
.
Kommentar
Den anpassade lexikonfilen är ett giltigt XML-dokument, men det kan inte användas som ett SSML-dokument.
Här följer några begränsningar i den anpassade lexikonfilen:
- Filstorlek: Den anpassade lexikonfilens storlek är begränsad till högst 100 kB. Om filstorleken överskrider gränsen på 100 KB misslyckas syntesbegäran. Du kan dela upp lexikonet i flera lexikon och inkludera dem i SSML om filstorleken överstiger 100 kB.
- Uppdatering av Lexicon-cache: Det anpassade lexikonet cachelagras med URI:n som nyckel för text till tal när den läses in första dagen. Lexikonet med samma URI läses inte in igen inom 15 minuter, så den anpassade lexikonändringen måste vänta högst 15 minuter för att börja gälla.
De element och attribut som stöds i en anpassad LEXICON XML-fil beskrivs i Uttal Lexicon Specification (PLS) version 1.0. Här följer några exempel på de element och attribut som stöds:
- Elementet
lexicon
innehåller minst ettlexeme
element. Lexicon innehåller det attribut som krävsxml:lang
för att ange vilket språk det ska användas för. Ett anpassat lexikon är begränsat till ett språk genom design, så om du använder det för ett annat språk fungerar det inte. Elementetlexicon
har också ettalphabet
attribut som anger det alfabet som används i lexikonet. De möjliga värden äripa
ochx-microsoft-sapi
. - Varje
lexeme
element innehåller minst ettgrapheme
element och ett eller fleragrapheme
,alias
ochphoneme
element. Elementetlexeme
är skiftlägeskänsligt i det anpassade lexikonet. Om du till exempel bara anger ett fonem förlexeme
"Hello" fungerar det inte förlexeme
"hello". - Elementet
grapheme
innehåller text som beskriver ortografin. - Elementen
alias
används för att indikera uttalet av en förkortning eller en förkortad term. - Elementet
phoneme
innehåller text som beskriver hur uttalaslexeme
. Den stavbara gränsen är ". " i IPA-alfabetet. Elementetphoneme
får inte innehålla blanksteg när du använder IPA-alfabetet. - När elementen
alias
ochphoneme
har sammagrapheme
elementalias
har högre prioritet.
Microsoft tillhandahåller ett valideringsverktyg för det anpassade lexikonet som hjälper dig att hitta fel (med detaljerade felmeddelanden) i den anpassade lexikonfilen. Vi rekommenderar att du använder verktyget innan du använder den anpassade LEXICON XML-filen i produktion med Speech-tjänsten.
Exempel på anpassade lexikonfiler
Följande XML-exempel (inte SSML) finns i en anpassad lexikonfil .xml
. När du använder det här anpassade lexikonet läses "BTW" som "Förresten". "Benigni" läse med den angivna IPA "bɛˈniːnji."
<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="ipa" xml:lang="en-US">
<lexeme>
<grapheme>BTW</grapheme>
<alias>By the way</alias>
</lexeme>
<lexeme>
<grapheme>Benigni</grapheme>
<phoneme>bɛˈniːnji</phoneme>
</lexeme>
<lexeme>
<grapheme>😀</grapheme>
<alias>test emoji</alias>
</lexeme>
</lexicon>
Du kan inte ange uttalet av en fras direkt med hjälp av det anpassade lexikonet. Om du behöver ange uttalet för en förkortning eller en förkortad term anger du först en alias
, och associerar phoneme
sedan med den alias
. Till exempel:
<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="ipa" xml:lang="en-US">
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>ScotlandMV</alias>
</lexeme>
<lexeme>
<grapheme>ScotlandMV</grapheme>
<phoneme>ˈskɒtlənd.ˈmiːdiəm.weɪv</phoneme>
</lexeme>
</lexicon>
Du kan också ange ditt förväntade alias
för förkortningen eller förkortad term direkt. Till exempel:
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>Scotland Media Wave</alias>
</lexeme>
I föregående anpassade XML-filexempel för lexikon används IPA-alfabetet, som även kallas IPA-telefonuppsättningen. Vi föreslår att du använder IPA eftersom det är den internationella standarden. För vissa IPA-tecken är de den "förkompositerade" och "decomposed"-versionen när de representeras med Unicode. Det anpassade lexikonet stöder endast den sönderdelade Unicode.
Speech-tjänsten definierar en fonetikuppsättning för dessa språkvarianter: , , , , es-ES
ja-JP
, zh-CN
, zh-HK
och zh-TW
. de-DE
fr-FR
en-US
Mer information om det detaljerade fonetiska alfabetet för Speech-tjänsten finns i fonetiska uppsättningar för Speech-tjänsten.
Du kan använda x-microsoft-sapi
som värde för alphabet
attributet med anpassade lexikon som visas här:
<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="x-microsoft-sapi" xml:lang="en-US">
<lexeme>
<grapheme>BTW</grapheme>
<alias> By the way </alias>
</lexeme>
<lexeme>
<grapheme> Benigni </grapheme>
<phoneme> b eh 1 - n iy - n y iy </phoneme>
</lexeme>
</lexicon>
say-as-element
Elementet say-as
anger innehållstypen, till exempel tal eller datum, för elementets text. Det här elementet ger vägledning till talsyntesmotorn om hur du uttalar texten.
Användning av say-as
elementets attribut beskrivs i följande tabell.
Attribut | beskrivning | Obligatorisk eller valfri |
---|---|---|
interpret-as |
Anger innehållstypen för ett elements text. En lista över typer finns i följande tabell. | Obligatoriskt |
format |
Innehåller ytterligare information om den exakta formateringen av elementets text för innehållstyper som kan ha tvetydiga format. SSML definierar format för innehållstyper som använder dem. Se följande tabell. | Valfritt |
detail |
Anger detaljnivån som ska talas. Det här attributet kan till exempel begära att talsyntesmotorn uttalar skiljetecken. Inga standardvärden har definierats för detail . |
Valfritt |
Följande innehållstyper stöds för attributen interpret-as
och format
. format
Inkludera endast attributet om format
kolumnen inte är tom i den här tabellen.
Kommentar
Värdena characters
och spell-out
för interpret-as
attributet stöds för alla språkvarianter för text till tal.
Andra interpret-as
attributvärden stöds för alla språk på följande språk: arabiska, katalanska, kinesiska, danska, nederländska, engelska, franska, finska, tyska, hindi, italienska, japanska, koreanska, norska, polska, portugisiska, ryska, spanska och svenska.
tolka som | format | Tolkning |
---|---|---|
characters , spell-out |
Texten talas som enskilda bokstäver (utstavad). Talsyntesmotorn uttalar:<say-as interpret-as="characters">test</say-as> Som "T E S T." |
|
cardinal , number |
Ingen | Texten talas som ett kardinalnummer. Talsyntesmotorn uttalar:There are <say-as interpret-as="cardinal">10</say-as> options Som "Det finns tio alternativ." |
ordinal |
Ingen | Texten talas som ett ordningstal. Talsyntesmotorn uttalar:Select the <say-as interpret-as="ordinal">3rd</say-as> option Som "Välj det tredje alternativet". |
number_digit |
Ingen | Texten talas som en sekvens med enskilda siffror. Talsyntesmotorn uttalar:<say-as interpret-as="number_digit">123456789</say-as> Som "1 2 3 4 5 6 7 8 9." |
fraction |
Ingen | Texten talas som ett bråktal. Talsyntesmotorn uttalar:<say-as interpret-as="fraction">3/8</say-as> of an inch Som "tre åttondelar av en tum". |
date |
dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y | Texten talas som ett datum. Attributet format anger datumformatet (d=day, m=month och y=year). Talsyntesmotorn uttalar:Today is <say-as interpret-as="date">10-12-2016</say-as> Som "Idag är den tolfte oktober 2 000 sexton." Uttalar: Today is <say-as interpret-as="date" format="dmy">10-12-2016</say-as> Som "Idag är december tionde 2 000 sexton." |
time |
hms12, hms24 | Texten talas som en tid. Attributet format anger om tiden anges med hjälp av en 12-timmarsklocka (hms12) eller en 24-timmarsklocka (hms24). Använd ett kolon för att avgränsa tal som representerar timmar, minuter och sekunder. Här följer några giltiga tidsexempel: 12:35, 1:14:32, 08:15 och 02:50:45. Talsyntesmotorn uttalar:The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as> Som "Tåget avgår vid fyra A M." |
duration |
hms, hm, ms | Texten talas som en varaktighet. Attributet format anger varaktighetens format (h=hour, m=minute och s=second). Talsyntesmotorn uttalar:<say-as interpret-as="duration">01:18:30</say-as> Som "en timme arton minuter och trettio sekunder". Uttalar: <say-as interpret-as="duration" format="ms">01:18</say-as> Som "en minut och arton sekunder". Den här taggen stöds endast på engelska och spanska. |
telephone |
Ingen | Texten talas som ett telefonnummer. Talsyntesmotorn uttalar:The number is <say-as interpret-as="telephone">(888) 555-1212</say-as> Som "Mitt nummer är riktnummer åtta åtta åtta åtta fem fem fem en två en två." |
currency |
Ingen | Texten talas som en valuta. Talsyntesmotorn uttalar:<say-as interpret-as="currency">99.9 USD</say-as> Som 99 dollar och nittio cent. |
address |
Ingen | Texten talas som en adress. Talsyntesmotorn uttalar:I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as> Som "Jag är vid 150th Court Northeast Redmond Washington." |
name |
Ingen | Texten talas som en persons namn. Talsyntesmotorn uttalar:<say-as interpret-as="name">ED</say-as> Som [æd]. I kinesiska namn uttalar vissa tecken annorlunda när de visas i ett familjenamn. Till exempel säger talsyntesmotorn 仇 i <say-as interpret-as="name">仇先生</say-as> Som [qiú] i stället för [chóu]. |
say-as-exempel
De värden som stöds för elementets say-as
attribut beskrevs tidigare.
Talsyntesmotorn talar följande exempel som "Din första begäran var för ett rum den 18 oktober 2000 med tidig ankomst klockan tolv trettiofem PM."
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaMultilingualNeural">
<p>
Your <say-as interpret-as="ordinal"> 1st </say-as> request was for <say-as interpret-as="cardinal"> 1 </say-as> room
on <say-as interpret-as="date" format="mdy"> 10/19/2010 </say-as>, with early arrival at <say-as interpret-as="time" format="hms12"> 12:35pm </say-as>.
</p>
</voice>
</speak>
underelement
Använd elementet sub
för att ange att aliasattributets textvärde ska uttalas i stället för elementets omslutna text. På så sätt innehåller SSML både ett talat och skriftligt formulär.
Användning av sub
elementets attribut beskrivs i följande tabell.
Attribut | beskrivning | Obligatorisk eller valfri |
---|---|---|
alias |
Det textvärde som ska uttalas i stället för elementets omslutna text. | Obligatoriskt |
underexempel
De värden som stöds för elementets sub
attribut beskrevs tidigare.
Talsyntesmotorn talar följande exempel som "World Wide Web Consortium".
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AvaMultilingualNeural">
<sub alias="World Wide Web Consortium">W3C</sub>
</voice>
</speak>
Uttal med MathML
MathML (Mathematical Markup Language) är ett XML-kompatibelt påläggsspråk som beskriver matematiskt innehåll och struktur. Speech-tjänsten kan använda MathML som indatatext för att korrekt uttala matematiska noteringar i utdataljudet.
Kommentar
MathML-elementen (taggar) stöds för närvarande på följande språk: de-DE
, en-AU
, en-GB
, en-US
, es-ES
, es-MX
, fr-CA
, fr-FR
, it-IT
, ja-JP
, ko-KR
, , pt-BR
och zh-CN
.
Alla element från MathML 2.0 - och MathML 3.0-specifikationerna stöds, förutom elementen MathML 3.0 Elementary Math .
Anteckna dessa MathML-element och attribut:
- Attributet
xmlns
i<math xmlns="http://www.w3.org/1998/Math/MathML">
är valfritt. - Elementen
semantics
,annotation
ochannotation-xml
matar inte ut tal, så de ignoreras. - Om ett element inte identifieras ignoreras det och de underordnade elementen i det bearbetas fortfarande.
XML-syntaxen stöder inte MathML-entiteterna, så du måste använda motsvarande unicode-tecken för att representera entiteterna, till exempel ska entiteten ©
representeras av dess unicode-tecken ©
, annars uppstår ett fel.
MathML-exempel
Text till tal-utdata för det här exemplet är "en kvadrat plus b kvadrat är lika med c kvadrat".
<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-JennyNeural'>
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<msup>
<mi>a</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mi>b</mi>
<mn>2</mn>
</msup>
<mo>=</mo>
<msup>
<mi>c</mi>
<mn>2</mn>
</msup>
</math>
</voice>
</speak>