SSML (Dialogflow)

هنگام برگرداندن پاسخ به «دستیار Google»، می‌توانید از زیرمجموعه‌ای از «زبان نشانه‌گذاری ترکیب گفتار» (SSML) در پاسخ‌هایتان استفاده کنید. بااستفاده از SSML، می‌توانید پاسخ‌های مکالمه‌تان را بیشتر شبیه گفتار طبیعی کنید. در زیر نمونه‌ای از نشانه‌گذاری SSML و نحوه خواندن آن توسط «دستیار Google» نشان داده شده است.

SSML
function saySSML(conv) {
  const ssml = '<speak>' +
    'Here are <say-as interpret-as="characters">SSML</say-as> samples. ' +
    'I can pause <break time="3" />. ' +
    'I can play a sound <audio src="https://www.example.com/MY_WAVE_FILE.wav">your wave file</audio>. ' +
    'I can speak in cardinals. Your position is <say-as interpret-as="cardinal">10</say-as> in line. ' +
    'Or I can speak in ordinals. You are <say-as interpret-as="ordinal">10</say-as> in line. ' +
    'Or I can even speak in digits. Your position in line is <say-as interpret-as="digits">10</say-as>. ' +
    'I can also substitute phrases, like the <sub alias="World Wide Web Consortium">W3C</sub>. ' +
    'Finally, I can speak a paragraph with two sentences. ' +
    '<p><s>This is sentence one.</s><s>This is sentence two.</s></p>' +
    '</speak>';
  conv.ask(ssml);
}
JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "<speak>Here are <say-as interpret-as=\"characters\">SSML</say-as> samples. I can pause <break time=\"3\" />. I can play a sound <audio src=\"https://www.example.com/MY_WAVE_FILE.wav\">your wave file</audio>. I can speak in cardinals. Your position is <say-as interpret-as=\"cardinal\">10</say-as> in line. Or I can speak in ordinals. You are <say-as interpret-as=\"ordinal\">10</say-as> in line. Or I can even speak in digits. Your position in line is <say-as interpret-as=\"digits\">10</say-as>. I can also substitute phrases, like the <sub alias=\"World Wide Web Consortium\">W3C</sub>. Finally, I can speak a paragraph with two sentences. <p><s>This is sentence one.</s><s>This is sentence two.</s></p></speak>"
              }
            }
          ]
        }
      }
    }
  ]
}

صدا

SSML در شبیه‌ساز Actions پشتیبانی می‌شود، اما در شبیه‌ساز Dialogflow پشتیبانی نمی‌شود.

نشانی‌های وب در SSML

هنگام تعریف پاسخ SSML که فقط شامل نشانی وب است، علامت‌های «&» در آن نشانی وب می‌تواند به‌دلیل قالب‌بندی XML مشکل ایجاد کند. برای اطمینان از اینکه نشانی وب به‌درستی ارجاع داده شده است، نمونه‌های & را با &amp; جایگزین کنید.

حتی اگر پاسخ SSML شما فقط شامل یک نشانی وب باشد، Actions on Google به نوشتار نمایشی برای پاسخ نیاز دارد. چون نوشتار داخل برچسب <audio> توسط «دستیار» خوانده نمی‌شود، می‌توانید نوشتار پرکننده یا شرح کوتاهی در برچسب <audio> خود درج کنید تا این شرط را برآورده کنید. نوشتار داخل برچسب <audio> پس‌از پخش شدن صدا توسط «دستیار» گفته نخواهد شد و الزامات Action on Google را برای نسخه نوشتاری نمایشی SSML شما برآورده می‌کند.

در اینجا نمونه‌ای از پاسخ SSML مشکل‌دار آورده شده است:

<speak>
  <audio src="https://firebasestorage.googleapis.com/v0/b/project-name.appspot.com/o/audio-file-name.ogg?alt=media&token=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
  </audio>
</speak>

مثال بالا از & برای قالب‌بندی XML مناسب استفاده نمی‌کند.

