SSML belge yapısı ve olayları

Giriş metniyle Konuşma Sentezi İşaretlemeyi Dili (SSML), metinden konuşmaya çıkışın yapısını, içeriğini ve diğer özelliklerini belirler. Örneğin, SSML kullanarak bir paragraf, tümce, kesme veya duraklama ya da sessizlik tanımlayabilirsiniz. Metni yer işareti veya viseme gibi daha sonra uygulamanız tarafından işlenebilen olay etiketleriyle kaydırabilirsiniz.

SSML belgesindeki öğeleri yapılandırma hakkında ayrıntılı bilgi için aşağıdaki bölümlere bakın.

Not

Azure AI Konuşma sinirsel (HD olmayan) seslere ek olarak, Azure AI Konuşma yüksek tanımlı (HD) sesleri ve Azure OpenAI sinir (HD ve HD olmayan) sesleri de kullanabilirsiniz. HD sesleri, daha çok yönlü senaryolar için daha yüksek kalite sağlar.

Bazı sesler tüm Konuşma Sentezi Biçimlendirme Dili (SSML) etiketlerini desteklemez. Buna nöral metinden konuşma HD seslerine, kişisel seslere ve ekli seslere dahildir.

  • Azure AI Konuşma yüksek tanımlı (HD) sesler için buradan SSML desteğine bakın.
  • Kişisel ses için SSML desteğini burada bulabilirsiniz.
  • Katıştırılmış sesler için buradan SSML desteğine bakın.

Belge yapısı

SSML'nin Konuşma hizmeti uygulaması, World Wide Web Konsorsiyumu Konuşma Sentezi Biçimlendirme Dili Sürüm 1.0'a dayanır. Konuşma tarafından desteklenen öğeler W3C standardından farklı olabilir.

Her SSML belgesi SSML öğeleri veya etiketleriyle oluşturulur. Bu öğeler sesi, stili, perdeyi, ses düzeyini ve daha fazlasını ayarlamak için kullanılır.

SSML belgesinin temel yapısının ve söz diziminin bir alt kümesi aşağıdadır:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="string">
    <mstts:backgroundaudio src="string" volume="string" fadein="string" fadeout="string"/>
    <voice name="string" effect="string">
        <audio src="string"></audio>
        <bookmark mark="string"/>
        <break strength="string" time="string" />
        <emphasis level="value"></emphasis>
        <lang xml:lang="string"></lang>
        <lexicon uri="string"/>
        <math xmlns="http://www.w3.org/1998/Math/MathML"></math>
        <mstts:audioduration value="string"/>
        <mstts:ttsembedding speakerProfileId="string"></mstts:ttsembedding>
        <mstts:express-as style="string" styledegree="value" role="string"></mstts:express-as>
        <mstts:silence type="string" value="string"/>
        <mstts:viseme type="string"/>
        <p></p>
        <phoneme alphabet="string" ph="string"></phoneme>
        <prosody pitch="value" contour="value" range="value" rate="value" volume="value"></prosody>
        <s></s>
        <say-as interpret-as="string" format="string" detail="string"></say-as>
        <sub alias="string"></sub>
    </voice>
</speak>

Her öğede izin verilen bazı içerik örnekleri aşağıdaki listede açıklanmıştır:

  • audio: Öğenin gövdesi audio , ses dosyası kullanılamıyor veya yürütülemiyorsa konuşulan düz metin veya SSML işaretlemesi içerebilir. audio öğesi metin ve şu öğeleri de içerebilir: audio, break, p, s, , phoneme, prosody, say-asve sub.
  • bookmark: Bu öğe metin veya başka öğe içeremez.
  • break: Bu öğe metin veya başka öğe içeremez.
  • emphasis: Bu öğe metin ve şu öğeleri içerebilir: , , , , , phoneme, prosody, say-asve sub. langemphasisbreakaudio
  • lang: Bu öğe , voiceve speakdışındaki mstts:backgroundaudiotüm diğer öğeleri içerebilir.
  • lexicon: Bu öğe metin veya başka öğe içeremez.
  • math: Bu öğe yalnızca metin ve MathML öğeleri içerebilir.
  • mstts:audioduration: Bu öğe metin veya başka öğe içeremez.
  • mstts:backgroundaudio: Bu öğe metin veya başka öğe içeremez.
  • mstts:embedding: Bu öğe metin ve şu öğeleri içerebilir: , , , , , phoneme, prosody, say-asve sub. langemphasisbreakaudio
  • mstts:express-as: Bu öğe metin ve şu öğeleri içerebilir: , , , , , phoneme, prosody, say-asve sub. langemphasisbreakaudio
  • mstts:silence: Bu öğe metin veya başka öğe içeremez.
  • mstts:viseme: Bu öğe metin veya başka öğe içeremez.
  • p: Bu öğe metin ve şu öğeleri içerebilir: , , , , , say-as, sub, mstts:express-asve s. prosodyphonemebreakaudio
  • phoneme: Bu öğe yalnızca metin içerebilir ve başka öğe içeremez.
  • prosody: Bu öğe metin ve şu öğeleri içerebilir: , , , , , prosody, say-as, subve s. phonemepbreakaudio
  • s: Bu öğe metin ve şu öğeleri içerebilir: audio, break, phoneme, prosody, say-as, , mstts:express-asve sub.
  • say-as: Bu öğe yalnızca metin içerebilir ve başka öğe içeremez.
  • sub: Bu öğe yalnızca metin içerebilir ve başka öğe içeremez.
  • speak: SSML belgesinin kök öğesi. Bu öğe şu öğeleri içerebilir: mstts:backgroundaudio ve voice.
  • voice: Bu öğe ve speakdışındaki mstts:backgroundaudio tüm diğer öğeleri içerebilir.

