Výslovnost pomocí SSML

Pomocí jazyka SSML (Speech Synthesis Markup Language) s textem můžete určit, jak se řeč vyslovuje. SSML můžete například použít s fony a vlastní lexikon ke zlepšení výslovnosti. SSML můžete také použít k definování výrazu slova nebo matematického výrazu.

Podrobnosti o použití prvků SSML ke zlepšení výslovnosti najdete v následujících částech. Další informace o syntaxi SSML najdete v tématu Struktura a události dokumentu SSML.

phoneme – element

Prvek phoneme se používá pro fonetickou výslovnost v dokumentech SSML. Vždy poskytovat lidskou čitelnost řeči jako záložní.

Telefon tické abecedy se skládají z telefonů, které jsou tvořeny písmeny, číslicemi nebo znaky, někdy v kombinaci. Každý telefon popisuje jedinečný zvuk řeči. Fonetická abeceda je na rozdíl od latinky, kde jakékoli písmeno může představovat více mluvených zvuků. Vezměte v úvahu různé en-US výslovnosti písmena "c" ve slovech "candy" a "přestat" nebo různé výslovnosti kombinace písmen "th" ve slovech "věc" a "ty".

Poznámka:

Seznam národních prostředí, která podporují fony, najdete v tabulce podpory jazyků poznámky pod čarou.

phoneme Použití atributů elementu je popsáno v následující tabulce.

Atribut Popis Požadované nebo volitelné
alphabet Fonetická abeceda, která se má použít při syntetizaci výslovnosti řetězce v atributu ph . Řetězec, který určuje abecedu, musí být zadán malými písmeny. Následující možnosti jsou možné abecedy, které můžete zadat:
Abeceda se vztahuje pouze na phoneme prvek.
Volitelné
ph Řetězec obsahující telefony, které určují výslovnost slova v phoneme prvku. Pokud zadaný řetězec obsahuje nerozpoznané telefony, text na řeč odmítne celý dokument SSML a nevygeneruje žádný výstup řeči zadaný v dokumentu.

Chcete-li ipazdůraznit jednu slabiku umístěním symbolu stresu před tímto slabikem, musíte označit všechny slabiky pro slovo. Nebo jinak, slabika před tímto stresovým symbolem je stresována. Pokud sapichcete zdůraznit jednu slabiku, musíte za tuto slabiku umístit symbol stresu, zda jsou označeny všechny slabiky.
Požaduje se

příklady telefonního motivu

Podporované hodnoty atributů elementu phoneme byly popsány dříve. V prvníchdvouch ph="tə.ˈmeɪ.toʊ"ph="təmeɪˈtoʊ"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>

Vlastní lexikon

V SSML můžete definovat, jak se v SSML čtou jednotlivé entity (například společnost, lékařský termín nebo emoji). Pokud chcete definovat, jak se čte více entit, vytvořte strukturovaný vlastní soubor lexicon XML. Pak nahrajete vlastní soubor LEXICON XML a na něj odkazujete pomocí elementu SSML lexicon .

Poznámka:

Seznam národních prostředí, která podporují vlastní lexikon, najdete v tabulce podpory jazyků poznámky pod čarou.

Rozhraní lexicon API Long Audio nepodporuje prvek. U dlouhého textu na řeč použijte místo toho rozhraní API pro dávkovou syntézu (Preview).

lexicon Použití atributů elementu je popsáno v následující tabulce.

Atribut Popis Požadované nebo volitelné
uri Identifikátor URI veřejně přístupného vlastního souboru LEXICON XML s příponou nebo .pls příponou .xml souboru. Použití služby Azure Blob Storage se doporučuje, ale nevyžaduje se. Další informace o vlastním souboru lexicon naleznete v tématu Výslovnost Lexicon Specification (PLS) verze 1.0. Požaduje se

Vlastní příklady lexikonu

Podporované hodnoty atributů elementu lexicon byly popsány dříve.