نسخه اصلاح‌شده همان پاسخ SSML به‌صورت زیر است:

<speak>
  <audio src="https://firebasestorage.googleapis.com/v0/b/project-name.appspot.com/o/audio-file-name.ogg?alt=media&amp;token=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
  text
  </audio>
</speak>

پشتیبانی از عناصر SSML

بخش‌های زیر عناصر و گزینه‌های SSML را که می‌توان در «کنش‌های» شما استفاده کرد شرح می‌دهند.

<speak>

عنصر ریشه پاسخ SSML.

برای کسب اطلاعات بیشتر درباره عنصر speak، به مشخصات W3 مراجعه کنید.

مثال

<speak>
  my SSML content
</speak>

<break>

عنصری خالی که مکث یا سایر مرزهای عروضی بین کلمات را کنترل می‌کند. استفاده از <break> بین هر جفت از نشان‌ها اختیاری است. اگر این عنصر بین کلمات وجود نداشته باشد، وقفه به‌طور خودکار براساس بافت زبانی تعیین می‌شود.

برای کسب اطلاعات بیشتر درباره عنصر break، به مشخصات W3 مراجعه کنید.

مشخصه‌ها

مشخصه شرح
time

طول وقفه را براساس ثانیه یا میلی‌ثانیه تنظیم می‌کند (مثلاً «۳ ثانیه» یا «۲۵۰ میلی‌ثانیه»).

strength

قدرت وقفه عروضی برونداد را براساس اصطلاحات نسبی تنظیم می‌کند. مقادیر معتبر عبارتند از: «x-weak» (خیلی ضعیف)، «weak» (ضعیف)، «medium» (متوسط)، «strong» (قوی)، و «x-strong» (خیلی قوی). مقدار «none» نشان می‌دهد که هیچ مرز شکست عروضی نباید برونداد شود، که می‌تواند برای جلوگیری از شکست عروضی که پردازنده درغیراین‌صورت تولید می‌کند استفاده شود. مقادیر دیگر نشان‌دهنده قدرت شکست غیرکاهشی یکنواخت (ازنظر مفهومی افزایشی) بین نشان‌ها است. مرزهای قوی‌تر معمولاً با مکث همراه هستند.

مثال

مثال زیر نشان می‌دهد که چگونه از عنصر <break> برای مکث بین مراحل استفاده کنید:

<speak>
  Step 1, take a deep breath. <break time="200ms"/>
  Step 2, exhale.
  Step 3, take a deep breath again. <break strength="weak"/>
  Step 4, exhale.
</speak>

<say‑as>

این عنصر به شما امکان می‌دهد اطلاعات مربوط به نوع ساختار نوشتاری را که در عنصر وجود دارد نشان دهید. همچنین به مشخص کردن سطح جزئیات برای ارائه نوشتار موجود کمک می‌کند.

عنصر <say‑as> دارای مشخصه الزامی interpret-as است که نحوه تلفظ مقدار را تعیین می‌کند. مشخصه‌های اختیاری format و detail ممکن است بسته به مقدار خاص interpret-as استفاده شوند.

مثال‌ها