Konuşma hizmeti noktalama işaretlerini belirli bir süre sonra duraklatma veya bir cümle soru işaretiyle sona erdiğinde doğru intonlamayı kullanma gibi uygun şekilde otomatik olarak işler.

Özel karakterler

SSML öğesinin değeri veya metni içinde , <ve > karakterlerini &kullanmak için varlık biçimini kullanmanız gerekir. Özellikle yerine kullanmanız &amp; &gerekir, yerine <kullanın &lt; ve yerine >kullanın&gt;. Aksi takdirde SSML doğru ayrıştırılamaz.

Örneğin, yerine green & yellowbelirtingreen &amp; yellow. Aşağıdaki SSML beklendiği gibi ayrıştırılır:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        My favorite colors are green &amp; yellow.
    </voice>
</speak>

Tırnak işaretleri, kesme işaretleri ve köşeli ayraçlar gibi özel karakterlerin kaçış karakteri kullanılmalıdır. Daha fazla bilgi için bkz . Genişletilebilir Biçimlendirme Dili (XML) 1.0: Ek D.

Öznitelik değerlerinin içine çift veya tek tırnak işareti girilmelidir. Örneğin, <prosody volume="90"> ve <prosody volume='90'> iyi biçimlendirilmiş, geçerli öğelerdir, ancak <prosody volume=90> tanınmaz.

Konuşma kök öğesi

speak öğesi sürüm, dil ve işaretleme sözlüğü tanımı gibi bilgileri içerir. speak öğesi, tüm SSML belgeleri için gereken kök öğedir. Öğenin içinde speak varsayılan dili belirtmeniz gerekir; dilin öğesi içinde olduğu gibi başka bir yerde ayarlanıp ayarlanmayacağı lang .

öğesinin söz dizimi aşağıdadır speak :

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>
Öznitelik Açıklama Gerekli veya isteğe bağlı
version Belge işaretlemesini yorumlamak için kullanılan SSML belirtiminin sürümünü gösterir. Geçerli sürüm :"1.0". Zorunlu
xml:lang Kök belgenin dili. Değer, (İngilizce) gibi en bir dil kodu veya (İngilizce - Birleşik Devletler) gibi en-US bir yerel ayar içerebilir. Zorunlu
xmlns SSML belgesinin işaretleme sözcük dağarcığını (öğe türleri ve öznitelik adları) tanımlayan belgenin URI'si. Geçerli URI şudur: "http://www.w3.org/2001/10/synthesis". Zorunlu

speak öğesi en az bir ses öğesi içermelidir.

konuşma örnekleri

Öğesinin öznitelikleri speak için desteklenen değerler daha önce açıklanmıştır.

Tek sesli örnek

Bu örnekte ses kullanılır en-US-AvaNeural . Daha fazla örnek için bkz . ses örnekleri.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        This is the text that is spoken.
    </voice>
</speak>

Kesme ekleme

break öğesini kullanarak sözcükler arasındaki kesme veya duraklamaların varsayılan davranışını geçersiz kılın. Aksi takdirde Konuşma hizmeti otomatik olarak duraklar ekler.

Öğenin özniteliklerinin break kullanımı aşağıdaki tabloda açıklanmıştır.

Öznitelik Açıklama Gerekli veya isteğe bağlı
strength Aşağıdaki değerlerden birini kullanarak bir duraklamanın göreli süresi:
  • x-zayıf
  • zayıf
  • orta (varsayılan)
  • kuvvetli
  • x-strong
