النطق باستخدام SSML

يمكنك استخدام لغة ترميز تركيب الكلام (SSML) مع نص إلى كلام لتحديد كيفية نطق الكلام. على سبيل المثال، يمكنك استخدام SSML مع الهواتف ومعجم مخصص لتحسين النطق. يمكنك أيضا استخدام SSML لتحديد كيفية نطق كلمة أو تعبير رياضي.

راجع الأقسام التالية للحصول على تفاصيل حول كيفية استخدام عناصر SSML لتحسين النطق. لمزيد من المعلومات حول بناء جملة SSML، راجع بنية مستند SSML والأحداث.

عنصر phoneme

يُستخدم العنصر phoneme للنطق الصوتي في مستندات SSML. يجب دائماً توفير خطاب يمكن قراءته من قبل الإنسان كإجراء احتياطي.

تتكون الأحرف الهجائية الصوتية من وحدات صوتية كلامية، والتي تتألف من أحرف أو أرقام أو رموز، وأحياناً جميعها معاً. كل وحدة صوتية كلامية تعبر عن صوت فريد في الكلام. الأبجدية الصوتية على النقيض من الأبجدية اللاتينية، حيث قد يمثل أي حرف أصواتا منطوقة متعددة. ضع في اعتبارك النطق المختلف en-US للحرف "ج" في كلمتي "الحلوى" و"التوقف" أو النطق المختلف لتركيب الحرف "th" في كلمتي "الشيء" و"تلك".

إشعار

للحصول على قائمة بال الإعدادات المحلية التي تدعم الهواتف، راجع الحواشي السفلية في جدول دعم اللغة.

phoneme يتم وصف استخدام سمات العنصر في الجدول التالي.

السمة ‏‏الوصف مطلوب أو اختياري
alphabet الأبجدية الصوتية لاستخدامها عند تركيب نطق السلسلة في السمة ph . يجب تمييز السلسلة التي تحدد الأحرف الأبجدية بالأحرف الصغيرة. الخيارات التالية هي الأحرف الأبجدية الممكنة التي يمكنك تحديدها:
تنطبق الأحرف الأبجدية فقط على phoneme في العنصر.
اختياري
ph سلسلة تحتوي على وحدات صوتية كلامية تحدد نطق الكلمة في العنصر phoneme. إذا كانت السلسلة المحددة تحتوي على هواتف غير معروف، فإن النص إلى كلام يرفض مستند SSML بأكمله ولا ينتج أي من إخراج الكلام المحدد في المستند.

بالنسبة ipaإلى ، للتشديد على مقطع واحد عن طريق وضع رمز الإجهاد قبل هذا المقطع، تحتاج إلى وضع علامة على جميع المقاطع للكلمة. وإلا، يتم الضغط على المقطع قبل رمز الإجهاد هذا. بالنسبة إلى sapi، إذا كنت تريد التأكيد على مقطع واحد، تحتاج إلى وضع رمز الإجهاد بعد هذا المقطع، سواء تم وضع علامة على كل المقاطع من الكلمة أم لا.
المطلوب

أمثلة على phoneme

تم وصف القيم المدعومة لسمات phoneme العنصر مسبقا. في المثالين الأولين، يتم تحديد قيم ph="tə.ˈmeɪ.toʊ" أو ph="təmeɪˈtoʊ" للتشديد على المقطع .meɪ

<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>

معجم مخصص

يمكنك تحديد كيفية قراءة الكيانات الفردية (مثل الشركة أو المصطلح الطبي أو رمز مشاعر) في SSML باستخدام الهاتف والعناصر الفرعية. لتحديد كيفية قراءة كيانات متعددة، قم بإنشاء ملف معجم مخصص مهيكل XML. ثم تقوم بتحميل ملف XML المعجمي المخصص والإشارة إليه باستخدام عنصر SSML lexicon .

إشعار