مشخصه interpret-as از مقادیر زیر پشتیبانی می‌کند:

  • currency

    مثال زیر به‌صورت «چهل و دو دلار و یک سنت» خوانده می‌شود. اگر مشخصه زبان حذف شود، از منطقه زبانی فعلی استفاده می‌کند.

    <speak>
      <say-as interpret-as='currency' language='en-US'>$42.01</say-as>
    </speak>
        
  • telephone

    توضیحات interpret-as='telephone' را در یادداشت WG مقادیر مشخصه say-as در W3C SSML 1.0 ببینید.

    مثال زیر به‌صورت «یک هشت صفر صفر دو صفر دو یک دو یک دو» خوانده می‌شود. اگر مشخصه «google:style» حذف شود، صفر را به‌صورت حرف O می‌خواند.

    مشخصه «google:style='zero-as-zero'» درحال‌حاضر فقط در مناطق زبانی انگلیسی کار می‌کند.

          <speak>
            <say-as interpret-as='telephone' google:style='zero-as-zero'>1800-202-1212</say-as>
          </speak>
        
  • ‫verbatim یا spell-out

    مثال زیر حرف‌به‌حرف هجی شده است:

    <speak>
      <say-as interpret-as="verbatim">abcdefg</say-as>
    </speak>
        
  • date

    مشخصه format دنباله‌ای از کدهای نویسه فیلد تاریخ است. کدهای نویسه فیلد پشتیبانی‌شده در format به‌ترتیب {y، m، d} برای سال، ماه، و روز (ماه) است. اگر کد فیلد یک‌بار برای سال، ماه، یا روز نشان داده شود، تعداد ارقام موردانتظار به‌ترتیب ۴، ۲، و ۲ است. اگر کد فیلد تکرار شود، تعداد ارقام موردانتظار برابر با تعداد دفعات تکرار کد است. فیلدهای نوشتار تاریخ ممکن است با علائم نگارشی و/یا فاصله از هم جدا شوند.

    مشخصه detail شکل گفتاری تاریخ را کنترل می‌کند. برای detail='1' فقط فیلدهای روز و یکی از فیلدهای ماه یا سال الزامی است، هرچند هر دو را می‌توان ارائه کرد. این تنظیم پیش‌فرض است وقتی کمتر از هر سه فیلد ارائه شده باشد. شکل گفتاری آن «{ordinal day} {month}، {year}» است.

    مثال زیر به‌صورت «The tenth of September, nineteen sixty» (دهم سپتامبر، هزار و نهصد و شصت) خوانده می‌شود:

    <speak>
      <say-as interpret-as="date" format="yyyymmdd" detail="1">
        1960-09-10
      </say-as>
    </speak>
        

    مثال زیر به‌صورت «دهم سپتامبر» خوانده می‌شود:

    <speak>
      <say-as interpret-as="date" format="dm">10-9</say-as>
    </speak>
        

    برای detail='2'، فیلدهای روز، ماه، و سال الزامی است و این حالت پیش‌فرض است وقتی هر سه فیلد ارائه شده باشد. شکل گفتاری آن «{month} {ordinal day}, {year}» است.

    مثال زیر به‌صورت «دهم سپتامبر، هزار و نهصد و شصت» خوانده می‌شود:

    <speak>
      <say-as interpret-as="date" format="dmy" detail="2">
        10-9-1960
      </say-as>
    </speak>
        
  • characters

    مثال زیر به‌صورت «C A N» خوانده می‌شود:

    <speak>
      <say-as interpret-as="characters">can</say-as>
    </speak>
        
  • cardinal

    مثال زیر به‌صورت «Twelve thousand three hundred forty five» (برای انگلیسی امریکایی) یا «Twelve thousand three hundred and forty five» (برای انگلیسی بریتانیایی) خوانده می‌شود:

    <speak>
      <say-as interpret-as="cardinal">12345</say-as>
    </speak>
        
  • ordinal

    مثال زیر به‌صورت «First» (اول) خوانده می‌شود:

    <speak>
      <say-as interpret-as="ordinal">1</say-as>
    </speak>
        
  • fraction

    مثال زیر به‌صورت «پنج و نیم» خوانده می‌شود:

    <speak>
      <say-as interpret-as="fraction">5+1/2</say-as>
    </speak>
        
  • ‫expletive یا bleep

    مثال زیر به‌صورت صدای بوق پخش می‌شود، گویی سانسور شده است:

    <speak>
      <say-as interpret-as="expletive">censor this</say-as>
    </speak>
        
  • unit

    واحدها را بسته به عدد به مفرد یا جمع تبدیل می‌کند. مثال زیر به‌صورت «۱۰ فوت» خوانده می‌شود:

    <speak>
      <say-as interpret-as="unit">10 foot</say-as>
    </speak>
        
  • time

    مثال زیر به‌صورت «Two thirty P.M.» (دو و سی دقیقه بعدازظهر) خوانده می‌شود:

    <speak>
      <say-as interpret-as="time" format="hms12">2:30pm</say-as>
    </speak>
        

    مشخصه format دنباله‌ای از کدهای نویسه فیلد زمان است. کدهای نویسه فیلد پشتیبانی‌شده در format عبارت‌اند از {h، m، s، Z، 12، 24} که به‌ترتیب برای ساعت، دقیقه (از ساعت)، ثانیه (از دقیقه)، منطقه زمانی، زمان ۱۲ ساعته، و زمان ۲۴ ساعته هستند. اگر کد فیلد یک‌بار برای ساعت، دقیقه، یا ثانیه نشان داده شود، تعداد ارقام موردانتظار به‌ترتیب ۱، ۲، و ۲ است. اگر کد فیلد تکرار شود، تعداد ارقام موردانتظار برابر با تعداد دفعات تکرار کد است. فیلدهای نوشتار زمان ممکن است با علائم نگارشی و/یا فاصله از هم جدا شده باشند. اگر ساعت، دقیقه، یا ثانیه در قالب مشخص نشده باشد یا رقم منطبقی وجود نداشته باشد، فیلد به‌عنوان مقدار صفر درنظر گرفته می‌شود. format پیش‌فرض «hms12» است.

    مشخصه detail کنترل می‌کند که قالب گفتاری زمان ۱۲ ساعته باشد یا ۲۴ ساعته. اگر detail='1' یا detail حذف شده باشد و قالب زمان ۲۴ ساعته باشد، شکل گفتاری زمان ۲۴ ساعته است. اگر detail='2' یا detail حذف شده باشد و قالب زمان ۱۲ ساعته باشد، شکل گفتاری زمان ۱۲ ساعته است.

