Delen via


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 ipau éé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 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 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 éé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 telefoonme opgeeft voor de lexeme 'Hallo', werkt het niet voor de lexeme '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 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 alias elementen phoneme worden geleverd met hetzelfde grapheme 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 aliasen koppelt u de phoneme uitspraak vervolgens aan die aliasterm. 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-DEfr-FR, es-ES, ja-JP, , zh-CN, , en zh-HKzh-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-USen-AUen-GB, , es-ES, , es-MX, fr-CA, ja-JPfr-FRko-KRit-IT, , en .zh-CNpt-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, annotationen annotation-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 &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