بنية مستند 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و langemphasisوphonemeprosodysay-as.sub
  • lang: يمكن أن يحتوي هذا العنصر على جميع العناصر الأخرى باستثناء mstts:backgroundaudioو voiceو.speak
  • lexicon: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.
  • math: يمكن أن يحتوي هذا العنصر على نص وعناصر MathML فقط.
  • mstts:audioduration: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.
  • mstts:backgroundaudio: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.
  • mstts:embedding: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية: audioو breakو langemphasisوphonemeprosodysay-as.sub
  • mstts:express-as: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية: audioو breakو langemphasisوphonemeprosodysay-as.sub
  • mstts:silence: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.
  • mstts:viseme: لا يمكن أن يحتوي هذا العنصر على نص أو أي عناصر أخرى.
  • p: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية: audioو breakو prosodyphonemeوsay-assubmstts:express-as.s
  • phoneme: يمكن أن يحتوي هذا العنصر على نص فقط ولا يحتوي على عناصر أخرى.
  • prosody: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية: audioو breakو phonemepوprosodysay-assub.s
  • s: يمكن أن يحتوي هذا العنصر على نص والعناصر التالية: audioوphonemeprosodybreaksay-asmstts:express-as.sub
  • say-as: يمكن أن يحتوي هذا العنصر على نص فقط ولا يحتوي على عناصر أخرى.
  • sub: يمكن أن يحتوي هذا العنصر على نص فقط ولا يحتوي على عناصر أخرى.
  • speak: العنصر الجذر لمستند SSML. يمكن أن يحتوي هذا العنصر على العناصر التالية: mstts:backgroundaudio و voice.
  • voice: يمكن أن يحتوي هذا العنصر على جميع العناصر الأخرى باستثناء mstts:backgroundaudio و speak.

تعالج خدمة الكلام علامات الترقيم تلقائيا حسب الاقتضاء، مثل الإيقاف المؤقت بعد فترة، أو استخدام الترقيم الصحيح عندما تنتهي الجملة بعلامة استفهام.

الأحرف الخاصة

لاستخدام الأحرف &و <و ضمن > قيمة عنصر SSML أو نصه، يجب استخدام تنسيق الكيان. على وجه التحديد يجب عليك استخدام &amp; بدلا من &، واستخدام &lt; بدلا من <، واستخدام &gt; بدلا من >. وإلا فلن يتم تحليل SSML بشكل صحيح.

على سبيل المثال، حدد green &amp; 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 &amp; 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 تحديد مكان وكيفية إضافة الصمت. يتم دعم أنواع الصمت التالية:
  • Leading – صمت إضافي في بداية النص. تتم إضافة القيمة التي قمت بتعيينها إلى الصمت الطبيعي قبل بداية النص.
  • Leading-exact – الصمت في بداية النص. القيمة هي طول صمت مطلق.
  • Tailing – صمت إضافي في نهاية النص. تتم إضافة القيمة التي قمت بتعيينها إلى الصمت الطبيعي بعد الكلمة الأخيرة.
  • Tailing-exact – الصمت في نهاية النص. القيمة هي طول صمت مطلق.
  • Sentenceboundary – صمت إضافي بين الجمل المجاورة. يتضمن طول الصمت الفعلي لهذا النوع الصمت الطبيعي بعد الكلمة الأخيرة في الجملة السابقة، والقيمة التي قمت بتعيينها لهذا النوع، والصمت الطبيعي قبل كلمة البداية في الجملة التالية.
  • Sentenceboundary-exact – الصمت بين الجمل المجاورة. القيمة هي طول صمت مطلق.
  • Comma-exact – الصمت عند الفاصلة بتنسيق نصف العرض أو العرض الكامل. القيمة هي طول صمت مطلق.
  • Semicolon-exact – الصمت عند الفاصلة المنقوطة بتنسيق نصف العرض أو العرض الكامل. القيمة هي طول صمت مطلق.
  • Enumerationcomma-exact – الصمت عند فاصلة التعداد بتنسيق العرض الكامل. القيمة هي طول صمت مطلق.

يستبدل نوع الصمت المطلق (باللاحقة -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 – مزامنة الشفة مع معرف viseme وإخراج إزاحة الصوت
  • FacialExpression – مزج إخراج الأشكال
المطلوب

إشعار

حاليا، لا يدعم 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>

الخطوات التالية