برای کسب اطلاعات بیشتر درباره عنصر say-as، به مشخصات W3 مراجعه کنید.

<audio>

از درج فایل‌های صوتی ضبط‌شده و درج دیگر قالب‌های صوتی در ارتباط با برونداد گفتاری ترکیبی پشتیبانی می‌کند.

مشخصه‌ها

مشخصه الزامی پیش‌فرض مقادیر
src بله موجود نیست یک URI که به منبع رسانه صوتی اشاره می‌کند. پروتکل پشتیبانی‌شده https است.
clipBegin no 0 TimeDesignation که فاصله از شروع منبع صوتی برای شروع بازپخش است. اگر این مقدار بزرگ‌تر یا مساوی با مدت واقعی منبع صوتی باشد، هیچ صدایی درج نمی‌شود.
clipEnd no نامحدود TimeDesignation که افست از شروع منبع صوتی برای پایان دادن به بازپخش است. اگر مدت واقعی منبع صوتی کمتر از این مقدار باشد، بازپخش در آن زمان به‌پایان می‌رسد. اگر clipBegin بزرگ‌تر یا مساوی با clipEnd باشد، هیچ صدایی درج نمی‌شود.
speed no ‎٪۱۰۰ نرخ بازپخش خروجی نسبت به نرخ ورودی عادی که به‌صورت درصد بیان می‌شود. قالب آن یک عدد حقیقی مثبت است که به‌دنبال آن % می‌آید. محدوده پشتیبانی‌شده فعلی [۵۰٪ (آهسته - نصف سرعت)، ۲۰۰٪ (سریع - دوبرابر سرعت)] است. مقادیر خارج از این محدوده ممکن است (یا ممکن نیست) برای قرار گرفتن در این محدوده تنظیم شوند.
repeatCount no ۱، یا ۱۰ اگر repeatDur تنظیم شده باشد عدد حقیقی که مشخص می‌کند صدا چند بار درج شود (پس‌از برش، درصورت وجود، توسط clipBegin و/یا clipEnd). تکرارهای کسری پشتیبانی نمی‌شوند، بنابراین مقدار به نزدیک‌ترین عدد صحیح گرد می‌شود. صفر مقدار معتبری نیست و بنابراین به‌عنوان نامشخص درنظر گرفته می‌شود و در این حالت مقدار پیش‌فرض را دارد.
repeatDur no نامحدود TimeDesignation که محدودیتی برای مدت زمان صدای درج‌شده پس‌از پردازش منبع برای مشخصه‌های clipBegin، clipEnd، repeatCount، و speed است (به‌جای مدت زمان پخش عادی). اگر مدت زمان صدای پردازش‌شده کمتر از این مقدار باشد، بازپخش در آن زمان پایان می‌یابد.
soundLevel no +0dB سطح صدای صدا را به میزان soundLevelدسی‌بل تنظیم کنید. حداکثر محدوده ۴۰ دسی‌بل +/- است اما محدوده واقعی ممکن است کمتر باشد و کیفیت خروجی ممکن است در کل محدوده نتایج خوبی نداشته باشد.