Po publikování vlastního slovníku na něj můžete odkazovat z vašeho SSML. Následující příklad SSML odkazuje na vlastní lexikon, který byl odeslán do https://www.example.com/customlexicon.xml. Podporujeme adresy URL lexiconu ze služby Azure Blob Storage, Advanced Media Services (AMS) Storage a GitHubu. Upozorňujeme však, že jiné veřejné adresy URL nemusí být kompatibilní.

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

Vlastní soubor lexiconu

Pokud chcete definovat, jak se čte více entit, můžete je definovat ve vlastním souboru LEXICON XML s příponou nebo .pls příponou .xml souboru.

Poznámka:

Vlastní soubor lexiconu je platný dokument XML, ale nelze jej použít jako dokument SSML.

Tady jsou některá omezení vlastního souboru lexiconu:

  • Velikost souboru: Vlastní velikost souboru lexiconu je omezena na maximálně 100 kB. Pokud velikost souboru překročí limit 100 kB, žádost o syntézu selže. Lexikon můžete rozdělit na více lexikonů a zahrnout je do SSML, pokud velikost souboru přesahuje 100 kB.
  • Aktualizace mezipaměti Lexicon: Vlastní lexicon se ukládá do mezipaměti s identifikátorem URI jako klíčem u textu na řeč při prvním načtení. Lexikon se stejným identifikátorem URI se nenačte během 15 minut, takže změna vlastního slovníku musí maximálně počkat 15 minut, aby se projevila.

Podporované prvky a atributy vlastního souboru lexicon XML jsou popsány v výslovnosti Lexicon Specification (PLS) verze 1.0. Tady je několik příkladů podporovaných prvků a atributů:

  • Prvek lexicon obsahuje alespoň jeden lexeme prvek. Lexicon obsahuje nezbytný xml:lang atribut, který označuje, pro které národní prostředí má být použito. Jeden vlastní lexikon je omezen na jedno národní prostředí podle návrhu, takže pokud ho použijete pro jiné národní prostředí, nefunguje. Prvek lexiconalphabet také atribut označující abecedu použitou v lexikonu. Hodnoty pole jsou ipa a x-microsoft-sapi.
  • Každý lexeme prvek obsahuje alespoň jeden grapheme prvek a jeden nebo více grapheme, aliasa phoneme prvky. U elementu lexeme se rozlišují malá a velká písmena ve vlastním lexikonu. Pokud například zadáte jenom fonát pro lexeme "Hello", nebude fungovat pro lexeme "hello".
  • Prvek grapheme obsahuje text, který popisuje orthografii.
  • Prvky alias se používají k označení výslovnosti zkratky nebo zkráceného termínu.
  • Element phoneme poskytuje text, který popisuje, jak lexeme se vyslovuje. Slabika je v abecedě IPA .. Prvek phoneme nemůže obsahovat prázdné znaky při použití abecedy IPA.
  • Pokud jsou prvky phonemealias k dispozici se stejným grapheme prvkem, alias mají vyšší prioritu.

Microsoft poskytuje ověřovací nástroj pro vlastní lexikon , který vám pomůže najít chyby (s podrobnými chybovými zprávami) ve vlastním souboru slovníku. Použití nástroje se doporučuje před použitím vlastního souboru LEXICON XML v produkčním prostředí se službou Speech.

Příklady vlastních souborů lexicon

Následující příklad XML (nikoli SSML) by byl obsažen ve vlastním souboru lexicon .xml . Když použijete tento vlastní lexikon, "BTW" se přečte jako "Mimochodem". "Benigni" je přečteno s poskytnutou IPA "bɛː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>

Výslovnost fráze nejde nastavit přímo pomocí vlastního slovníku. Pokud potřebujete nastavit výslovnost pro zkratku nebo zkrácený termín, nejprve zadejte a aliaspak přidružte k phoneme tomu alias. Příklad:

<?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>

Můžete také přímo zadat svůj očekávaný alias výraz pro zkratku nebo zkrácený termín. Příklad:

  <lexeme>
    <grapheme>Scotland MV</grapheme>
    <alias>Scotland Media Wave</alias>
  </lexeme>