للحصول على قائمة باللغات التي تدعم المعجم المخصص، راجع الحواشي السفلية في جدول دعم اللغة.

العنصر lexicon غير مدعوم من قبل Long Audio API. بالنسبة إلى النص طويل النموذج إلى كلام، استخدم واجهة برمجة تطبيقات تجميع الدفعات (معاينة) بدلا من ذلك.

lexicon يتم وصف استخدام سمات العنصر في الجدول التالي.

السمة ‏‏الوصف مطلوب أو اختياري
uri URI لملف XML المعجمي المخصص الذي يمكن الوصول إليه بشكل عام مع ملحق .xml الملف أو .pls . يوصى باستخدام Azure Blob Storage ولكنه غير مطلوب. لمزيد من المعلومات حول ملف القاموس المخصص، راجع Pronunciation Lexicon Specification (PLS) Version 1.0. المطلوب

أمثلة معجمية مخصصة

تم وصف القيم المدعومة لسمات lexicon العنصر مسبقا.

بعد نشر معجمك المخصص، يمكنك الرجوع إليه من SSML. يشير مثال SSML التالي إلى معجم مخصص تم تحميله إلى https://www.example.com/customlexicon.xml. نحن ندعم عناوين URL المعجمية من Azure Blob Storage، وتخزين خدمات الوسائط المتقدمة (AMS)، وGitHub. ومع ذلك، لاحظ أن عناوين URL العامة الأخرى قد لا تكون متوافقة.

<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>

ملف معجم مخصص

لتحديد كيفية قراءة كيانات متعددة، يمكنك تعريفها في ملف XML معجم مخصص باستخدام .xml ملحق الملف أو .pls .

إشعار

ملف المعجم المخصص هو مستند XML صالح، ولكن لا يمكن استخدامه كمستند SSML.

فيما يلي بعض القيود على ملف المعجم المخصص:

  • حجم الملف: يقتصر حجم ملف المعجم المخصص على 100 كيلوبايت كحد أقصى. إذا تجاوز حجم الملف الحد البالغ 100 كيلوبايت، يفشل طلب التجميع. يمكنك تقسيم المعجم إلى معجمات متعددة وتضمينها في SSML إذا تجاوز حجم الملف 100 كيلوبايت.
  • تحديث ذاكرة التخزين المؤقت ل Lexicon: يتم تخزين المعجم المخصص مؤقتا مع URI كمفتاح على النص إلى كلام عند تحميله لأول مرة. لا يتم إعادة تحميل المعجم الذي يحمل نفس URI في غضون 15 دقيقة، لذلك يحتاج تغيير المعجم المخصص إلى الانتظار 15 دقيقة على الأكثر حتى يصبح ساري المفعول.

يتم وصف العناصر والسمات المدعومة لملف XML المعجمي المخصص في الإصدار 1.0 من مواصفات معجم النطق (PLS). فيما يلي بعض الأمثلة على العناصر والسمات المدعومة:

  • يحتوي العنصر lexicon على عنصر lexeme واحد على الأقل. يحتوي القاموس على سمة xml:lang اللازمة للإشارة إلى الإعدادات المحلية التي يجب تطبيقها عليه. يقتصر معجم مخصص واحد على لغة واحدة حسب التصميم، لذلك إذا قمت بتطبيقه على لغة مختلفة، فإنه لا يعمل. يحتوي lexicon العنصر أيضا على سمة alphabet للإشارة إلى الأبجدية المستخدمة في المعجم. والقيم المحتملة هي ipa و x-microsoft-sapi.
  • يحتوي كل عنصر lexeme على عنصر grapheme واحد على الأقل وعنصر واحد أو أكثر من العناصر grapheme وalias وphoneme. العنصر lexeme حساس لحالة الأحرف في القاموس المخصص. على سبيل المثال، إذا قمت فقط بتوفير phoneme ل lexeme "Hello"، فإنه لا يعمل مع lexeme "hello".
  • يحتوي العنصر grapheme على نص يصف قواعد الإملاء.
  • تُستخدم العناصر alias للإشارة إلى نطق اختصار أو مصطلح مختصر.
  • يوفر العنصر phoneme نصاً يصف كيفية نطق lexeme. الحد المقطعي هو '.' في الأبجدية IPA. phoneme لا يمكن أن يحتوي العنصر على مسافة بيضاء عند استخدام الأبجدية IPA.
  • عند يتم تزويد العنصرين alias وphoneme بالعنصر grapheme نفسه، يكون لـ alias أولوية أكبر.

