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.xmlbaş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 bir lexeme öğe içerir. Lexicon, hangi yerel ayar için uygulanması gerektiğini belirtmek için gerekli xml: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. öğesinin lexicon ayrıca sözlüğünde kullanılan alfabeyi belirten bir alphabet özniteliği de vardır. Olası değerler ipa ve x-microsoft-sapi'dur.
  • Her lexeme öğe en az bir öğe ve bir grapheme veya daha fazla grapheme, aliasve phoneme öğesi içerir. lexeme öğesi özel sözlükte büyük/küçük harfe duyarlıdır. Örneğin, yalnızca "Hello" için lexeme bir telefon adı sağlarsanız, "hello" için lexeme ç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ıl lexeme telaffuz edildiğini açıklayan bir metin sağlar. Hece sınırı IPA alfabesinde '.' şeklindedir. IPA alfabesini phoneme kullandığınızda öğesi boşluk içeremez.
  • alias ve phoneme öğeleri aynı grapheme öğeyle sağlandığında daha alias 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 aliassağ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-HKve 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 detailtanı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-JPpt-BRko-KRve .zh-CNes-MXes-ESen-USen-GBen-AUde-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, annotationve annotation-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 &copy; unicode karakterleriyle &#x00A9;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>

Sonraki adımlar