تنظیمات زیر درحال‌حاضر برای صدا پشتیبانی می‌شود:

  • قالب: MP3 (MPEG v2)
    • ‫۲۴ هزار نمونه در ثانیه
    • ۲۴ هزار تا ۹۶ هزار بیت در ثانیه، نرخ ثابت
  • قالب: Opus در Ogg
    • ۲۴ هزار نمونه در ثانیه (فراپهن‌باند)
    • ۲۴ تا ۹۶ هزار بیت در ثانیه، نرخ ثابت
  • قالب (منسوخ‌شده): WAV (RIFF)
    • PCM‏ ۱۶ بیتی امضاشده، لیتل اندین
    • ‫۲۴ هزار نمونه در ثانیه
  • برای همه قالب‌ها:
    • تک‌کاناله ترجیح داده می‌شود، اما استریو قابل‌قبول است.
    • حداکثر مدت ۲۴۰ ثانیه. اگر می‌خواهید صدایی با مدت طولانی‌تر پخش کنید، پاسخ رسانه‌ای را پیاده‌سازی کنید.
    • حد اندازه فایل ۵ مگابایت است.
    • نشانی وب منبع باید از پروتکل HTTPS استفاده کند.
    • UserAgent ما هنگام واکشی صدا «Google-Speech-Actions» است.

محتوای عنصر <audio> اختیاری است و اگر فایل صوتی قابل‌پخش نباشد یا دستگاه خروجی از صدا پشتیبانی نکند، استفاده می‌شود. محتوا ممکن است شامل عنصر <desc> باشد که در این صورت محتوای نوشتاری آن عنصر برای نمایش استفاده می‌شود. برای اطلاعات بیشتر، به بخش «صدای ضبط‌شده» در بازبینه پاسخ‌ها مراجعه کنید.

نشانی وب src باید نشانی وب https نیز باشد (Google Cloud Storage می‌تواند فایل‌های صوتی شما را در نشانی وب https میزبانی کند).

برای کسب اطلاعات بیشتر درباره پاسخ‌های رسانه‌ای، به بخش پاسخ رسانه‌ای در راهنمای «پاسخ‌ها» مراجعه کنید.

برای کسب اطلاعات بیشتر درباره عنصر audio، به مشخصات W3 مراجعه کنید.

مثال

