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 fonemen 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.

Foneme-element

Het phoneme element wordt gebruikt voor fonetische uitspraak in SSML-documenten. Zorg altijd voor menselijk leesbare tekst 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 uitspraken van de lettercombinatie "th" in de woorden "thing" en "those."

Opmerking

Zie voetnoten in de taalondersteuningstabel voor een lijst met landinstellingen die ondersteuning bieden voor fonemen.

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 voor het synthetiseren van de uitspraak van de tekenreeks in het ph attribuut. 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. Elke landinstelling ondersteunt een specifieke telefoonset. Zie SSML fonetisch alfabet. Als de opgegeven tekenreeks niet-herkende fonemen bevat, geeft de tekst-naar-spraakservice een http 400-fout voor ongeldige SSML.

Als ipau één lettergreep wilt benadrukken door het stresssymbool voor deze lettergreep te plaatsen, moet u alle lettergrepen voor het woord markeren. Of anderszins wordt de lettergreep voor dit stresssymbool beklemtoond. Als sapiu één lettergreep wilt benadrukken, moet u het stresssymbool na deze lettergreep plaatsen, ongeacht of alle lettergrepen van het woord zijn gemarkeerd.
Vereist

Voorbeelden van fonetische voorbeelden

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 .

Opmerking

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 teksten.

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 niet vereist, GitHub URI's en andere openbaar toegankelijke koppelingen worden ook ondersteund. Als u geen aangepast lexicon openbaar wilt maken, kunt u SAS gebruiken. 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 dat is geüpload naar https://www.example.com/customlexicon.xml. We ondersteunen lexicon-URL's van Azure Blob Storage. 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.

Opmerking

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 één lexeme element. Lexicon bevat het benodigde xml: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. Het lexicon element heeft ook een alphabet kenmerk om het alfabet aan te geven dat in het lexicon wordt gebruikt. De mogelijke waarden zijn ipa en x-microsoft-sapi.
  • Elk lexeme element bevat ten minste één grapheme element en een of meer grapheme, aliasen phoneme elementen. Het lexeme element is hoofdlettergevoelig in het aangepaste lexicon. Als u bijvoorbeeld alleen een foneem opgeeft voor de lexeme 'Hallo', werkt het niet voor de lexeme 'hello'.
  • 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 het lexeme wordt uitgesproken. De lettergreepgrens is '.' in het IPA-alfabet. Het phoneme element mag geen witruimte bevatten wanneer u het IPA-alfabet gebruikt.
  • Wanneer de elementen alias en phoneme met hetzelfde grapheme element worden geleverd, heeft alias 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 woordenlijst gebruikt, wordt 'BTW' uitgesproken als 'By the way.' "Benigni" wordt uitgesproken 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 aliasen koppelt u de phoneme uitspraak vervolgens aan die aliasterm. Bijvoorbeeld:

<?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 ook rechtstreeks opgeven voor een acroniem of verkorte term. Bijvoorbeeld:

  <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 de sapi-fonetische set voor deze landinstellingen: en-US, en-CA, fr-FR, fr-CA, fr-BE, fr-CH, de-DE, de-AT, de-CH, es-ES, ja-JP, zh-CN, zh-HK, yue-CN, en zh-TW. Zie de Speechservice fonetische sets voor meer informatie over het gedetailleerde fonetische alfabet van de Speechservice.

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 volgende tabel. Optioneel
detail Geeft het niveau van detail aan dat moet worden uitgesproken. 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.

Opmerking

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.

interpretatie-als Formaat Interpretatie
characters, spell-out hoofdlettergevoelig De tekst wordt gesproken als afzonderlijke letters (gespeld). De spraaksynthese-engine spreekt uit:

<say-as interpret-as="characters">Test</say-as>

Als 'T E S T'.
Uitspreekt:

<say-as interpret-as="characters" format="casesensitive">Test</say-as>

Als "met hoofdletters T E S T."
alphanumeric Spell De tekst wordt gesproken als afzonderlijke letters (gespeld) met de juiste pauze. De spraaksynthese-engine spreekt uit:

<say-as interpret-as="alphanumeric" format="spell">ABCDEF</say-as>

Als 'A B C <pauze> D E F'.
U kunt pauzeren met '-'. De spraaksynthese-engine spreekt uit:

<say-as interpret-as="alphanumeric" format="spell">AB-CD-EF</say-as>

Als 'A B <pauze> C D <pauze> E F'.
cardinal, number Geen De tekst wordt gesproken als een kardinaal getal. De spraaksynthese-engine spreekt 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 ordinaal getal. De spraaksynthese-engine spreekt 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 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 uitgesproken als een breukgetal. De spraaksynthese-engine spreekt uit:

<say-as interpret-as="fraction">3/8</say-as> of an inch

Als 'drie achtsten van een inch'.
date dmy, mdy, ymd, ym, my, md, dm, d, m, y De tekst wordt uitgesproken als een datum. Het format kenmerk specificeert de notatie van de datum (d=day, m=month en y=year). De spraaksynthese-engine spreekt uit:

Today is <say-as interpret-as="date">10-12-2016</say-as>

