بنية مستند SSML وأحداثه
تحدد لغة ترميز تجميع الكلام (SSML) مع نص الإدخال بنية النص إلى إخراج الكلام ومحتواه وخصائصه الأخرى. على سبيل المثال، يمكنك استخدام SSML لتعريف فقرة أو جملة أو فاصل أو إيقاف مؤقت أو صمت. يمكنك التفاف النص مع علامات الحدث مثل الإشارة المرجعية أو viseme التي يمكن معالجتها لاحقا بواسطة التطبيق الخاص بك.
راجع الأقسام أدناه للحصول على تفاصيل حول كيفية هيكلة العناصر في مستند SSML.
بنية المستند
يعتمد استخدام خدمة Speech للغة SSML على Speech Synthesis Markup Language Version 1.0 الخاص بجمعية شبكة الإنترنت العالمية. يمكن أن تختلف العناصر التي يدعمها Speech عن معيار W3C.
يتم إنشاء كل مستند SSML باستخدام عناصر أو علامات SSML. يتم استخدام هذه العناصر لضبط الصوت والنمط والنبرة والمحترفين ومستوى الصوت والمزيد.
فيما يلي مجموعة فرعية من البنية الأساسية وبناء الجملة لمستند SSML:
<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>
يتم وصف بعض أمثلة المحتويات المسموح بها في كل عنصر في القائمة التالية:
audio
: يمكن أن يحتوي نصaudio
العنصر على نص عادي أو علامات SSML التي يتم التحدث بها إذا كان الملف الصوتي غير متوفر أو غير قابل للتشعب. يمكن أن يحتوي العنصرaudio
على نص والعناصر التالية:audio
وbreak
وp
وs
وphoneme
وprosody
وsay-as
وsub
.bookmark
: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.break
: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.emphasis
: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية:audio
وbreak
وlang
emphasis
وphoneme
prosody
say-as
.sub
lang
: يمكن أن يحتوي هذا العنصر على جميع العناصر الأخرى باستثناءmstts:backgroundaudio
وvoice
و.speak
lexicon
: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.math
: يمكن أن يحتوي هذا العنصر على نص وعناصر MathML فقط.mstts:audioduration
: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.mstts:backgroundaudio
: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.mstts:embedding
: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية:audio
وbreak
وlang
emphasis
وphoneme
prosody
say-as
.sub
mstts:express-as
: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية:audio
وbreak
وlang
emphasis
وphoneme
prosody
say-as
.sub
mstts:silence
: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.mstts:viseme
: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.p
: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية:audio
وbreak
وprosody
phoneme
وsay-as
sub
mstts:express-as
.s
phoneme
: يمكن أن يحتوي هذا العنصر على نص فقط ولا يحتوي على عناصر أخرى.prosody
: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية:audio
وbreak
وphoneme
p
وprosody
say-as
sub
.s
s
: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية:audio
وphoneme
prosody
break
say-as
mstts:express-as
.sub
say-as
: يمكن أن يحتوي هذا العنصر على نص فقط ولا يحتوي على عناصر أخرى.sub
: يمكن أن يحتوي هذا العنصر على نص فقط ولا يحتوي على عناصر أخرى.speak
: العنصر الجذر لمستند SSML. يمكن أن يحتوي هذا العنصر على العناصر التالية:mstts:backgroundaudio
وvoice
.voice
: يمكن أن يحتوي هذا العنصر على جميع العناصر الأخرى باستثناءmstts:backgroundaudio
وspeak
.
تعالج خدمة الكلام علامات الترقيم تلقائيا حسب الاقتضاء، مثل الإيقاف المؤقت بعد فترة، أو استخدام الترقيم الصحيح عندما تنتهي الجملة بعلامة استفهام.
الأحرف الخاصة
لاستخدام الأحرف &
و <
و ضمن >
قيمة عنصر SSML أو نصه، يجب استخدام تنسيق الكيان. على وجه التحديد يجب عليك استخدام &
بدلا من &
، واستخدام <
بدلا من <
، واستخدام >
بدلا من >
. وإلا فلن يتم تحليل SSML بشكل صحيح.
على سبيل المثال، حدد green & yellow
بدلا من green & yellow
. يتم تحليل SSML التالي كما هو متوقع:
<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>
يجب إلغاء الأحرف الخاصة مثل علامات الاقتباس والفواصل العليا والأقواس. لمزيد من المعلومات، راجع لغة التمييز قابلة الامتداد (XML) 1.0: الملحق D.
يجب أن تتضمن علامات الاقتباس المزدوجة أو المفردة قيم السمة. على سبيل المثال، <prosody volume="90">
و <prosody volume='90'>
هي عناصر صالحة جيدة التكوين، ولكن <prosody volume=90>
لم يتم التعرف عليها.
نطق عنصر الجذر
speak
يحتوي العنصر على معلومات مثل الإصدار واللغة وتعريف مفردات العلامات. العنصر speak
هو العنصر الجذر المطلوب لجميع مستندات SSML. يجب تحديد اللغة الافتراضية speak
داخل العنصر، سواء تم ضبط اللغة في مكان آخر مثل داخل lang
العنصر أم لا.
فيما يلي بناء الجملة speak
للعنصر:
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>
السمة | الوصف | مطلوب أو اختياري |
---|---|---|
version |
الإشارة إلى إصدار مواصفات SSML المستخدمة في تفسير توصيف المستند. الإصدار الحالي هو "1.0". | المطلوب |
xml:lang |
لغة المستند الجذر. يمكن أن تحتوي القيمة على رمز لغة مثل en (الإنجليزية)، أو لغة محلية مثل en-US (الإنجليزية - الولايات المتحدة). |
المطلوب |
xmlns |
URI للمستند الذي يعرف مفردات العلامات (أنواع العناصر وأسماء السمات) لمستند SSML. معرف URI الحالي هو "http://www.w3.org/2001/10/synthesis". | المطلوب |
speak
يجب أن يحتوي العنصر على عنصر صوت واحد على الأقل.
أمثلة على الكلام
تم وصف القيم المدعومة لسمات speak
العنصر مسبقا.
مثال صوتي واحد
يستخدم هذا المثال الصوت en-US-AvaNeural
. لمزيد من الأمثلة، راجع الأمثلة الصوتية.
<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>
إضافة فاصل
break
استخدم العنصر لتجاوز السلوك الافتراضي للفواصل أو الإيقاف المؤقت بين الكلمات. وإلا فإن خدمة Speech تقوم تلقائيا بإدراج الإيقاف المؤقت.
break
يتم وصف استخدام سمات العنصر في الجدول التالي.
السمة | الوصف | مطلوب أو اختياري |
---|---|---|
strength |
المدة النسبية للإيقاف المؤقت باستخدام إحدى القيم التالية:
|
اختياري |
time |
المدة المطلقة للإيقاف المؤقت بالثوان (مثل 2s ) أو المللي ثانية (مثل 500ms ). تتراوح القيم الصالحة من 0 إلى 5000 مللي ثانية. إذا قمت بتعيين قيمة أكبر من الحد الأقصى المدعوم، فإن الخدمة تستخدم 5000ms . إذا تم تعيين السمة time ، يتم تجاهل السمة strength . |
اختياري |
فيما يلي مزيد من التفاصيل حول السمة strength
.
Strength | المدة النسبية |
---|---|
ضعيف للغاية | 250 ms |
ضعيف | 500 ملّي ثانية |
متوسط | 750 ملّي ثانية |
قوي "Strong" | 1,000 مللي ثانية |
قوي للغاية | 1,250 ملّي ثانية |
أمثلة التوقف
تم وصف القيم المدعومة لسمات break
العنصر مسبقا. الطرق الثلاث التالية كلها تضيف فواصل 750 مللي ثانية.
<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>
إضافة صمت
يمكنك استخدم العنصر mstts:silence
لإدراج وقفات مؤقتة قبل النص أو بعده، أو بين جملتين متجاورتين.
أحد الاختلافات بين mstts:silence
و break
هو أنه break
يمكن إدراج عنصر في أي مكان في النص. يعمل الصمت فقط في بداية نص الإدخال أو نهايته أو عند الفاصل بين جملتين متجاورتين.
يتم تطبيق إعداد الصمت على كل نص الإدخال داخل عنصر إحاطته voice
. لإعادة تعيين إعداد الصمت أو تغييره مرة أخرى، يجب استخدام عنصر جديد voice
بنفس الصوت أو بصوت مختلف.
mstts:silence
يتم وصف استخدام سمات العنصر في الجدول التالي.
السمة | الوصف | مطلوب أو اختياري |
---|---|---|
type |
تحديد مكان وكيفية إضافة الصمت. يتم دعم أنواع الصمت التالية:
يستبدل نوع الصمت المطلق (باللاحقة -exact ) أي صمت طبيعي بادئ أو لاحق. أنواع الصمت المطلق لها الأسبقية على النوع غير المطلق المقابل. على سبيل المثال، إذا قمت بتعيين كلا النوعين Leading و Leading-exact ، يصبح Leading-exact النوع ساري المفعول. يكون للحدث WordBoundary الأسبقية على إعدادات الصمت المتعلقة بعلامات الترقيم بما في ذلك Comma-exact أو Semicolon-exact أو Enumerationcomma-exact . عند استخدام كل من WordBoundary إعدادات الصمت المتعلقة بالحدث وعلامات الترقيم، لا تسري إعدادات الصمت المتعلقة بعلامات الترقيم. |
المطلوب |
Value |
مدة الإيقاف المؤقت بالثوان (مثل 2s ) أو المللي ثانية (مثل 500ms ). تتراوح القيم الصالحة من 0 إلى 5000 مللي ثانية. إذا قمت بتعيين قيمة أكبر من الحد الأقصى المدعوم، فإن الخدمة تستخدم 5000ms . |
المطلوب |
أمثلة على الصمت mstts
تم وصف القيم المدعومة لسمات mstts:silence
العنصر مسبقا.
في هذا المثال، يُستخدم mstts:silence
لإضافة صمت مدته 200 مللي ثانية بين جملتين.
<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>
في هذا المثال، mstts:silence
يستخدم لإضافة 50 مللي ثانية من الصمت في الفاصلة، و100 مللي ثانية من الصمت في الفاصلة المنقطة، و150 مللي ثانية من الصمت عند فاصلة التعداد.
<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>
تحديد الفقرات والجمل
يُستخدم العنصرين p
وs
للإشارة إلى الفقرات والجمل، على التوالي. في حالة عدم وجود هذه العناصر، تحدد خدمة الكلام تلقائيا بنية مستند SSML.
أمثلة الفقرة والجملة
يعرف المثال التالي فقرتين تحتوي كل منهما على جمل. في الفقرة الثانية، تحدد خدمة الكلام تلقائيا بنية الجملة، نظرا لأنه لم يتم تعريفها في مستند SSML.
<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
SSML للإشارة إلى موقع معين في تسلسل النص أو العلامة. ثم يمكنك استخدام Speech SDK والاشتراك في BookmarkReached
الحدث للحصول على إزاحة كل علامة في دفق الصوت. bookmark
العنصر غير منطوق. لمزيد من المعلومات، راجع الاشتراك في أحداث المزج.
bookmark
يتم وصف استخدام سمات العنصر في الجدول التالي.
السمة | الوصف | مطلوب أو اختياري |
---|---|---|
mark |
النص المرجعي للعنصر bookmark . |
المطلوب |
أمثلة مرجعية
تم وصف القيم المدعومة لسمات bookmark
العنصر مسبقا.
على سبيل المثال، قد تحتاج إلى معرفة إزاحة الوقت لكل كلمة زهرة في القصاصة البرمجية التالية:
<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
viseme هو الوصف المرئي لصوت لغوي بلغة منطوقة. وهو يحدد موضع الوجه والفم عند بدء الشخص بالتحدث. يمكنك استخدام عنصر mstts:viseme
في SSML لطلب إخراج viseme. لمزيد من المعلومات، راجع الحصول على موضع الوجه باستخدام viseme.
يتم تطبيق إعداد viseme على كل نص الإدخال داخل عنصر الضم الخاص به voice
. لإعادة تعيين إعداد viseme أو تغييره مرة أخرى، يجب استخدام عنصر جديد voice
بنفس الصوت أو بصوت مختلف.
viseme
يتم وصف استخدام سمات العنصر في الجدول التالي.
السمة | الوصف | مطلوب أو اختياري |
---|---|---|
type |
نوع إخراج viseme.
|
المطلوب |
إشعار
حاليا، لا يدعم redlips_front
إلا الأصوات العصبية في لغة en-US
، ويدعم FacialExpression
الأصوات العصبية في اللغتين en-US
وzh-CN
.
أمثلة Viseme
تم وصف القيم المدعومة لسمات viseme
العنصر مسبقا.
توضح قصاصة SSML البرمجية هذه كيفية طلب الأشكال المدمجة مع الكلام المركب.
<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>
الخطوات التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