SSML ile söyleniş
Konuşmanın nasıl telaffuz edildiğini belirtmek için Konuşma Sentezi Biçimlendirme Dili'ni (SSML) metin okuma ile birlikte kullanabilirsiniz. Örneğin, telaffuzu geliştirmek için SSML'yi fonemlerle ve özel bir sözlükle kullanabilirsiniz. Bir sözcüğün veya matematiksel ifadenin nasıl telaffuz edildiğini tanımlamak için SSML de kullanabilirsiniz.
Söylenişi geliştirmek için SSML öğelerini kullanma hakkında ayrıntılı bilgi için aşağıdaki bölümlere bakın. SSML söz dizimi hakkında daha fazla bilgi için bkz . SSML belge yapısı ve olayları.
phoneme öğesi
phoneme
öğesi SSML belgelerinde fonetik telaffuz için kullanılır. Her zaman geri dönüş olarak insan tarafından okunabilen konuşmalar sağlayın.
Fonetik alfabeler, bazen birlikte harf, sayı veya karakterlerden oluşan telefonlardan oluşur. Her telefon benzersiz bir konuşma sesi açıklar. Fonetik alfabe Latin alfabesinin aksinedir ve herhangi bir harf birden çok konuşulan sesi temsil edebilir. "candy" ve "cease" kelimelerinde "c" harfinin farklı en-US
söylenişlerini veya "şey" ve "bunlar" sözcüklerindeki "th" harf bileşiminin farklı söylenişlerini düşünün.
Not
Fonemleri destekleyen yerel ayarların listesi için dil destek tablosundaki dipnotlara bakın.
Öğenin özniteliklerinin phoneme
kullanımı aşağıdaki tabloda açıklanmıştır.
Öznitelik | Açıklama | Gerekli veya isteğe bağlı |
---|---|---|
alphabet |
özniteliğinde dizenin ph söylenişini sentezlerken kullanılacak fonetik alfabe. Alfabeyi belirten dize küçük harflerle belirtilmelidir. Aşağıdaki seçenekler, belirtebileceğiniz olası alfabelerdir:
Alfabe yalnızca phoneme öğesindeki öğesine uygulanır. |
İsteğe bağlı |
ph |
öğesindeki phoneme sözcüğün söylenişini belirten telefonlar içeren bir dize. Belirtilen dize tanınmayan telefonlar içeriyorsa, metin okuma SSML belgesinin tamamını reddeder ve belgede belirtilen konuşma çıktılarından hiçbirini üretmez.için ipa , bu heceden önce stres simgesi yerleştirerek bir heceyi strese almak için, kelimenin tüm hecelerini işaretlemeniz gerekir. Aksi halde, bu stres simgesinden önceki hece stres altındadır. için sapi , bir heceyi strese almak istiyorsanız, sözcüğün tüm hecelerinin işaretlenip işaretlenmediği fark etmeksizin, bu heceden sonra stres simgesini yerleştirmeniz gerekir. |
Zorunlu |
phoneme örnekleri
Öğesinin öznitelikleri phoneme
için desteklenen değerler daha önce açıklanmıştır. İlk iki örnekte, heceyi meɪ
vurgulayan veya ph="təmeɪˈtoʊ"
değerleri ph="tə.ˈmeɪ.toʊ"
belirtilir.
<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>
Özel sözlük
Fone ve alt öğeleri kullanarak SSML'de tek varlıkların (şirket, tıbbi terim veya emoji gibi) nasıl okunabileceğini tanımlayabilirsiniz. Birden çok varlığın nasıl okunacağını tanımlamak için XML yapılandırılmış bir özel sözlük dosyası oluşturun. Ardından özel sözlük XML dosyasını karşıya yükleyip SSML lexicon
öğesiyle başvurursunuz.
Not
Özel sözlüğü destekleyen yerel ayarların listesi için dil destek tablosundaki dipnotlara bakın.
lexicon
öğesi Uzun Ses API'sinde desteklenmez. Uzun biçimli metin okuma için bunun yerine toplu sentez API'sini (Önizleme) kullanın.
Öğenin özniteliklerinin lexicon
kullanımı aşağıdaki tabloda açıklanmıştır.
Öznitelik | Açıklama | Gerekli veya isteğe bağlı |
---|---|---|
uri |
Veya .pls dosya uzantısıyla genel olarak erişilebilen özel sözlük XML dosyasının URI'si.xml . Azure Blob Depolama kullanılması önerilir ancak gerekli değildir. Özel sözlük dosyası hakkında daha fazla bilgi için bkz . Telaffuz Sözlüğü Belirtimi (PLS) Sürüm 1.0. |
Zorunlu |
Özel sözlük örnekleri
Öğesinin öznitelikleri lexicon
için desteklenen değerler daha önce açıklanmıştır.
Özel sözlüğünüzü yayımladıktan sonra SSML'nizden başvurabilirsiniz. Aşağıdaki SSML örneği, öğesine yüklenmiş olan özel bir sözcük sözlüğüne https://www.example.com/customlexicon.xml
başvurur. Azure Blob Depolama, Gelişmiş Medya Hizmetleri (AMS) Depolama ve GitHub'dan gelen sözlük URL'lerini destekliyoruz. Ancak, diğer genel URL'lerin uyumlu olmayabileceğini unutmayın.
<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>
Özel sözlük dosyası
Birden çok varlığın nasıl okunabileceğini tanımlamak için, bunları veya .pls
dosya uzantısına sahip .xml
özel bir sözlük XML dosyasında tanımlayabilirsiniz.
Not
Özel sözlük dosyası geçerli bir XML belgesidir, ancak SSML belgesi olarak kullanılamaz.
Özel sözlük dosyasının bazı sınırlamaları şunlardır:
- Dosya boyutu: Özel sözlük dosyası boyutu en fazla 100 KB ile sınırlıdır. Dosya boyutu 100 KB sınırını aşarsa, sentez isteği başarısız olur. Dosya boyutu 100 KB'ı aşarsa sözlüğünüzü birden çok sözcük sözlüğüne bölebilir ve bunları SSML'ye ekleyebilirsiniz.
- Sözlük önbelleği yenilemesi: Özel sözlük, ilk yüklendiğinde metin okuma anahtarı olarak URI ile önbelleğe alınır. Aynı URI'ye sahip sözlük 15 dakika içinde yeniden yüklenmez, bu nedenle özel sözlük değişikliğinin geçerlilik kazanması için en fazla 15 dakika beklemesi gerekir.
Özel bir sözlük XML dosyasının desteklenen öğeleri ve öznitelikleri, Söyleniş Sözlüğü Belirtimi (PLS) Sürüm 1.0'da açıklanmıştır. Desteklenen öğelere ve özniteliklere bazı örnekler aşağıda verilmiştir:
lexicon
öğesi en az birlexeme
öğe içerir. Lexicon, hangi yerel ayar için uygulanması gerektiğini belirtmek için gereklixml:lang
özniteliği içerir. Bir özel sözlük tasarımı gereği tek bir yerel ayar ile sınırlıdır, bu nedenle bunu farklı bir yerel ayar için uygularsanız çalışmaz. öğesininlexicon
ayrıca sözlüğünde kullanılan alfabeyi belirten biralphabet
özniteliği de vardır. Olası değerleripa
vex-microsoft-sapi
'dur.- Her
lexeme
öğe en az bir öğe ve birgrapheme
veya daha fazlagrapheme
,alias
vephoneme
öğesi içerir.lexeme
öğesi özel sözlükte büyük/küçük harfe duyarlıdır. Örneğin, yalnızca "Hello" içinlexeme
bir telefon adı sağlarsanız, "hello" içinlexeme
çalışmaz. - öğesi,
grapheme
ortografiyi açıklayan metin içerir. alias
Öğeler, kısaltmanın veya kısaltılmış terimin söylenişini belirtmek için kullanılır.- öğesi,
phoneme
öğesinin nasıllexeme
telaffuz edildiğini açıklayan bir metin sağlar. Hece sınırı IPA alfabesinde '.' şeklindedir. IPA alfabesiniphoneme
kullandığınızda öğesi boşluk içeremez. alias
vephoneme
öğeleri aynıgrapheme
öğeyle sağlandığında dahaalias
yüksek önceliğe sahiptir.
Microsoft, özel sözlük dosyasındaki hataları (ayrıntılı hata iletileriyle birlikte) bulmanıza yardımcı olan özel sözlük için bir doğrulama aracı sağlar. Konuşma hizmetiyle üretimde özel lexicon XML dosyasını kullanmadan önce aracı kullanmanız önerilir.
Özel sözlük dosyası örnekleri
Aşağıdaki XML örneği (SSML değil) özel bir sözlük .xml
dosyasında yer alır. Bu özel sözlüğü kullandığınızda, "BTW" "Bu arada" olarak okunur. "Benigni", sağlanan IPA "bɛˈniːnji" ile okunur.
<?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>
Özel sözlüğü kullanarak bir tümceciğin söylenişini doğrudan ayarlayamazsınız. Telaffuzu bir kısaltma veya kısaltılmış terim olarak ayarlamanız gerekiyorsa, önce bir alias
sağlayın ve ardından ile ilişkilendirin phoneme
alias
. Örneğin:
<?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>
Ayrıca kısaltma veya kısaltılmış terim için bekleneni alias
doğrudan sağlayabilirsiniz. Örneğin:
<lexeme>
<grapheme>Scotland MV</grapheme>
<alias>Scotland Media Wave</alias>
</lexeme>
Yukarıdaki özel sözlük XML dosyası örnekleri, IPA telefon kümesi olarak da bilinen IPA alfabesini kullanır. Uluslararası standart olduğundan IPA kullanmanızı öneririz. Bazı IPA karakterleri Unicode ile temsil edilirken "önceden derlenmiş" ve "ayrıştırılmış" sürümdür. Özel sözlük yalnızca ayrıştırılmış Unicode'ları destekler.
Konuşma hizmeti, şu yerel ayarlar için bir fonetik kümesi tanımlar: en-US
, fr-FR
, de-DE
, es-ES
, ja-JP
, zh-CN
, zh-HK
ve zh-TW
. Ayrıntılı Konuşma hizmeti fonetik alfabesi hakkında daha fazla bilgi için bkz . Konuşma hizmeti fonetik kümeleri.
özniteliğinin alphabet
değeri olarak değerini burada gösterildiği gibi özel sözcük sözcükleriyle kullanabilirsinizx-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 öğesi
say-as
öğesi, öğenin metninin sayı veya tarih gibi içerik türünü gösterir. Bu öğe, konuşma sentezi altyapısına metnin nasıl telaffuz edildiğini gösteren rehberlik sağlar.
Öğenin özniteliklerinin say-as
kullanımı aşağıdaki tabloda açıklanmıştır.
Öznitelik | Açıklama | Gerekli veya isteğe bağlı |
---|---|---|
interpret-as |
Bir öğenin metninin içerik türünü gösterir. Türlerin listesi için aşağıdaki tabloya bakın. | Zorunlu |
format |
Belirsiz biçimlere sahip olabilecek içerik türleri için öğenin metninin tam biçimlendirmesi hakkında ek bilgi sağlar. SSML, bunları kullanan içerik türleri için biçimleri tanımlar. Aşağıdaki tabloya bakın. | İsteğe bağlı |
detail |
Konuşulacak ayrıntı düzeyini gösterir. Örneğin, bu öznitelik konuşma sentezi altyapısının noktalama işaretlerini telaffuz etmelerini isteyebilir. için detail tanımlanmış standart değer yok. |
İsteğe bağlı |
ve format
öznitelikleri için interpret-as
aşağıdaki içerik türleri desteklenir. Özniteliği yalnızca format
bu tabloda sütun boş değilse format
ekleyin.
Not
characters
özniteliğinin interpret-as
ve spell-out
değerleri tüm metin okuma yerel ayarları için desteklenir.
Diğer interpret-as
öznitelik değerleri şu dillerin tüm yerel ayarları için desteklenir: Arapça, Katalanca, Çince, Danca, Felemenkçe, İngilizce, Fransızca, Fince, Almanca, Hintçe, İtalyanca, Japonca, Korece, Norveççe, Lehçe, Portekizce, Rusça, İspanyolca ve İsveççe.
farklı yorumla | format | Yorumlama |
---|---|---|
characters , spell-out |
Metin tek tek harfler olarak (hecelenmiş) olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:<say-as interpret-as="characters">test</say-as> "T E S T" olarak. |
|
cardinal , number |
Hiçbiri | Metin, kardinal sayı olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:There are <say-as interpret-as="cardinal">10</say-as> options "On seçenek vardır." |
ordinal |
Hiçbiri | Metin sıra numarası olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:Select the <say-as interpret-as="ordinal">3rd</say-as> option "Üçüncü seçeneği belirtin". |
number_digit |
Hiçbiri | Metin, tek tek basamak dizisi olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:<say-as interpret-as="number_digit">123456789</say-as> "1 2 3 4 5 6 7 8 9" olarak. |
fraction |
Hiçbiri | Metin kesirli sayı olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:<say-as interpret-as="fraction">3/8</say-as> of an inch "Bir inçin sekizde üçü" olarak. |
date |
dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y | Metin tarih olarak konuşulur. format özniteliği, tarihin biçimini belirtir (d=gün, m=ay ve y=yıl). Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:Today is <say-as interpret-as="date">10-12-2016</say-as> "Bugün on iki bin on altı Ekim." Telaffuzlar: Today is <say-as interpret-as="date" format="dmy">10-12-2016</say-as> "Bugün 10 Aralık 2.000 16." |
time |
hms12, hms24 | Metin bir zaman olarak konuşulur. format özniteliği, saatin 12 saatlik bir saat (hms12) veya 24 saatlik bir saat (hms24) kullanılarak belirtilip belirtilmedidiğini belirtir. Saatleri, dakikaları ve saniyeleri temsil eden sayıları ayırmak için iki nokta üst üste kullanın. İşte bazı geçerli saat örnekleri: 12:35, 1:14:32, 08:15 ve 02:50:45. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as> "Tren 04:00'da kalkıyor". |
duration |
hms, hm, ms | Metin süre olarak konuşulur. format özniteliği, sürenin biçimini belirtir (h=saat, m=dakika ve s=saniye). Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:<say-as interpret-as="duration">01:18:30</say-as> "Bir saat on sekiz dakika ve otuz saniye" olarak. Telaffuzlar: <say-as interpret-as="duration" format="ms">01:18</say-as> "Bir dakika on sekiz saniye" olarak. Bu etiket yalnızca İngilizce ve İspanyolca dillerinde desteklenir. |
telephone |
Hiçbiri | Metin bir telefon numarası olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:The number is <say-as interpret-as="telephone">(888) 555-1212</say-as> "Numaram alan kodu sekiz sekiz sekiz beş beş beş bir iki iki. |
currency |
Hiçbiri | Metin para birimi olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:<say-as interpret-as="currency">99.9 USD</say-as> "Doksan dokuz ABD doları ve doksan sent" olarak. |
address |
Hiçbiri | Metin bir adres olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as> "150. Mahkemede Kuzeydoğu Redmond Washington'dayım." |
name |
Hiçbiri | Metin bir kişinin adı olarak konuşulur. Konuşma sentezi altyapısı şu ifadeleri telaffuz eder:<say-as interpret-as="name">ED</say-as> [æd] olarak. Çince adlarda, bazı karakterler bir aile adında göründüklerinde farklı şekilde telaffuz edilir. Örneğin, konuşma sentezi altyapısı içinde 仇 <say-as interpret-as="name">仇先生</say-as> [chóu] yerine [qiú] olarak. |
say-as örnekleri
Öğesinin öznitelikleri say-as
için desteklenen değerler daha önce açıklanmıştır.
Konuşma sentezi altyapısı aşağıdaki örneği şöyle ifade eder: "İlk isteğiniz, on dokuz yirmi on Ekim'de bir oda içindi ve on iki otuz beşte erken vardı."
<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>
alt öğe
sub
diğer ad özniteliğinin metin değerinin öğenin kapalı metni yerine telaffuz edilmesi gerektiğini belirtmek için öğesini kullanın. Bu şekilde, SSML hem konuşulan hem de yazılı bir form içerir.
Öğenin özniteliklerinin sub
kullanımı aşağıdaki tabloda açıklanmıştır.
Öznitelik | Açıklama | Gerekli veya isteğe bağlı |
---|---|---|
alias |
Öğenin kapalı metni yerine telaffuz edilmesi gereken metin değeri. | Zorunlu |
alt örnekler
Öğesinin öznitelikleri sub
için desteklenen değerler daha önce açıklanmıştır.
Konuşma sentezi altyapısı aşağıdaki örneği "World Wide Web Consortium" olarak ifade eder.
<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>
MathML ile söyleniş
Matematiksel İşaretlem Dili (MathML), matematiksel içeriği ve yapıyı açıklayan XML uyumlu bir işaretleme dilidir. Konuşma tanıma hizmeti, çıktı sesindeki matematiksel gösterimi düzgün bir şekilde telaffuz etmek için Giriş metni olarak MathML'yi kullanabilir.
Not
MathML öğeleri (etiketler) şu anda şu yerel ayarlarda desteklenmektedir: , , , , , , , fr-CA
, fr-FR
, it-IT
, ja-JP
pt-BR
ko-KR
ve .zh-CN
es-MX
es-ES
en-US
en-GB
en-AU
de-DE
MathML 3.0 Temel Matematik öğeleri dışında MathML 2.0 ve MathML 3.0 belirtimlerindeki tüm öğeler desteklenir.
Bu MathML öğelerini ve özniteliklerini not alın:
- içindeki
xmlns
<math xmlns="http://www.w3.org/1998/Math/MathML">
özniteliği isteğe bağlıdır. semantics
,annotation
veannotation-xml
öğeleri konuşma çıkışı vermez, bu nedenle yoksayılırlar.- Bir öğe tanınmıyorsa yoksayılır ve içindeki alt öğeler yine de işlenir.
XML söz dizimi MathML varlıklarını desteklemez, bu nedenle varlıkları temsil etmek için karşılık gelen unicode karakterleri kullanmanız gerekir; örneğin, varlığın ©
unicode karakterleriyle ©
gösterilmesi gerekir; aksi takdirde bir hata oluşur.
MathML örnekleri
Bu örneğin metin okuma çıkışı "kare artı b kare eşittir c karesi" şeklindedir.
<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>