<speak>
  <audio src="cat_purr_close.ogg">
    <desc>a cat purring</desc>
    PURR (sound didn't load)
  </audio>
</speak>

<p>,<s>

عناصر جمله و پاراگراف.

برای کسب اطلاعات بیشتر درباره عناصر p و s، به مشخصات W3 مراجعه کنید.

مثال

<p><s>This is sentence one.</s><s>This is sentence two.</s></p>

روال‌های مطلوب

  • از برچسب‌های <s>...</s> برای دربرگرفتن جمله‌های کامل استفاده کنید، به‌ویژه اگر حاوی عناصر SSML باشند که عروض را تغییر می‌دهند (یعنی <audio>، <break>، <emphasis>، <par>، <prosody>، <say-as>، <seq>، و <sub>).
  • اگر وقفه در گفتار به‌اندازه‌ای طولانی است که می‌توانید آن را بشنوید، از برچسب‌های <s>...</s> استفاده کنید و آن وقفه را بین جمله‌ها قرار دهید.

<sub>

نشان می‌دهد که نوشتار موجود در مقدار مشخصه alias جایگزین نوشتار موجود برای تلفظ می‌شود.

همچنین می‌توانید از عنصر sub برای ارائه تلفظ ساده‌شده کلمه‌ای که خواندن آن دشوار است استفاده کنید. آخرین مثال زیر این مورد استفاده را به زبان ژاپنی نشان می‌دهد.

برای کسب اطلاعات بیشتر درباره عنصر sub، به مشخصات W3 مراجعه کنید.

مثال‌ها

<sub alias="World Wide Web Consortium">W3C</sub>
<sub alias="にっぽんばし">日本橋</sub>

<mark>

عنصر خالی که نشانگری را در نوشتار یا توالی برچسب قرار می‌دهد. می‌توان از آن برای ارجاع به مکان خاصی در توالی یا درج نشانگر در جریان خروجی برای اعلان ناهمگام استفاده کرد.

برای کسب اطلاعات بیشتر درباره عنصر mark، مشخصات W3 را ببینید.

مثال

<speak>
Go from <mark name="here"/> here, to <mark name="there"/> there!
</speak>

<prosody>

برای سفارشی‌سازی زیروبمی، سرعت گفتار، و میزان صدای نوشتار موجود در عنصر استفاده می‌شود. درحال‌حاضر، از مشخصه‌های rate، pitch، و volume پشتیبانی می‌شود.

مشخصه‌های rate و volume را می‌توان براساس مشخصات W3 تنظیم کرد. سه گزینه برای تنظیم مقدار مشخصه pitch وجود دارد:

مشخصه شرح
name

شناسه رشته برای هر علامت.

گزینه شرح
خویشاوند مقدار نسبی (مثلاً «پایین»، «متوسط»، «بالا»، و غیره) را مشخص کنید که «متوسط» زیروبمی پیش‌فرض است.
نیم‌پرده‌ها افزایش یا کاهش زیروبمی به اندازه «N» نیم‌پرده بااستفاده از «+Nst» یا «-Nst» به‌ترتیب. توجه داشته باشید که «+/-» و «st» الزامی است.
درصد بااستفاده از «+N%» یا «-N%»، زیروبمی را به‌ترتیب «N» درصد افزایش یا کاهش دهید. توجه داشته باشید که «٪» الزامی است اما «+/-» اختیاری است.

برای کسب اطلاعات بیشتر درباره عنصر prosody، به مشخصات W3 مراجعه کنید.

مثال

مثال زیر از عنصر <prosody> برای صحبت کردن آهسته با ۲ نیم‌پرده پایین‌تر از حد معمول استفاده می‌کند:

<prosody rate="slow" pitch="-2st">Can you hear me now?</prosody>

<emphasis>

برای افزودن یا برداشتن تأکید از نوشتار موجود در عنصر استفاده می‌شود. عنصر <emphasis> گفتار را مشابه <prosody> تغییر می‌دهد، اما بدون نیاز به تنظیم مشخصه‌های گفتار فردی.

این عنصر از مشخصه اختیاری «سطح» با مقادیر معتبر زیر پشتیبانی می‌کند:

  • strong
  • moderate
  • none
  • reduced

برای کسب اطلاعات بیشتر درباره عنصر emphasis، به مشخصات W3 مراجعه کنید.

مثال

مثال زیر از عنصر <emphasis> برای اعلام استفاده می‌کند:

<emphasis level="moderate">This is an important announcement</emphasis>

<par>

یک محفظه رسانه موازی که به شما امکان می‌دهد چندین عنصر رسانه را به‌طور هم‌زمان پخش کنید. تنها محتوای مجاز مجموعه‌ای از یک یا چند عنصر <par>، <seq>، و <media> است. ترتیب عناصر <media> مهم نیست.

مگر اینکه عنصر فرزند زمان شروع متفاوتی را مشخص کند، زمان شروع ضمنی برای عنصر همانند زمان شروع محتوی <par> است. اگر عنصر فرزند مقدار جابه‌جایی برای مشخصه begin یا end خود داشته باشد، جابه‌جایی عنصر نسبت به زمان شروع محفظه <par> خواهد بود. برای عنصر ریشه <par>، مشخصه begin نادیده گرفته می‌شود و زمان شروع زمانی است که فرایند ترکیب گفتار SSML شروع به تولید برونداد برای عنصر ریشه <par> می‌کند (یعنی درواقع زمان «صفر»).

مثال

<speak>
  <par>
    <media xml:id="question" begin="0.5s">
      <speak>Who invented the Internet?</speak>
    </media>
    <media xml:id="answer" begin="question.end+2.0s">
      <speak>The Internet was invented by cats.</speak>
    </media>
    <media begin="answer.end-0.2s" soundLevel="-6dB">
      <audio
        src="https://actions.google.com/.../cartoon_boing.ogg"/>
    </media>
    <media repeatCount="3" soundLevel="+2.28dB"
      fadeInDur="2s" fadeOutDur="0.2s">
      <audio
        src="https://actions.google.com/.../cat_purr_close.ogg"/>
    </media>
  </par>
</speak>

<seq>

یک محتوی رسانه متوالی که به شما امکان می‌دهد عناصر رسانه را یکی پس‌از دیگری پخش کنید. تنها محتوای مجاز مجموعه‌ای از یک یا چند عنصر <seq>، <par>، و <media> است. ترتیب عناصر رسانه همان ترتیبی است که در آن نمایش داده می‌شوند.

مشخصه‌های begin و end عناصر فرزند را می‌توان روی مقادیر افست تنظیم کرد (به مشخصات زمان در زیر مراجعه کنید). مقادیر جابه‌جایی آن عناصر فرزند نسبت‌به پایان عنصر قبلی در توالی یا، درمورد اولین عنصر در توالی، نسبت‌به شروع محتوی <seq> آن خواهد بود.

مثال

<speak>
  <seq>
    <media begin="0.5s">
      <speak>Who invented the Internet?</speak>
    </media>
    <media begin="2.0s">
      <speak>The Internet was invented by cats.</speak>
    </media>
    <media soundLevel="-6dB">
      <audio
        src="https://actions.google.com/.../cartoon_boing.ogg"/>
    </media>
    <media repeatCount="3" soundLevel="+2.28dB"
      fadeInDur="2s" fadeOutDur="0.2s">
      <audio
        src="https://actions.google.com/.../cat_purr_close.ogg"/>
    </media>
  </seq>
</speak>

<media>

نمایانگر لایه رسانه در عنصر <par> یا <seq> است. محتوای مجاز عنصر <media>، عنصر SSML <speak> یا <audio> است. جدول زیر مشخصه‌های معتبر برای عنصر <media> را شرح می‌دهد.

مشخصه‌ها

مشخصه الزامی پیش‌فرض مقادیر
xml:id no بدون مقدار شناسه XML یکتا برای این عنصر. عناصر برنامه‌نویسی کدبندی‌شده پشتیبانی نمی‌شود. مقادیر شناسه مجاز با عبارت باقاعده "([-_#]|\p{L}|\p{D})+" مطابقت دارد. برای اطلاعات بیشتر، XML-ID را ببینید.
شروع no 0 زمان شروع این محتوی رسانه. اگر این عنصر محفظه رسانه ریشه باشد، نادیده گرفته می‌شود (همانند مقدار پیش‌فرض «0» درنظر گرفته می‌شود). برای مقادیر رشته‌ای معتبر، بخش مشخصات زمان را در زیر ببینید.
پایان no بدون مقدار مشخصه‌ای برای زمان پایان این محتوی رسانه. برای مقادیر رشته‌ای معتبر، بخش مشخصات زمان را در زیر ببینید.
repeatCount no 1 عدد حقیقی که مشخص می‌کند رسانه چند بار درج شود. تکرارهای کسری پشتیبانی نمی‌شود، بنابراین مقدار به نزدیک‌ترین عدد صحیح گرد می‌شود. صفر مقدار معتبری نیست و بنابراین به‌عنوان نامشخص درنظر گرفته می‌شود و در این حالت مقدار پیش‌فرض را دارد.
repeatDur no بدون مقدار TimeDesignation که محدودیتی برای مدت زمان رسانه درج‌شده است. اگر مدت رسانه کمتر از این مقدار باشد، بازپخش در آن زمان به‌پایان می‌رسد.
soundLevel no +0dB سطح صدای صدا را به میزان soundLevel دسی‌بل تنظیم کنید. حداکثر محدوده ۴۰ دسی‌بل +/- است اما محدوده واقعی ممکن است کمتر باشد و کیفیت خروجی ممکن است در کل محدوده نتایج خوبی نداشته باشد.
fadeInDur no ‫۰ ثانیه TimeDesignation که درطول آن رسانه از حالت بی‌صدا به soundLevel اختیاری مشخص‌شده محو می‌شود. اگر مدت رسانه کمتر از این مقدار باشد، محو تدریجی در پایان بازپخش متوقف می‌شود و سطح صدا به سطح صدای مشخص‌شده نمی‌رسد.
fadeOutDur no ‫۰ ثانیه TimeDesignation که درطول آن رسانه از soundLevel اختیاری مشخص‌شده محو می‌شود تا زمانی که بی‌صدا شود. اگر مدت رسانه کمتر از این مقدار باشد، سطح صدا روی مقدار کمتری تنظیم می‌شود تا اطمینان حاصل شود که در پایان بازپخش سکوت برقرار می‌شود.

مشخصات زمان

مشخصات زمانی که برای مقدار مشخصه‌های `begin` و `end` عناصر <media> و محفظه‌های رسانه (عناصر <par> و <seq>) استفاده می‌شود، یا مقدار آفست (مثلاً +2.5s) است یا مقدار syncbase (مثلاً foo_id.end-250ms).

  • مقدار آفست - مقدار آفست زمان یک مقدار SMIL Timecount است که مقادیری را که با عبارت باقاعده مطابقت دارند مجاز می‌کند: "\s\*(+|-)?\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"

    رشته رقم اول بخش کامل عدد اعشاری است و رشته رقم دوم بخش کسری اعشاری است. علامت پیش‌فرض (یعنی «(+|-)?») «+» است. مقادیر واحد به‌ترتیب با ساعت، دقیقه، ثانیه، و میلی‌ثانیه مطابقت دارد. واحد پیش‌فرض «s» (ثانیه) است.

  • مقدار syncbase - مقدار syncbase یک مقدار syncbase در SMIL است که مقادیر منطبق با عبارت باقاعده را مجاز می‌کند: "([-_#]|\p{L}|\p{D})+\.(begin|end)\s\*(+|-)\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"

    رقم‌ها و واحدها به همان روش مقدار جابه‌جایی تفسیر می‌شوند.

شبیه‌ساز نوشتار به گفتار

کنسول Actions شامل شبیه‌ساز تبدیل نوشتار به گفتار است که می‌توانید از آن برای آزمایش SSML با هریک از عناصر بالا استفاده کنید. می‌توانید شبیه‌ساز «تبدیل نوشتار به گفتار» را در کنسول در بخش شبیه‌ساز > صدا پیدا کنید. نوشتار و SSML خود را در شبیه‌ساز تایپ کنید و روی به‌روزرسانی و گوش دادن کلیک کنید تا خروجی «نوشتار به گفتار» را بشنوید.

همچنین می‌توانید روی دکمه بارگیری کلیک کنید تا فایل .mp3 برونداد نوشتار به گفتار را ذخیره کنید.