Dela via


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.

Telefon 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 ett lexeme element. Lexicon innehåller det attribut som krävs xml: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. Elementet lexicon har också ett alphabet attribut som anger det alfabet som används i lexikonet. De möjliga värden är ipa och x-microsoft-sapi.
  • Varje lexeme element innehåller minst ett grapheme element och ett eller flera grapheme, aliasoch phoneme element. Elementet lexeme är skiftlägeskänsligt i det anpassade lexikonet. Om du till exempel bara anger ett fonem för lexeme "Hello" fungerar det inte för lexeme "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 uttalas lexeme . Den stavbara gränsen är ". " i IPA-alfabetet. Elementet phoneme får inte innehålla blanksteg när du använder IPA-alfabetet.
  • När elementen alias och phoneme har samma grapheme element alias 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-ESja-JP, zh-CN, zh-HKoch zh-TW. de-DEfr-FRen-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-BRoch 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, annotationoch annotation-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 &copy; representeras av dess unicode-tecken &#x00A9;, 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>

Nästa steg