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övdesiaudio
, 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-as
vesub
.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-as
vesub
.lang
emphasis
break
audio
lang
: Bu öğe ,voice
vespeak
dışındakimstts:backgroundaudio
tü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-as
vesub
.lang
emphasis
break
audio
mstts:express-as
: Bu öğe metin ve şu öğeleri içerebilir: , , , , ,phoneme
,prosody
,say-as
vesub
.lang
emphasis
break
audio
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-as
ves
.prosody
phoneme
break
audio
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
,sub
ves
.phoneme
p
break
audio
s
: Bu öğe metin ve şu öğeleri içerebilir:audio
,break
,phoneme
,prosody
,say-as
, ,mstts:express-as
vesub
.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
vevoice
.voice
: Bu öğe vespeak
dışındakimstts: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 &
&
gerekir, yerine <
kullanın <
ve yerine >
kullanın>
. Aksi takdirde SSML doğru ayrıştırılamaz.
Örneğin, yerine green & yellow
belirtingreen & 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 & 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:
|
İ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:
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-exact veya Enumerationcomma-exact gibi Comma-exact noktalama 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ü.
|
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>