Kiejtés SSML-vel
A beszédszintézis jelölőnyelvét (SSML) szöveggel is használhatja a beszéd kimondásához. Használhatja például az SSML-t telefonnal és egyéni lexikonnal a kiejtés javítására. Az SSML használatával azt is meghatározhatja, hogy egy szó vagy matematikai kifejezés hogyan legyen kimondva.
A kiejtés javítása érdekében az SSML-elemek használatával kapcsolatos részletekért tekintse meg az alábbi szakaszokat. Az SSML-szintaxissal kapcsolatos további információkért tekintse meg az SSML-dokumentum struktúráját és eseményeit.
telefonelem
Az phoneme
elemet az SSML-dokumentumok fonetikus kiejtésére használják. Mindig biztosítson emberi olvasásra alkalmas beszédet tartalékként.
Telefon betűrendek telefonokból állnak, amelyek betűkből, számokból vagy karakterekből állnak, néha kombinálva. Minden telefon egyedi beszédhangot ír le. A fonetikus ábécé ellentétben áll a latin ábécével, ahol bármely betű több beszélt hangot jelölhet. Vegye figyelembe a "c" betű különböző en-US
kiejtéseit a "candy" és a "cease" szavakban, vagy a "th" betűkombináció különböző kiejtéseit a "dolog" és az "e" szavakban.
Feljegyzés
A telefonhangokat támogató területi beállítások listáját a nyelvtámogatási táblázatban található lábjegyzetekben találja.
phoneme
Az elem attribútumainak használatát az alábbi táblázat ismerteti.
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
alphabet |
Az attribútumban ph lévő sztring kiejtésének szintetizálásához használandó fonetikus ábécé. Az ábécét meghatározó sztringet kisbetűkben kell megadni. A következő lehetőségek a megadható ábécék:
Az ábécé csak az phoneme elemre vonatkozik. |
Választható |
ph |
Egy telefonokat tartalmazó sztring, amely megadja az elemben lévő szó kiejtését phoneme . Ha a megadott sztring ismeretlen telefonokat tartalmaz, a beszédszöveg elutasítja a teljes SSML-dokumentumot, és nem állítja elő a dokumentumban megadott beszédkimenetet.Ahhoz ipa , hogy egy szótagot a szótag elé helyezve stresszszimbólumot helyezzen el, meg kell jelölnie a szó összes szótagját. Máskülönben a szótag, mielőtt ez a stressz szimbólum ki van emelve. Mert sapi ha egy szótagot szeretne hangsúlyozni, akkor a szótag után kell elhelyeznie a stresszszimbólumot, függetlenül attól, hogy a szó minden szótagja meg van-e jelölve. |
Kötelező |
fonetikai példák
Az elem attribútumainak phoneme
támogatott értékeit korábban ismertették. Az első két példában a szótagot hangsúlyozó meɪ
értékek ph="tə.ˈmeɪ.toʊ"
ph="təmeɪˈtoʊ"
vannak megadva vagy meg vannak adva.
<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>
Egyéni lexikon
Az egyes entitások (például vállalat, orvosi kifejezés vagy emoji) olvasását az SSML-ben a telefon ésaz alelemek használatával határozhatja meg. Több entitás olvasási módjának meghatározásához hozzon létre egy XML-strukturált egyéni lexikonfájlt. Ezután feltölti az egyéni lexikon XML-fájlt, és hivatkozik rá az SSML-elemhez lexicon
.
Feljegyzés
Az egyéni lexikont támogató területi beállítások listáját a nyelvtámogatási táblázatban található lábjegyzetekben találja.
Az lexicon
elemet a Long Audio API nem támogatja. A hosszú formátumú szöveg beszédhez használja inkább a batch synthesis API-t (előzetes verzió).
lexicon
Az elem attribútumainak használatát az alábbi táblázat ismerteti.
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
uri |
A nyilvánosan elérhető egyéni lexikon XML-fájl URI-ja vagy kiterjesztéssel .xml .pls . Az Azure Blob Storage használata ajánlott, de nem kötelező. Az egyéni lexikonfájlról további információt a Kiejtési lexikon specifikáció (PLS) 1.0-s verziójában talál. |
Kötelező |
Egyéni lexikon-példák
Az elem attribútumainak lexicon
támogatott értékeit korábban ismertették.
Az egyéni lexikon közzététele után hivatkozhat rá az SSML-ben. Az alábbi SSML-példa egy egyéni lexikonra hivatkozik, amelybe feltöltve https://www.example.com/customlexicon.xml
lett. Támogatjuk az Azure Blob Storage, az Advanced Media Services (AMS) Storage és a GitHub lexikon URL-címeit. Vegye figyelembe azonban, hogy más nyilvános URL-címek nem kompatibilisek.
<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>
Egyéni lexikonfájl
Több entitás olvasási módjának meghatározásához definiálhatja őket egy egyéni lexikon XML-fájlban, amelynek vagy a fájlkiterjesztése .xml
van .pls
.
Feljegyzés
Az egyéni lexikonfájl érvényes XML-dokumentum, de nem használható SSML-dokumentumként.
Az egyéni lexikonfájl néhány korlátozása:
- Fájlméret: Az egyéni lexikonfájl mérete legfeljebb 100 KB lehet. Ha a fájlméret meghaladja a 100 KB-os korlátot, a szintéziskérés meghiúsul. Ha a fájl mérete meghaladja a 100 KB-ot, több lexikonra is feloszthatja a lexikont, és belefoglalhatja őket az SSML-be.
- Lexikongyorsítótár frissítése: Az egyéni lexikon az URI-val van gyorsítótárazva, mint a szövegről beszédre szóló kulcs az első betöltésekor. Az azonos URI-val rendelkező lexikon nem töltődik be 15 percen belül, ezért az egyéni lexikon-módosításnak legfeljebb 15 percet kell várnia a érvénybe lépéshez.
Az egyéni lexikon XML-fájlok támogatott elemeit és attribútumait a kiejtési lexikon specifikációja (PLS) 1.0-s verziója ismerteti. Íme néhány példa a támogatott elemekre és attribútumokra:
- Az
lexicon
elem legalább egylexeme
elemet tartalmaz. A Lexikon tartalmazza a szükségesxml:lang
attribútumot annak jelzéséhez, hogy melyik területi beállításra kell alkalmazni. Egy egyéni lexikon egy területi beállításra korlátozódik, ezért ha egy másik területi beállításra alkalmazza, az nem működik. Azlexicon
elemnek van egyalphabet
attribútuma is, amely a lexikonban használt ábécét jelzi. A lehetséges értékek:ipa
ésx-microsoft-sapi
. - Minden
lexeme
elem legalább egygrapheme
elemet és egy vagy többgrapheme
alias
elemet ésphoneme
elemet tartalmaz. Azlexeme
elem a kis- és nagybetűk megkülönböztetése az egyéni lexikonban. Ha például csak a "Hello" telefonjátlexeme
adja meg, az nem működik alexeme
"hello" esetében. - Az
grapheme
elem az ortográfiát leíró szöveget tartalmaz. - Az
alias
elemek egy rövidítés vagy egy rövidített kifejezés kiejtésének jelzésére szolgálnak. - Az
phoneme
elem olyan szöveget tartalmaz, amely leírja alexeme
kiejtést. A szótaghatár "." az IPA ábécében. Azphoneme
elem nem tartalmazhat szóközt az IPA-ábécé használatakor. - Ha az
alias
elemeketphoneme
ugyanazzalgrapheme
az elemmel adták meg,alias
magasabb prioritással rendelkezik.
A Microsoft egy érvényesítő eszközt biztosít az egyéni lexikonhoz , amely segít megtalálni a hibákat (részletes hibaüzenetekkel) az egyéni lexikonfájlban. Az eszköz használata ajánlott, mielőtt az egyéni lexikon XML-fájlt éles környezetben használnám a Speech szolgáltatással.
Egyéni lexikonfájl-példák
A következő XML-példát (nem SSML) egy egyéni lexikonfájl .xml
tartalmazza. Ha ezt az egyéni lexikont használja, a "BTW" szöveg "By the way" (Egyébként) néven jelenik meg. A "Benigni" szöveget a megadott IPA "bɛˈniːnji" felolvassa.
<?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>
Az egyéni lexikon használatával nem állíthatja be közvetlenül egy kifejezés kiejtését. Ha be kell állítania egy rövidítés vagy egy rövidített kifejezés kiejtését, először adjon meg egy alias
, majd társítsa a phoneme
következőhöz alias
. Példa:
<?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>
A rövidítéshez vagy rövidített kifejezéshez tartozó elvárt alias
értékeket közvetlenül is megadhatja. Példa:
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>Scotland Media Wave</alias>
</lexeme>
Az előző egyéni lexikon XML-fájlpéldák az IPA ábécét használják, amelyet IPA-telefonkészletnek is neveznek. Javasoljuk, hogy használja az IPA-t, mert ez a nemzetközi szabvány. Néhány IPA-karakter esetében ezek az "előre összeállított" és a "lebomló" verzió, amikor Unicode-tal vannak ábrázolva. Az egyéni lexikon csak a felbontott Unicode-t támogatja.
A Speech szolgáltatás a következő területi beállításokhoz definiál egy fonetikai halmazt: en-US
, fr-FR
, de-DE
, es-ES
, ja-JP
, zh-CN
, zh-HK
és zh-TW
. A Speech service fonetikai ábécéjének részletes leírásáról a Speech szolgáltatás fonetikai készleteiből tájékozódhat.
Az attribútum értékét alphabet
az itt bemutatott egyéni lexikonokkal használhatjax-microsoft-sapi
:
<?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 elem
Az say-as
elem az elem szövegének tartalomtípusát (például számot vagy dátumot) jelzi. Ez az elem útmutatást nyújt a beszédszintézis-motor számára a szöveg kiejtéséről.
say-as
Az elem attribútumainak használatát az alábbi táblázat ismerteti.
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
interpret-as |
Egy elem szövegének tartalomtípusát jelzi. A típusok listáját az alábbi táblázatban találja. | Kötelező |
format |
További információt nyújt az elem szövegének pontos formázásáról olyan tartalomtípusok esetében, amelyek nem egyértelmű formátumokkal rendelkeznek. Az SSML az őket használó tartalomtípusok formátumait határozza meg. Lásd az alábbi táblázatot. | Választható |
detail |
A kimondandó részletességi szintet jelzi. Ez az attribútum például azt kérheti, hogy a beszédszintézis-motor ejtse ki az írásjeleket. Nincsenek definiálva standard értékek a következőhöz detail : . |
Választható |
Az alábbi tartalomtípusok és format
attribútumok támogatottakinterpret-as
. Csak akkor vegye fel az format
attribútumot, ha format
az oszlop nem üres ebben a táblában.
Feljegyzés
Az characters
attribútum és spell-out
az interpret-as
értékek az összes szöveg és beszéd területi beállítás esetében támogatottak.
Az interpret-as
egyéb attribútumértékek a következő nyelvek összes nyelvére használhatók: arab, katalán, kínai, dán, holland, angol, francia, finn, német, hindi, olasz, japán, koreai, norvég, lengyel, portugál, orosz, spanyol és svéd.
interpret-as | format | Értelmezés |
---|---|---|
characters , spell-out |
A szöveg kimondása egyéni betűkként történik (ki van írva). A beszédszintézis motor kiejtése:<say-as interpret-as="characters">test</say-as> "T E S T"-ként. |
|
cardinal , number |
Egyik sem | A szöveg számos számként van kimondva. A beszédszintézis motor kiejtése:There are <say-as interpret-as="cardinal">10</say-as> options "Tíz lehetőség van". |
ordinal |
Egyik sem | A szöveg sorszámként van elhangzva. A beszédszintézis motor kiejtése:Select the <say-as interpret-as="ordinal">3rd</say-as> option "Válassza ki a harmadik lehetőséget". |
number_digit |
Egyik sem | A szöveg az egyes számjegyek sorozataként van elhangzva. A beszédszintézis motor kiejtése:<say-as interpret-as="number_digit">123456789</say-as> "1 2 3 4 5 6 7 8 9." |
fraction |
Egyik sem | A szöveg tört számként van kimondva. A beszédszintézis motor kiejtése:<say-as interpret-as="fraction">3/8</say-as> of an inch Mint "három nyolcad hüvelyk". |
date |
dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y | A szöveg kimondása dátumként történik. Az format attribútum megadja a dátum formátumát (d=nap, m=hónap és y=év). A beszédszintézis motor kiejtése:Today is <say-as interpret-as="date">10-12-2016</say-as> Mint "Ma október tizenkettedikén kétezerhat." Kimondja: Today is <say-as interpret-as="date" format="dmy">10-12-2016</say-as> Mint "Ma december tizedike kétezer tizenhat." |
time |
hms12, hms24 | A szöveg kimondása időként történik. Az format attribútum azt határozza meg, hogy az idő 12 órás (hms12) vagy 24 órás (hms24) használatával van-e megadva. Kettőspont használatával elválaszthatja az órákat, perceket és másodperceket képviselő számokat. Íme néhány érvényes idő példa: 12:35, 1:14:32, 08:15 és 02:50:45. A beszédszintézis motor kiejtése:The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as> "A vonat négy A M-kor indul." |
duration |
hms, hm, ms | A szöveg kimondása időtartamként történik. Az format attribútum az időtartam formátumát adja meg (h=óra, m=perc és s=másodperc). A beszédszintézis motor kiejtése:<say-as interpret-as="duration">01:18:30</say-as> Mint "egy óra tizennyolc perc és harminc másodperc". Kimondja: <say-as interpret-as="duration" format="ms">01:18</say-as> Mint "egy perc és tizennyolc másodperc". Ez a címke csak angol és spanyol nyelven támogatott. |
telephone |
Egyik sem | A szöveg telefonszámként van elhangzva. A beszédszintézis motor kiejtése:The number is <say-as interpret-as="telephone">(888) 555-1212</say-as> Mivel "A számom a nyolc nyolc öt öt körzetszámú, két egy kettő." |
currency |
Egyik sem | A szöveg pénznemként van elhangzva. A beszédszintézis motor kiejtése:<say-as interpret-as="currency">99.9 USD</say-as> "Kilencvenkilenc amerikai dollár és kilencven cent". |
address |
Egyik sem | A szöveg címeként van elhangzva. A beszédszintézis motor kiejtése:I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as> Mint "Én vagyok a 150th Court Northeast Redmond Washington." |
name |
Egyik sem | A szöveg személynévként szól. A beszédszintézis motor kiejtése:<say-as interpret-as="name">ED</say-as> [æd] néven. A kínai nevekben egyes karakterek másként jelennek meg, amikor egy családnévben jelennek meg. A beszédszintézis motorja például azt mondja, hogy 仇 a <say-as interpret-as="name">仇先生</say-as> [qiú] helyett [chóu]. |
példaként
Az elem attribútumainak say-as
támogatott értékeit korábban ismertették.
A beszédszintézis-motor a következő példát mondja: "Az első kérése egy helyiségre volt október 19-én 20 óra 20 perckor, korán 12:00-kor."
<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>
alelem
sub
Az elem használatával jelezheti, hogy az aliasattribútum szöveges értékét ki kell ejteni az elem zárt szövege helyett. Ily módon az SSML egy beszélt és egy írott űrlapot is tartalmaz.
sub
Az elem attribútumainak használatát az alábbi táblázat ismerteti.
Attribútum | Leírás | Kötelező vagy választható |
---|---|---|
alias |
Az elem zárt szövege helyett kifejezett szöveges érték. | Kötelező |
al példák
Az elem attribútumainak sub
támogatott értékeit korábban ismertették.
A beszédszintézis motor a következő példában "World Wide Web Consortium" néven beszél.
<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>
Kiejtés a MathML használatával
A Matematikai korrektúranyelv (MathML) egy XML-kompatibilis korrektúranyelv, amely matematikai tartalmat és struktúrát ír le. A Speech szolgáltatás a MathML-et használhatja bemeneti szövegként a matematikai jelölések helyes kiejtéséhez a kimeneti hangban.
Feljegyzés
A MathML-elemek (címkék) jelenleg a következő területi beállításokban támogatottak: de-DE
, en-AU
, , en-GB
, en-US
, es-MX
es-ES
, , fr-FR
fr-CA
, it-IT
pt-BR
ja-JP
ko-KR
és .zh-CN
A MathML 2.0 és a MathML 3.0 specifikáció összes eleme támogatott, kivéve a MathML 3.0 elemi matematikai elemeket.
Jegyezze fel ezeket a MathML-elemeket és attribútumokat:
- A
xmlns
be megadott<math xmlns="http://www.w3.org/1998/Math/MathML">
attribútum nem kötelező. - A
semantics
,annotation
ésannotation-xml
az elemek nem adnak ki beszédet, ezért figyelmen kívül hagyják őket. - Ha egy elem nem ismerhető fel, a rendszer figyelmen kívül hagyja, és a benne lévő gyermekelemek feldolgozása továbbra is folyamatban van.
Az XML-szintaxis nem támogatja a MathML-entitásokat, ezért az entitások megjelenítéséhez a megfelelő Unicode-karaktereket kell használnia, például az entitást ©
unicode-karaktereknek ©
kell jelölnie, különben hiba történik.
Példák a MathML-hez
A példa szövegfelolvasási kimenete a következő: "négyzetes plusz b négyzet egyenlő c négyzet".
<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>