Předchozí příklady vlastního souboru LEXICON XML používají abecedu IPA, která se také označuje jako sada ipa pro telefon. Doporučujeme použít IPA, protože se jedná o mezinárodní standard. U některých znaků IPA se jedná o předkomposovanou a dekomposovanou verzi, když jsou reprezentované kódem Unicode. Vlastní lexikon podporuje pouze rozloženou sadu Unicode.

Služba Speech definuje fonetickou sadu pro tato národní prostředí: en-US, fr-FR, de-DE, , ja-JPes-ES, , zh-CNzh-HKa zh-TW. Další informace o podrobné fonetické abecedě služby Speech najdete v fonetických sadách služby Speech.

Jako hodnotu atributu x-microsoft-sapialphabet můžete použít vlastní lexikony, jak je znázorněno zde:

<?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

Prvek say-as označuje typ obsahu, například číslo nebo datum, textu elementu. Tento prvek poskytuje pokyny pro modul syntézy řeči o tom, jak vyslovovat text.

say-as Použití atributů elementu je popsáno v následující tabulce.

Atribut Popis Požadované nebo volitelné
interpret-as Označuje typ obsahu textu elementu. Seznam typů najdete v následující tabulce. Požaduje se
format Poskytuje další informace o přesném formátování textu elementu pro typy obsahu, které mohou mít nejednoznačné formáty. SSML definuje formáty pro typy obsahu, které je používají. Viz následující tabulka. Volitelné
detail Označuje úroveň podrobností, které se mají vyslovovat. Tento atribut může například požadovat, aby modul syntézy řeči vyslovuje interpunkční znaménka. Neexistují žádné standardní hodnoty definované pro detail. Volitelné

Pro atributy jsou podporovány interpret-asformat následující typy obsahu. format Atribut zahrňte pouze v případě, že format sloupec není v této tabulce prázdný.

Poznámka:

Pro characters všechny národní prostředí řeči na řeč jsou podporovány hodnoty a spell-out hodnoty atributuinterpret-as. Ostatní interpret-as hodnoty atributů jsou podporovány pro všechny národní prostředí následujících jazyků: arabština, katalánština, čínština, dánština, holandština, angličtina, francouzština, finština, němčina, hindština, italština, japonština, korejština, norština, polština, portugalština, ruština, španělština a švédština.

interpretovat jako format Interpretace
characters, spell-out Text se mluví jako jednotlivá písmena (napsaná). Modul syntézy řeči vyslovuje:

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

Jako "T E S T".
cardinal, number Nic Text je mluvený jako kardinalní číslo. Modul syntézy řeči vyslovuje:

There are <say-as interpret-as="cardinal">10</say-as> options

Jako "Existuje deset možností.".
ordinal Nic Text je mluvený jako pořadové číslo. Modul syntézy řeči vyslovuje:

Select the <say-as interpret-as="ordinal">3rd</say-as> option

Jako "Vybrat třetí možnost".
number_digit Nic Text je mluvený jako posloupnost jednotlivých číslic. Modul syntézy řeči vyslovuje:

<say-as interpret-as="number_digit">123456789</say-as>

Jako "1 2 3 4 5 6 7 8 9."
fraction Nic Text je mluvený jako desetinné číslo. Modul syntézy řeči vyslovuje:

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

Jako "tři osmé palce".
date dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y Text se mluví jako datum. Atribut format určuje formát data (d=day, m=month a y=year). Modul syntézy řeči vyslovuje:

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

Jako "Dnes je říjen dvanáctý dva tisíce šestnáct."
Vyslovuje:

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

Jako "Dnes je prosinec desátý dva tisíce šestnáct."
time hms12, hms24 Text je mluvený jako čas. Atribut format určuje, zda je čas určen pomocí 12hodinových hodin (hms12) nebo 24hodinových hodin (hms24). Dvojtečka slouží k oddělení čísel představujících hodiny, minuty a sekundy. Tady je několik platných příkladů času: 12:35, 1:14:32, 08:15 a 02:50:45. Modul syntézy řeči vyslovuje:

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