İsteğe bağlı
time Saniye cinsinden (örneğin 2s) veya milisaniye cinsinden (örneğin 500ms) bir duraklamanın mutlak süresi. Geçerli değerler 0 ile 20000 milisaniye arasında değişir. Desteklenen maksimum değerden büyük bir değer ayarlarsanız, hizmet kullanır 20000ms. time Öznitelik ayarlanırsa, strength özniteliği yoksayılır. İsteğe bağlı

Öznitelik hakkında daha fazla ayrıntı aşağıdadır strength .

Güç Göreli süre
X-zayıf 250 ms
Zayıf 500 ms
Orta 750 ms
Güçlü 1.000 ms
X-strong 1.250 ms

Kesme örnekleri

Öğesinin öznitelikleri break için desteklenen değerler daha önce açıklanmıştır. Aşağıdaki üç yol 750 ms kesme ekler.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        Welcome <break /> to text to speech.
        Welcome <break strength="medium" /> to text to speech.
        Welcome <break time="750ms" /> to text to speech.
    </voice>
</speak>

Sessizlik ekleme

mstts:silence öğesini kullanarak metinden önce veya sonra ya da bitişik iki cümle arasına duraklamalar ekleyin.

ile break arasındaki mstts:silence farklardan biri, bir öğenin metnin herhangi bir break yerine eklenebileceğidir. Sessizlik yalnızca giriş metninin başında veya sonunda veya bitişik iki cümlenin sınırında çalışır.

Sessizlik ayarı, kapsayan voice öğesi içindeki tüm giriş metnine uygulanır. Sessizlik ayarını yeniden sıfırlamak veya değiştirmek için aynı sesle veya farklı bir sesle yeni voice bir öğe kullanmanız gerekir.

Öğenin özniteliklerinin mstts:silence kullanımı aşağıdaki tabloda açıklanmıştır.

Öznitelik Açıklama Gerekli veya isteğe bağlı
type Sessizliğin nerede ve nasıl ekleneceğini belirtir. Aşağıdaki sessizlik türleri desteklenir:
  • Leading – Metnin başında ekstra sessizlik. Ayarladığınız değer, metin başlamadan önce doğal sessizliğe eklenir.
  • Leading-exact – Metnin başındaki sessizlik. Değer mutlak bir sessizlik uzunluğudur.
  • Tailing – Metnin sonunda ekstra sessizlik. Ayarladığınız değer, son sözcüğün ardından doğal sessizliğe eklenir.
  • Tailing-exact – Metnin sonundaki sessizlik. Değer mutlak bir sessizlik uzunluğudur.
  • Sentenceboundary – Bitişik cümleler arasında ekstra sessizlik. Bu tür için gerçek sessizlik uzunluğu, önceki tümcedeki son sözcüğün ardından gelen doğal sessizliği, bu tür için ayarladığınız değeri ve sonraki cümlede başlangıç sözcüğünden önceki doğal sessizliği içerir.
  • Sentenceboundary-exact – Bitişik cümleler arasında sessizlik. Değer mutlak bir sessizlik uzunluğudur.
  • Comma-exact – Virgülde yarım genişlikte veya tam genişlikte sessizlik. Değer mutlak bir sessizlik uzunluğudur.
  • Semicolon-exact – Noktalı virgülde yarım genişlikte veya tam genişlikte sessizlik. Değer mutlak bir sessizlik uzunluğudur.
  • Enumerationcomma-exact – Sabit listesi virgülde tam genişlikte sessizlik. Değer mutlak bir sessizlik uzunluğudur.

Mutlak bir sessizlik türü (soneki -exact ile) herhangi bir doğal baştaki veya sondaki sessizliğin yerini alır. Mutlak sessizlik türleri, ilgili mutlak olmayan türe göre önceliklidir. Örneğin, hem Leading-exact hem de Leading türlerini ayarlarsanız, Leading-exact tür geçerlilik kazanır. WordBoundary olayı, , Semicolon-exactveya Enumerationcomma-exactgibi Comma-exactnoktalama işaretleri ile ilgili sessizlik ayarlarından önceliklidir. Hem olay hem de WordBoundary noktalama işaretiyle ilgili sessizlik ayarlarını kullandığınızda, noktalama işaretiyle ilgili sessizlik ayarları geçerli olmaz.
Zorunlu
Value Saniye cinsinden duraklama süresi (örneğin 2s) veya milisaniye (örneğin 500ms). Geçerli değerler 0 ile 20000 milisaniye arasında değişir. Desteklenen maksimum değerden büyük bir değer ayarlarsanız, hizmet kullanır 20000ms. Zorunlu

mstts sessizlik örnekleri