توفر Microsoft أداة التحقق من الصحة للمعاجم المخصصة التي تساعدك على العثور على أخطاء (مع رسائل خطأ مفصلة) في ملف المعجم المخصص. يوصى باستخدام الأداة قبل استخدام ملف XML المعجمي المخصص في الإنتاج مع خدمة الكلام.

أمثلة ملف معجم مخصص

سيتم تضمين مثال XML التالي (وليس SSML) في ملف معجم .xml مخصص. عند استخدام هذا القاموس المخصص، تُفسر الأحرف "BTW" على أنها "بالمناسبة". وتُقرأ "Benigni" باستخدام الأبجدية الصوتية الدولية المتوفرة "bɛˈniːnji."

<?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>

لا يمكنك تعيين نطق عبارة مباشرة باستخدام القاموس المخصص. إذا كنت بحاجة إلى تعيين النطق لاختصار أو مصطلح مختصر، فقم أولاً بتوفير alias، ثم اربط phoneme بـ alias. على سبيل المثال:

<?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>

يمكنك أيضاً توفير alias المتوقع للاختصار أو المصطلح المختصر مباشرة. على سبيل المثال:

  <lexeme>
    <grapheme>Scotland MV</grapheme>
    <alias>Scotland Media Wave</alias>
  </lexeme>

تستخدم أمثلة ملفات XML المعجمية المخصصة السابقة الأبجدية IPA، والتي تعرف أيضا باسم مجموعة هواتف IPA. نقترح عليك استخدام الأبجدية الصوتية الدولية لأنها المعيار الدولي. تكون بعض أحرف الأبجدية الصوتية الدولية، على صورتها "المركبة" و"المفككة" عند تمثيلها بواسطة Unicode. يدعم القاموس المخصص Unicode المفكك فقط.

تعرف خدمة الكلام مجموعة صوتية لهذه الإعدادات المحلية: en-USوfr-FRzh-HKde-DEes-ESja-JPzh-CN.zh-TW لمزيد من المعلومات حول الأبجدية الصوتية لخدمة Speech المفصلة، راجع مجموعة الوحدات الصوتية لخدمة Speech.

يمكنك استخدام x-microsoft-sapi باعتبارها قيمة للسمة alphabet مع القاموس المخصص كما هو موضح هنا:

<?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

say-as يشير العنصر إلى نوع المحتوى، مثل رقم نص العنصر أو تاريخه. يوفر هذا العنصر إرشادات لمحرك تركيب الكلام حول كيفية نطق النص.

say-as يتم وصف استخدام سمات العنصر في الجدول التالي.

السمة ‏‏الوصف مطلوب أو اختياري
interpret-as الإشارة إلى نوع محتوى نص العنصر. للحصول على قائمة بالأنواع، راجع الجدول التالي. المطلوب
format توفير معلومات إضافية حول التنسيق الدقيق لنص العنصر الخاص بأنواع المحتويات التي قد تحتوي على تنسيقات غير واضحة. تعرّف SSML تنسيقات أنواع المحتوى التي تستخدمها. راجع الجدول التالي. اختياري
detail الإشارة إلى مستوى التفاصيل المطلوب ذكرها أثناء الكلام. على سبيل المثال، قد تطلب هذه السمة أن ينطق محرك تركيب الكلام علامات الترقيم. لا توجد قيم قياسية معرّفة لـ detail. اختياري

