Uitspraak met SSML
U kunt SSML (Speech Synthesis Markup Language) gebruiken met tekst naar spraak om op te geven hoe de spraak wordt uitgesproken. U kunt bijvoorbeeld SSML gebruiken met telefoontjes en een aangepast lexicon om de uitspraak te verbeteren. U kunt SSML ook gebruiken om te definiëren hoe een woord of wiskundige expressie wordt uitgesproken.
Raadpleeg de volgende secties voor meer informatie over het gebruik van SSML-elementen om de uitspraak te verbeteren. Zie de SSML-documentstructuur en -gebeurtenissen voor meer informatie over de SSML-syntaxis.
phoneme-element
Het phoneme
element wordt gebruikt voor fonetische uitspraak in SSML-documenten. Zorg altijd voor leesbare spraak als terugval.
Fonetische alfabetten bestaan uit telefoons, die bestaan uit letters, cijfers of tekens, soms in combinatie. Elke telefoon beschrijft een uniek geluid van spraak. Het fonetische alfabet staat in tegenstelling tot het Latijnse alfabet, waarbij elke letter meerdere gesproken geluiden kan vertegenwoordigen. Houd rekening met de verschillende en-US
uitspraken van de letter "c" in de woorden "candy" en "cease" of de verschillende uitspraak van de lettercombinatie "th" in de woorden "ding" en "die."
Notitie
Zie voetnoten in de taalondersteuningstabel voor een lijst met landinstellingen die ondersteuning bieden voor telefoontjes.
Het gebruik van de kenmerken van het phoneme
element wordt beschreven in de volgende tabel.
Kenmerk | Beschrijving | Vereist of optioneel |
---|---|---|
alphabet |
Het fonetische alfabet dat moet worden gebruikt wanneer u de uitspraak van de tekenreeks in het ph kenmerk samengeeft. De tekenreeks waarmee het alfabet wordt opgegeven, moet worden opgegeven in kleine letters. De volgende opties zijn de mogelijke alfabetten die u kunt opgeven:
Het alfabet is alleen van toepassing op het phoneme element. |
Optioneel |
ph |
Een tekenreeks met telefoons die de uitspraak van het woord in het phoneme element opgeven. Als de opgegeven tekenreeks niet-herkende telefoons bevat, weigert tekst naar spraak het hele SSML-document en produceert geen van de spraakuitvoer die in het document is opgegeven.Als ipa u één lettergreep wilt benadrukken door het stresssymbool voor deze lettergreep te plaatsen, moet u alle lettergrepen voor het woord markeren. Of anders wordt de lettergreep voor dit stresssymbool gestrest. Als sapi u één lettergreep wilt benadrukken, moet u het stresssymbool na deze lettergreep plaatsen, ongeacht of alle lettergrepen van het woord zijn gemarkeerd. |
Vereist |
voorbeelden van phoneme
De ondersteunde waarden voor kenmerken van het phoneme
element zijn eerder beschreven. In de eerste twee voorbeelden worden de waarden van ph="tə.ˈmeɪ.toʊ"
of ph="təmeɪˈtoʊ"
opgegeven om de lettergreep meɪ
te benadrukken.
<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>
Aangepast lexicon
U kunt definiëren hoe individuele entiteiten (zoals bedrijf, een medische term of emoji) worden gelezen in SSML met behulp van het telefoonme en subelementen . Als u wilt definiëren hoe meerdere entiteiten worden gelezen, maakt u een xml-gestructureerd aangepast lexiconbestand. Vervolgens uploadt u het aangepaste lexicon-XML-bestand en verwijst u ernaar met het SSML-element lexicon
.
Notitie
Zie voetnoten in de taalondersteuningstabel voor een lijst met landinstellingen die ondersteuning bieden voor aangepaste lexiconen.
Het lexicon
element wordt niet ondersteund door de Long Audio-API. Gebruik in plaats daarvan de batchsynthese-API (preview) voor tekst naar spraak met lange vormen.
Het gebruik van de kenmerken van het lexicon
element wordt beschreven in de volgende tabel.
Kenmerk | Beschrijving | Vereist of optioneel |
---|---|---|
uri |
De URI van het openbaar toegankelijke aangepaste lexicon XML-bestand met de .xml of .pls bestandsextensie. Het gebruik van Azure Blob Storage wordt aanbevolen, maar is niet vereist. Zie Uitspraak Lexicon Specification (PLS) versie 1.0 voor meer informatie over het aangepaste lexiconbestand. |
Vereist |
Voorbeelden van aangepaste lexiconen
De ondersteunde waarden voor kenmerken van het lexicon
element zijn eerder beschreven.
Nadat u uw aangepaste lexicon hebt gepubliceerd, kunt u ernaar verwijzen vanuit uw SSML. In het volgende SSML-voorbeeld wordt verwezen naar een aangepast lexicon waarnaar is geüpload https://www.example.com/customlexicon.xml
. We ondersteunen lexicon-URL's van Azure Blob Storage, Advanced Media Services (AMS) Storage en GitHub. Houd er echter rekening mee dat andere openbare URL's mogelijk niet compatibel zijn.
<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>
Aangepast lexicon-bestand
Als u wilt definiëren hoe meerdere entiteiten worden gelezen, kunt u deze definiëren in een aangepast lexicon XML-bestand met de .xml
of .pls
bestandsextensie.
Notitie
Het aangepaste lexiconbestand is een geldig XML-document, maar kan niet worden gebruikt als een SSML-document.
Hier volgen enkele beperkingen van het aangepaste lexiconbestand:
- Bestandsgrootte: de aangepaste lexicon-bestandsgrootte is beperkt tot maximaal 100 kB. Als de bestandsgrootte groter is dan de limiet van 100 kB, mislukt de syntheseaanvraag. U kunt uw lexicon splitsen in meerdere lexicons en opnemen in SSML als de bestandsgrootte groter is dan 100 kB.
- Lexicon cache vernieuwen: de aangepaste lexicon wordt in de cache opgeslagen met de URI als sleutel voor tekst naar spraak wanneer deze voor het eerst wordt geladen. Het lexicon met dezelfde URI wordt niet binnen 15 minuten opnieuw geladen, dus de aangepaste lexiconwijziging moet maximaal 15 minuten wachten.
De ondersteunde elementen en kenmerken van een aangepast lexicon XML-bestand worden beschreven in de Uitspraak Lexicon Specification (PLS) versie 1.0. Hier volgen enkele voorbeelden van de ondersteunde elementen en kenmerken:
- Het
lexicon
element bevat ten minste éénlexeme
element. Lexicon bevat het benodigdexml:lang
kenmerk om aan te geven voor welke landinstelling het moet worden toegepast. Eén aangepast lexicon is per ontwerp beperkt tot één landinstelling, dus als u deze op een andere landinstelling toepast, werkt het niet. Hetlexicon
element heeft ook eenalphabet
kenmerk om het alfabet aan te geven dat in het lexicon wordt gebruikt. De mogelijke waarden zijnipa
enx-microsoft-sapi
. - Elk
lexeme
element bevat ten minste ééngrapheme
element en een of meergrapheme
,alias
enphoneme
elementen. Hetlexeme
element is hoofdlettergevoelig in het aangepaste lexicon. Als u bijvoorbeeld alleen een telefoonme opgeeft voor delexeme
'Hallo', werkt het niet voor delexeme
'hallo'. - Het
grapheme
element bevat tekst die de orthografie beschrijft. - De
alias
elementen worden gebruikt om de uitspraak van een acroniem of een verkorte term aan te geven. - Het
phoneme
element bevat tekst die beschrijft hoe hetlexeme
wordt uitgesproken. De lettergreepgrens is '.' in het IPA-alfabet. Hetphoneme
element mag geen witruimte bevatten wanneer u het IPA-alfabet gebruikt. - Wanneer de
alias
elementenphoneme
worden geleverd met hetzelfdegrapheme
element,alias
heeft deze een hogere prioriteit.
Microsoft biedt een validatiehulpmiddel voor het aangepaste lexicon waarmee u fouten (met gedetailleerde foutberichten) kunt vinden in het aangepaste lexiconbestand. Het gebruik van het hulpprogramma wordt aanbevolen voordat u het aangepaste lexicon XML-bestand in productie gebruikt met de Speech-service.
Voorbeelden van aangepaste lexiconbestanden
Het volgende XML-voorbeeld (niet SSML) is opgenomen in een aangepast lexiconbestand .xml
. Wanneer u deze aangepaste lexicon gebruikt, wordt 'BTW' gelezen als 'Trouwens'. "Benigni" wordt gelezen met de meegeleverde 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>
U kunt de uitspraak van een woordgroep niet rechtstreeks instellen met behulp van het aangepaste lexicon. Als u de uitspraak wilt instellen voor een acroniem of een verkorte term, geeft u eerst een alias
en koppelt u de phoneme
uitspraak vervolgens aan die alias
term. Voorbeeld:
<?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>
U kunt uw verwachte alias
naam ook rechtstreeks opgeven voor de acroniem of verkorte term. Voorbeeld:
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>Scotland Media Wave</alias>
</lexeme>
In de voorgaande voorbeelden van aangepaste lexicon XML-bestanden wordt het IPA-alfabet gebruikt, dat ook wel de IPA-telefoonset wordt genoemd. We raden u aan de IPA te gebruiken omdat dit de internationale standaard is. Voor sommige IPA-tekens zijn ze de vooraf samengestelde en ontcomposeerde versie wanneer ze worden weergegeven met Unicode. Het aangepaste lexicon ondersteunt alleen de uitgevouwen Unicode.
De Speech-service definieert een fonetische set voor deze landinstellingen: en-US
, , de-DE
fr-FR
, es-ES
, ja-JP
, , zh-CN
, , en zh-HK
zh-TW
. Zie de spraakservice-fonetische sets voor meer informatie over het gedetailleerde fonetische alfabet van de Speech-service.
U kunt de x-microsoft-sapi
als de waarde voor het alphabet
kenmerk gebruiken met aangepaste lexicons, zoals hier wordt gedemonstreerd:
<?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
Het say-as
element geeft het inhoudstype, zoals getal of datum, van de tekst van het element aan. Dit element biedt richtlijnen voor de spraaksynthese-engine over het uitspreken van de tekst.
Het gebruik van de kenmerken van het say-as
element wordt beschreven in de volgende tabel.
Kenmerk | Beschrijving | Vereist of optioneel |
---|---|---|
interpret-as |
Geeft het inhoudstype van de tekst van een element aan. Zie de volgende tabel voor een lijst met typen. | Vereist |
format |
Biedt aanvullende informatie over de exacte opmaak van de tekst van het element voor inhoudstypen die mogelijk dubbelzinnige indelingen hebben. SSML definieert indelingen voor inhoudstypen die deze gebruiken. Zie de onderstaande tabel. | Optioneel |
detail |
Geeft het detailniveau aan dat moet worden gesproken. Dit kenmerk kan bijvoorbeeld vragen dat de spraaksynthese-engine interpunctiemarkeringen uitspreekt. Er zijn geen standaardwaarden gedefinieerd voor detail . |
Optioneel |
De volgende inhoudstypen worden ondersteund voor de interpret-as
en format
kenmerken. Neem het format
kenmerk alleen op als format
de kolom niet leeg is in deze tabel.
Notitie
De characters
en spell-out
waarden voor het interpret-as
kenmerk worden ondersteund voor alle landinstellingen voor tekst naar spraak.
Andere interpret-as
kenmerkwaarden worden ondersteund voor alle landinstellingen van de volgende talen: Arabisch, Catalaans, Chinees, Deens, Nederlands, Engels, Frans, Fins, Duits, Hindi, Italiaans, Japans, Koreaans, Noors, Pools, Portugees, Russisch, Spaans en Zweeds.
interpret-as | indeling | Interpretatie |
---|---|---|
characters , spell-out |
De tekst wordt gesproken als afzonderlijke letters (gespeld). De spraaksynthese-engine spreekt het volgende uit:<say-as interpret-as="characters">test</say-as> Als 'T E S T'. |
|
cardinal , number |
Geen | De tekst wordt gesproken als een kardinaal getal. De spraaksynthese-engine spreekt het volgende uit:There are <say-as interpret-as="cardinal">10</say-as> options Als 'Er zijn tien opties'. |
ordinal |
Geen | De tekst wordt gesproken als een rangnummer. De spraaksynthese-engine spreekt het volgende uit:Select the <say-as interpret-as="ordinal">3rd</say-as> option Selecteer de derde optie. |
number_digit |
Geen | De tekst wordt gesproken als een reeks afzonderlijke cijfers. De spraaksynthese-engine spreekt het volgende uit:<say-as interpret-as="number_digit">123456789</say-as> Als "1 2 3 4 5 6 7 8 9." |
fraction |
Geen | De tekst wordt gesproken als een breuknummer. De spraaksynthese-engine spreekt het volgende uit:<say-as interpret-as="fraction">3/8</say-as> of an inch Als 'drie achtsten van een inch'. |
date |
dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y | De tekst wordt gesproken als een datum. Het format kenmerk specificeert de notatie van de datum (d=day, m=month en y=year). De spraaksynthese-engine spreekt het volgende uit:Today is <say-as interpret-as="date">10-12-2016</say-as> Als "Vandaag is twaalfde oktober 2000 zestien." Uitspreekt: Today is <say-as interpret-as="date" format="dmy">10-12-2016</say-as> Als "Vandaag is tiende december 2000 zestien." |
time |
hms12, hms24 | De tekst wordt gesproken als een tijd. Het format kenmerk geeft aan of de tijd wordt opgegeven met behulp van een 12-uurs klok (hms12) of een 24-uurs klok (hms24). Gebruik een dubbele punt om getallen te scheiden die uren, minuten en seconden vertegenwoordigen. Hier volgen enkele geldige tijdvoorbeelden: 12:35, 1:14:32, 08:15 en 02:50:45. De spraaksynthese-engine spreekt het volgende uit:The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as> Als 'De trein vertrekt om vier uur's'. |
duration |
hms, hm, ms | De tekst wordt gesproken als een duur. Het format kenmerk geeft de notatie van de duur op (h=uur, m=minuut en s=seconde). De spraaksynthese-engine spreekt het volgende uit:<say-as interpret-as="duration">01:18:30</say-as> Als "één uur achttien minuten en dertig seconden". Uitspreekt: <say-as interpret-as="duration" format="ms">01:18</say-as> Als 'één minuut en achttien seconden'. Deze tag wordt alleen ondersteund in het Engels en Spaans. |
telephone |
Geen | De tekst wordt gesproken als telefoonnummer. De spraaksynthese-engine spreekt het volgende uit:The number is <say-as interpret-as="telephone">(888) 555-1212</say-as> Als "Mijn nummer is netnummer acht acht acht acht vijf vijf vijf één twee één twee." |
currency |
Geen | De tekst wordt gesproken als een valuta. De spraaksynthese-engine spreekt het volgende uit:<say-as interpret-as="currency">99.9 USD</say-as> Als 'negentig dollar en negentig cent'. |
address |
Geen | De tekst wordt gesproken als adres. De spraaksynthese-engine spreekt het volgende uit:I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as> Als "Ik ben bij 150th Court Northeast Redmond Washington." |
name |
Geen | De tekst wordt gesproken als de naam van een persoon. De spraaksynthese-engine spreekt het volgende uit:<say-as interpret-as="name">ED</say-as> Als [æd]. In Chinese namen worden sommige tekens anders uitgesproken wanneer ze in een familienaam worden weergegeven. De spraaksynthese-engine zegt bijvoorbeeld 仇 in <say-as interpret-as="name">仇先生</say-as> Als [qiú] in plaats van [chóu]. |
say-as-voorbeelden
De ondersteunde waarden voor kenmerken van het say-as
element zijn eerder beschreven.
De spraaksynthese-engine spreekt het volgende voorbeeld uit: "Uw eerste aanvraag was voor één kamer op 1 oktober 2017 met vroege aankomst om twaalf dertig uur.
<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>
subelement
Gebruik het sub
element om aan te geven dat de tekstwaarde van het aliaskenmerk moet worden uitgesproken in plaats van de ingesloten tekst van het element. Op deze manier bevat de SSML zowel een gesproken als geschreven vorm.
Het gebruik van de kenmerken van het sub
element wordt beschreven in de volgende tabel.
Kenmerk | Beschrijving | Vereist of optioneel |
---|---|---|
alias |
De tekstwaarde die moet worden uitgesproken in plaats van de ingesloten tekst van het element. | Vereist |
subvoorbeelden
De ondersteunde waarden voor kenmerken van het sub
element zijn eerder beschreven.
De spraaksynthese-engine spreekt het volgende voorbeeld uit als '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>
Uitspraak met MathML
De Wiskundige opmaaktaal (MathML) is een XML-compatibele opmaaktaal waarmee wiskundige inhoud en structuur worden beschreven. De Speech-service kan mathML als invoertekst gebruiken om wiskundige notaties goed uit te spreken in de uitvoeraudio.
Notitie
De MathML-elementen (tags) worden momenteel ondersteund in de volgende landinstellingen: de-DE
, , en-US
en-AU
en-GB
, , es-ES
, , es-MX
, fr-CA
, ja-JP
fr-FR
ko-KR
it-IT
, , en .zh-CN
pt-BR
Alle elementen van de specificaties MathML 2.0 en MathML 3.0 worden ondersteund, behalve de basisberekeningselementen MathML 3.0.
Noteer deze MathML-elementen en -kenmerken:
- Het
xmlns
kenmerk is<math xmlns="http://www.w3.org/1998/Math/MathML">
optioneel. - De
semantics
,annotation
enannotation-xml
elementen voeren geen spraak uit, zodat ze worden genegeerd. - Als een element niet wordt herkend, wordt dit genegeerd en worden de onderliggende elementen in het element nog steeds verwerkt.
De XML-syntaxis biedt geen ondersteuning voor de MathML-entiteiten, dus u moet de bijbehorende Unicode-tekens gebruiken om de entiteiten weer te geven. De entiteit ©
moet bijvoorbeeld worden vertegenwoordigd door de Unicode-tekens ©
, anders treedt er een fout op.
MathML-voorbeelden
De tekst-naar-spraakuitvoer voor dit voorbeeld is 'a squared plus b squared equal c squared'.
<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>