Vandaag is twaalf oktober tweeduizend zestien.
Uitspreekt:

Today is <say-as interpret-as="date" format="dmy">10-12-2016</say-as>

Als "Vandaag is 10 december tweeduizend zestien."
time hms12, hms24 De tekst wordt uitgesproken als een tijdstip. 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 uit:

The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as>

De trein vertrekt om vier uur 's ochtends.
duration hms, hm, ms De tekst wordt gepresenteerd als een tijdsperiode. Het format kenmerk geeft de notatie van de duur op (h=uur, m=minuut en s=seconde). De spraaksynthese-engine spreekt 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 uit:

The number is <say-as interpret-as="telephone">(888) 555-1212</say-as>

Als "Mijn nummer is netcode acht acht acht vijf vijf vijf één twee één twee."
currency Geen De tekst wordt gesproken als een valuta. De spraaksynthese-engine spreekt uit:

<say-as interpret-as="currency">99.9 USD</say-as>

Als 'negenennegentig Amerikaanse dollars en negentig cent'.
unit Geen De tekst wordt gesproken als een eenheid. De spraaksynthese-engine spreekt uit:

<say-as interpret-as="unit">10 m</say-as>

Als 'tien meter'.
address Geen De tekst wordt gesproken als een toespraak. De spraaksynthese-engine spreekt uit:

I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as>

"Ik ben bij 150th Court Northeast Redmond Washington."
name Geen De tekst wordt gesproken als de naam van een persoon. De spraaksynthese-engine spreekt uit:

<say-as interpret-as="name">ED</say-as>

Indien bedoeld als phonetische notatie, overweeg om uitleg te geven in plaats van direct symbolen te gebruiken, om misverstanden te vermijden in het Nederlands.
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].

Voorbeelden van 'say-as'

De ondersteunde waarden voor kenmerken van het say-as element zijn eerder beschreven.

De spraaksynthesemotor spreekt het volgende voorbeeld uit: "Uw eerste aanvraag was voor één kamer op 19 oktober 2010 met vroege aankomst om twaalf vijfendertig 's middags."

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-Ava:DragonHDLatestNeural">
        <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-Ava:DragonHDLatestNeural">
        <sub alias="World Wide Web Consortium">W3C</sub>
    </voice>
</speak>

Markdown-documenten lezen

Als u de markdown-inhoud wilt lezen, kunt u de Markdown-tekst omhullen met het mstts:markdown-element. TTS leest alleen de tekstinhoud in de markdown en negeert de markdown-syntaxis.

Met de volgende SSML worden bijvoorbeeld twee zinnen voorgelezen: 'Dit is kop' en 'En dit is een vetgedrukte tekst', en de markdown-syntaxis wordt niet gelezen.

<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'>
    <mstts:markdown># This is headline 
And this is a **bold** text
    </mstts:markdown>
  </voice>
</speak>

Ondersteunde Markdown-syntaxis

TTS ondersteunt de markdown-syntaxis die is gedefinieerd in de CommonMark-specificatie. Dit is een veelgebruikte Markdown-specificatie. Zie CommonMark voor meer informatie over de CommonMark-specificatie.

Wiskundige expressies lezen

Er zijn twee manieren om een wiskundige expressie te lezen:

Opmerking

De twee functies worden momenteel ondersteund in de volgende taalinstellingen: de-DE, en-AU, en-GB, en-US, alle broertalen van het Engels, es-ES, es-MX, alle broertalen van het Spaans, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR en zh-CN.

Platte tekst met wiskundige uitdrukkingen lezen

Als u het lezen van complexe wiskundige expressies wilt inschakelen, kunt u element toevoegen <mstts:prompt domain="Math" /> om wiskundige uitspraakregels in te schakelen.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
       <mstts:prompt domain="Math" />
       x = (-b ± √(b² - 4ac)) / 2a
    </voice>
</speak>

Haakjes worden standaard niet voorgelezen in wiskundige expressies. Als u de haakjes wilt laten voorlezen, kunt u opgeven <mstts:mathspeechverbosity level="verbose" /> in SSML

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
       <mstts:prompt domain="Math" /><mstts:mathspeechverbosity level="verbose" />
       x = (-b ± √(b² - 4ac)) / 2a
    </voice>
</speak>

Als u de expressie wilt laten voorlezen in een andere taal met een meertalige stem, geeft u lang-element op in SSML.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US"> 
   <voice name="en-US-AvaMultilingualNeural"> 
      <mstts:prompt domain="Math" /> 
      <lang xml:lang="es-ES">x = (-b ± √(b² - 4ac)) / 2a</lang>
    </voice>
 </speak>

Wiskundige expressies lezen 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.

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:

  • De xmlns eigenschap in <math xmlns="http://www.w3.org/1998/Math/MathML"> is optioneel.
  • De semantics, annotationen annotation-xml elementen voeren geen spraak uit, zodat ze worden genegeerd.
  • Als een element niet wordt herkend, zal het worden genegeerd, maar de onderliggende elementen zullen nog steeds worden 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 &copy; moet bijvoorbeeld worden vertegenwoordigd door de Unicode-tekens &#x00A9;, 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>

Volgende stappen