يتوفر الدعم لأنواع المحتوى التالية للسمتين interpret-as وformat. قم بتضمين السمة format فقط إذا format لم يكن العمود فارغا في هذا الجدول.

إشعار

characters يتم اعتماد قيمتي و spell-out للسمة interpret-as لكافة لغة النص إلى الكلام. يتم دعم قيم السمات الأخرى interpret-as لجميع اللغات التالية: العربية والكتالونية والصينية والدانمركية والهولندية والإنجليزية والفرنسية والفنلندية والألمانية والهندية والإيطالية واليابانية والكورية والنرويجية والبولندية والبرتغالية والروسية والإسبانية والسويدية.

interpret-as format الترجمة
characters, spell-out ينطق النص باعتباره أحرف فردية (الواحد تلو الآخر). ينطق محرك تركيب الكلام:

<say-as interpret-as="characters">test</say-as>

على الصورة "T E S T."
cardinal, number بلا يُنطق النص باعتباره عدداً أساسياً. ينطق محرك تركيب الكلام:

There are <say-as interpret-as="cardinal">10</say-as> options

كما "هناك عشرة خيارات. "
ordinal بلا يُنطق النص باعتباره عدداً ترتيبياً. ينطق محرك تركيب الكلام:

Select the <say-as interpret-as="ordinal">3rd</say-as> option

"حدد الخيار الثالث."
number_digit بلا يُنطق النص باعتباره تسلسل من الأرقام الفردية. ينطق محرك تركيب الكلام:

<say-as interpret-as="number_digit">123456789</say-as>

على الصورة "1 2 3 4 5 6 7 8 9."
fraction بلا يُنطق النص باعتباره عدداً كسرياً. ينطق محرك تركيب الكلام:

<say-as interpret-as="fraction">3/8</say-as> of an inch

"ثلاثة أثمان من البوصة."
date dmy, mdy, ymd, ydm, ym, my, md, dm, d, m, y يُنطق النص باعتباره تاريخاً. تحدد السمة format تنسيق التاريخ (d=يوم وm=شهر وy=سنة). ينطق محرك تركيب الكلام:

Today is <say-as interpret-as="date">10-12-2016</say-as>

كما "اليوم هو أكتوبر الثاني عشر ألفين ستة عشر."
ينطق:

Today is <say-as interpret-as="date" format="dmy">10-12-2016</say-as>

"اليوم هو العاشر من ديسمبر ألفين ستة عشر"
time hms12, hms24 يُنطق النص باعتباره وقتاً. تحدد السمة format إذا ما كان الوقت محدداً باستخدام تنسيق 12 ساعة (hms12) أو تنسيق 24 ساعة (hms24). استخدم النقطتين لفصل الأعداد التي تمثل الساعات والدقائق والثواني. فيما يلي بعض أمثلة لتنسيقات الوقت الصالحة: 12:35 و1:14:32 و08:15 و02:50:45. ينطق محرك تركيب الكلام:

The train departs at <say-as interpret-as="time" format="hms12">4:00am</say-as>

"يغادر القطار الساعة الرابعة صباحاً."
duration hms, hm, ms يُنطق النص باعتباره مدة زمنية. تحدد السمة format تنسيق المدة الزمنية (h=ساعة وm=دقيقة وs=ثانية). ينطق محرك تركيب الكلام:

<say-as interpret-as="duration">01:18:30</say-as>

"ساعة واحدة وثمانية عشر دقيقة وثلاثين ثانية".
ينطق:

<say-as interpret-as="duration" format="ms">01:18</say-as>

"دقيقة واحدة وثمانية عشر ثانية".
يتوفر الدعم لهذه العلامة فقط في اللغة الإنجليزية والإسبانية.
telephone بلا يُنطق النص باعتباره رقم هاتف. ينطق محرك تركيب الكلام:

The number is <say-as interpret-as="telephone">(888) 555-1212</say-as>

على الصورة "رقمي هو رمز المنطقة ثمانية ثمانية ثمانية خمسة خمسة خمسة واحد اثنان واحد اثنان."
currency بلا يتم نطق النص كعملة. ينطق محرك تركيب الكلام:

<say-as interpret-as="currency">99.9 USD</say-as>

"تسع وتسعون دولارا أمريكيا وتسعين سنتا"
address بلا يُنطق النص باعتباره عنواناً. ينطق محرك تركيب الكلام:

I'm at <say-as interpret-as="address">150th CT NE, Redmond, WA</say-as>

"أنا موجود عند 150 شارع كورت نورث إيست ريدموند واشنطن."
name بلا يُنطق النص باعتباره اسم شخص. ينطق محرك تركيب الكلام:

<say-as interpret-as="name">ED</say-as>

على الصورة [æd].
في الأسماء الصينية، تُنطق بعض الأحرف بشكل مختلف عندما تظهر في اسم العائلة. على سبيل المثال، يقول محرك تركيب الكلام 仇 في

<say-as interpret-as="name">仇先生</say-as>

على الصورة [qiú] بدلاً من [chóu].

أمثلة على ذلك

تم وصف القيم المدعومة لسمات say-as العنصر مسبقا.

ينطق محرك تركيب الكلام المثال التالي على الصورة: "كان طلبك الأول لغرفة واحدة في التاسع عشر من أكتوبر لسنة ألفين وعشرة مع وصول مبكر في الثانية عشرة وخمسة وثلاثين دقيقة مساءً."

<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>

عنصر فرعي

sub استخدم العنصر للإشارة إلى أنه يجب نطق القيمة النصية لسمة الاسم المستعار بدلا من النص المضمن للعنصر. بهذه الطريقة، يحتوي SSML على نموذج منطوق ومكتوب.

sub يتم وصف استخدام سمات العنصر في الجدول التالي.

السمة ‏‏الوصف مطلوب أو اختياري
alias القيمة النصية التي يجب نطقها بدلا من النص المضمن للعنصر. المطلوب

أمثلة فرعية

تم وصف القيم المدعومة لسمات sub العنصر مسبقا.

يتحدث محرك تركيب الكلام المثال التالي باسم "World Wide Web Consortium".

<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

لغة العلامات الرياضية (MathML) هي لغة ترميز متوافقة مع XML تصف المحتوى الرياضي والبنية. يمكن لخدمة الكلام استخدام MathML كنص إدخال لنطق الرموز الرياضية بشكل صحيح في صوت الإخراج.

إشعار

عناصر MathML (العلامات) مدعومة حاليا في الشبكات المحلية التالية: de-DEوpt-BRja-JPzh-CNko-KRit-ITfr-FRes-MXen-USfr-CAen-AUen-GBes-ES.

يتوفر الدعم لجميع العناصر من مواصفات MathML 2.0 وMathML 3.0، باستثناء العناصر MathML 3.0 Elementary Math.

لاحظ عناصر وسمات MathML هذه:

  • السمة xmlns في <math xmlns="http://www.w3.org/1998/Math/MathML"> اختيارية.
  • semanticsannotationلا تقوم العناصر و و annotation-xml إخراج الكلام، لذلك يتم تجاهلها.
  • إذا لم يتم التعرف على عنصر، يتم تجاهله، ولا تزال تتم معالجة العناصر التابعة داخله.

لا يدعم بناء جملة XML كيانات MathML، لذلك يجب استخدام أحرف unicode المقابلة لتمثيل الكيانات، على سبيل المثال، يجب تمثيل الكيان &copy; بأحرف &#x00A9;unicode الخاصة به، وإلا يحدث خطأ.

أمثلة على MathML

إخراج النص إلى كلام لهذا المثال هو "مربع بالإضافة إلى b تربيع يساوي c تربيع".

<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>

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