Öğesinin öznitelikleri mstts:silence için desteklenen değerler daha önce açıklanmıştır.

Bu örnekte, mstts:silence iki cümle arasına 200 ms sessizlik eklemek için kullanılır.

<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">
<mstts:silence  type="Sentenceboundary" value="200ms"/>
If we're home schooling, the best we can do is roll with what each day brings and try to have fun along the way.
A good place to start is by trying out the slew of educational apps that are helping children stay happy and smash their schooling at the same time.
</voice>
</speak>

Bu örnekte, mstts:silence virgülde 50 ms, noktalı virgülde 100 ms sessizlik ve numaralandırma virgülde 150 ms sessizlik eklemek için kullanılır.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="zh-CN">
<voice name="zh-CN-YunxiNeural">
<mstts:silence type="comma-exact" value="50ms"/><mstts:silence type="semicolon-exact" value="100ms"/><mstts:silence type="enumerationcomma-exact" value="150ms"/>你好呀,云希、晓晓;你好呀。
</voice>
</speak>

Paragrafları ve tümceleri belirtme

p ve s öğeleri sırasıyla paragrafları ve tümceleri belirtmek için kullanılır. Bu öğelerin olmaması halinde Konuşma hizmeti SSML belgesinin yapısını otomatik olarak belirler.

Paragraf ve tümce örnekleri

Aşağıdaki örnek, her birinde cümle bulunan iki paragrafı tanımlar. İkinci paragrafta Konuşma tanıma hizmeti, SSML belgesinde tanımlanmadığından cümle yapısını otomatik olarak belirler.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        <p>
            <s>Introducing the sentence element.</s>
            <s>Used to mark individual sentences.</s>
        </p>
        <p>
            Another simple paragraph.
            Sentence structure in this paragraph is not explicitly marked.
        </p>
    </voice>
</speak>

Bookmark öğesi

Metin veya etiket dizisindeki belirli bir konuma başvurmak için SSML'deki öğesini kullanabilirsiniz bookmark . Ardından Konuşma SDK'sını kullanır ve ses akışındaki her işaretçinin BookmarkReached uzaklığını almak için olaya abone olursunuz. bookmark Öğe konuşulmuyor. Daha fazla bilgi için bkz . Sentezleyici olaylarına abone olma.

Öğenin özniteliklerinin bookmark kullanımı aşağıdaki tabloda açıklanmıştır.

Öznitelik Açıklama Gerekli veya isteğe bağlı
mark öğesinin bookmark başvuru metni. Zorunlu

Yer işareti örnekleri

Öğesinin öznitelikleri bookmark için desteklenen değerler daha önce açıklanmıştır.

Örneğin, aşağıdaki kod parçacığındaki her çiçek sözcüğünün zaman uzaklığını bilmek isteyebilirsiniz:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaNeural">
        We are selling <bookmark mark='flower_1'/>roses and <bookmark mark='flower_2'/>daisies.
    </voice>
</speak>

Viseme öğesi

Vizeme, bir fonenin konuşma dilindeki görsel açıklamasıdır. Bir kişi konuşurken yüzün ve ağzın konumunu tanımlar. Viseme çıkışı istemek için SSML'deki öğesini kullanabilirsiniz mstts:viseme . Daha fazla bilgi için bkz . Viseme ile yüz konumunu alma.

Viseme ayarı, kapsayan voice öğesi içindeki tüm giriş metnine uygulanır. Viseme ayarını yeniden sıfırlamak veya değiştirmek için, aynı sesle veya farklı bir sesle yeni voice bir öğe kullanmanız gerekir.

Öğenin özniteliklerinin viseme kullanımı aşağıdaki tabloda açıklanmıştır.

Öznitelik Açıklama Gerekli veya isteğe bağlı
type Viseme çıkışının türü.
  • redlips_front – viseme kimliği ve ses uzaklığı çıkışı ile dudak senkronizasyonu
  • FacialExpression – şekilleri karıştırma çıkışı
Zorunlu

Not

Şu anda yalnızca redlips_front yerel ayardaki en-US sinir seslerini destekler ve FacialExpression ve zh-CN yerel ayarlardaki en-US sinir seslerini destekler.

Viseme örnekleri

Öğesinin öznitelikleri viseme için desteklenen değerler daha önce açıklanmıştır.

Bu SSML kod parçacığı, sentezlenmiş konuşmanızla karıştırma şekillerinin nasıl isteneceklerini gösterir.

<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">
    <mstts:viseme type="FacialExpression"/>
    Rainbow has seven colors: Red, orange, yellow, green, blue, indigo, and violet.
  </voice>
</speak>

Sonraki adımlar