Jak "Vlak odjíždí ve čtyřech A M."
duration hms, hm, ms Text je mluvený jako doba trvání. Atribut format určuje formát doby trvání (h=hour, m=minute a s=second). Modul syntézy řeči vyslovuje:

<say-as interpret-as="duration">01:18:30</say-as>

Jako "1 hodina 18 minut a třicet sekund".
Vyslovuje:

<say-as interpret-as="duration" format="ms">01:18</say-as>

Jako "jedna minuta a 18 sekund".
Tato značka je podporována pouze v angličtině a španělštině.
telephone Nic Text se mluví jako telefonní číslo. Modul syntézy řeči vyslovuje:

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

Jako "Moje číslo je směrové číslo osm osm 8 pět pět pět jeden dva dva dva."
currency Nic Text se mluví jako měna. Modul syntézy řeči vyslovuje:

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

Jako "devadesát devět amerických dolarů a devadesát centů".
address Nic Text je mluvený jako adresa. Modul syntézy řeči vyslovuje:

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

Jako "Jsem na 150th Court Northeast Redmond Washington."
name Nic Text se mluví jako jméno osoby. Modul syntézy řeči vyslovuje:

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

Jako [æd].
V čínských názvech se některé znaky vyslovují jinak, když se objeví v rodinném jménu. Například modul syntézy řeči říká 仇 v

<say-as interpret-as="name">仇先生</say-as>

Jako [qiú] místo [chóu].

Příklady řekněme jako

Podporované hodnoty atributů elementu say-as byly popsány dříve.

Modul syntézy řeči hovoří v následujícím příkladu jako "Váš první požadavek byl na jednu místnost v 15. říjnu devátého desátého s počátečním příjezdem v dvanácti pěti 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>

sub – element

Pomocí elementu sub označte, že textová hodnota atributu aliasu by měla být vyslovována místo ohraničeného textu elementu. Tímto způsobem obsahuje SSML mluvený i psaný formulář.

sub Použití atributů elementu je popsáno v následující tabulce.

Atribut Popis Požadované nebo volitelné
alias Textová hodnota, která by měla být vyslovována místo uzavřeného textu elementu. Požaduje se

dílčí příklady

Podporované hodnoty atributů elementu sub byly popsány dříve.

Modul syntézy řeči hovoří v následujícím příkladu jako "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>

Výslovnost pomocí MathML

Math Markup Language (MathML) je jazyk pro revize kompatibilní s jazykem XML, který popisuje matematický obsah a strukturu. Služba Speech může jako vstupní text použít MathML k správnému vyslovování matematických notací ve výstupním zvuku.

Poznámka:

Elementy MathML (značky) jsou v současné době podporovány v následujících národních prostředích: de-DE, en-AU, , en-USen-GB, es-MXes-ES, fr-CA, , fr-FR, ja-JPit-IT, , ko-KRpt-BRa .zh-CN

Všechny prvky ze specifikací MathML 2.0 a MathML 3.0 jsou podporovány s výjimkou elementů MathML 3.0 Elementary Mathy .

Poznamenejte si tyto elementy a atributy MathML:

  • Atribut xmlns je <math xmlns="http://www.w3.org/1998/Math/MathML"> nepovinný.
  • Funkce semantics, annotationa annotation-xml elementy nemají výstup řeči, takže jsou ignorovány.
  • Pokud se prvek nerozpozná, ignoruje se a podřízené prvky v něm se stále zpracovávají.

Syntaxe XML nepodporuje entity MathML, takže musíte použít odpovídající znaky Unicode k reprezentaci entit, například entita &copy; by měla být reprezentována jeho znaky&#x00A9;Unicode , jinak dojde k chybě.

Příklady pro MathML

Text na výstup řeči v tomto příkladu je "čtvercový plus b čtvercový rovna 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>

Další kroky