SSML (Dialogflow)

Google Assistant-এ উত্তর দেওয়ার সময়, আপনি উত্তরের মধ্যে স্পিচ সিন্থেসিস মার্কআপ ল্যাঙ্গুয়েজের (SSML) সাবসেট ব্যবহার করতে পারবেন। SSML ব্যবহার করে, আপনি নিজের কথোপকথনের উত্তরকে আরও স্বাভাবিক বক্তব্যের মতো করে তুলতে পারেন। নিচে SSML মার্কআপের উদাহরণ এবং Google Assistant কীভাবে এটি পড়ে তা দেখানো হয়েছে।

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 কাজ করে, কিন্তু Dialogflow সিমুলেটরে কাজ করে না।

SSML-এ URL

SSML রেসপন্স সংজ্ঞায়িত করার সময়, যাতে শুধু URL অন্তর্ভুক্ত থাকে, সেই URL-এ অ্যামপারস্যান্ড XML ফর্ম্যাটিংয়ের কারণে সমস্যা সৃষ্টি করতে পারে। URL সঠিকভাবে রেফারেন্স করা হয়েছে কিনা তা নিশ্চিত করতে, &-এর ইনস্ট্যান্স &amp; দিয়ে পরিবর্তন করুন।

আপনার SSML উত্তরে শুধুমাত্র URL থাকলেও, Actions on Google-এর জন্য উত্তরের ডিসপ্লে টেক্সট প্রয়োজন। <audio> ট্যাগের মধ্যে থাকা টেক্সট Assistant বলবে না, তাই এই প্রয়োজনীয়তা পূরণ করতে আপনি <audio> ট্যাগে ফিলার টেক্সট বা সংক্ষিপ্ত বিবরণ যোগ করতে পারেন। অডিও চালানোর পরে Assistant <audio> ট্যাগের মধ্যে থাকা টেক্সট বলবে না এবং আপনার SSML-এর ডিসপ্লে টেক্সট ভার্সনের জন্য Action on Google-এর প্রয়োজনীয়তা পূরণ করে।

সমস্যাযুক্ত 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

সেকেন্ড বা মিলিসেকেন্ডে বিরতির দৈর্ঘ্য সেট করে (যেমন, "3s" বা "250ms")।

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 আছে, যা নির্ধারণ করে যে ভ্যালু কীভাবে বলা হবে। নির্দিষ্ট interpret-as ভ্যালুর উপর নির্ভর করে ঐচ্ছিক অ্যাট্রিবিউট format এবং detail ব্যবহার করা হতে পারে।

উদাহরণ

interpret-as অ্যাট্রিবিউটে নিম্নলিখিত ভ্যালু কাজ করে:

  • currency

    নিচের উদাহরণটি "বিয়াল্লিশ ডলার এবং এক সেন্ট" হিসেবে বলা হয়েছে। ভাষার অ্যাট্রিবিউট বাদ দেওয়া হলে, এটি বর্তমান লোকেল ব্যবহার করে।

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

    W3C SSML 1.0 say-as অ্যাট্রিবিউট ভ্যালু WG নোট থেকে interpret-as='telephone'-এর বিবরণ দেখুন।

    নিম্নলিখিত উদাহরণটি "এক আট শূন্য শূন্য দুই শূন্য দুই এক দুই এক দুই" হিসেবে বলা হয়েছে। "google:style" অ্যাট্রিবিউট বাদ দেওয়া হলে, এটি শূন্যকে O অক্ষর হিসেবে উচ্চারণ করে।

    "google:style='zero-as-zero'" অ্যাট্রিবিউট বর্তমানে শুধুমাত্র EN লোকেলে কাজ করে।

          <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'-এর জন্য শুধু দিনের ফিল্ড এবং মাস বা বছরের ফিল্ডের মধ্যে যেকোনও একটি পূরণ করতে হবে, যদিও দুটিই দেওয়া যেতে পারে। তিনটি ফিল্ডের মধ্যে সবকটি না দেওয়া হলে এটি ডিফল্ট হিসেবে সেট করা হয়। এটি "{year} সালের {month} মাসের {ordinal day}" হিসেবে বলা হয়।

    নিচের উদাহরণটি "দশই সেপ্টেম্বর, উনিশশো ষাট" হিসেবে বলা হয়েছে:

    <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

    নিম্নলিখিত উদাহরণটি "বারো হাজার তিনশ পঁয়তাল্লিশ" (মার্কিন যুক্তরাষ্ট্রের ইংরেজি) বা "বারো হাজার তিনশ এবং পঁয়তাল্লিশ (যুক্তরাজ্যের ইংরেজি)" হিসেবে বলা হয়:

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

    নিচের উদাহরণটি "প্রথম" হিসেবে বলা হয়েছে:

    <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

    নিচের উদাহরণটি "দুপুর দুটো বেজে তিরিশ মিনিট" হিসেবে বলা হয়:

    <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 না 0 একটি TimeDesignation যা অডিও সোর্সের শুরু থেকে প্লেব্যাক শুরু করার অফসেট। এই ভ্যালু অডিও সোর্সের আসল সময়সীমার থেকে বেশি বা সমান হলে, কোনও অডিও যোগ করা হয় না।
clipEnd না অনন্ত একটি TimeDesignation যা অডিও সোর্সের শুরু থেকে প্লেব্যাক শেষ করার অফসেট। অডিও সোর্সের আসল সময়সীমা এই মানের চেয়ে কম হলে, সেই সময়ে প্লেব্যাক শেষ হয়ে যায়। clipBegin, clipEnd-এর থেকে বড় বা সমান হলে, কোনও অডিও যোগ করা হয় না।
speed না ১০০% সাধারণ ইনপুট রেটের তুলনায় আউটপুট প্লেব্যাক রেটের অনুপাত শতাংশ হিসেবে দেখানো হয়েছে। ফর্ম্যাটটি হল একটি ধনাত্মক বাস্তব সংখ্যা যার পরে % থাকে। বর্তমানে সমর্থিত রেঞ্জ হল [৫০% (ধীর - অর্ধেক গতি), ২০০% (দ্রুত - দ্বিগুণ গতি)]। এই রেঞ্জের বাইরে থাকা ভ্যালু রেঞ্জের মধ্যে আনার জন্য অ্যাডজাস্ট করা হতে পারে (বা নাও হতে পারে)।
repeatCount না ১, অথবা repeatDur সেট করা থাকলে ১০ একটি বাস্তব সংখ্যা যা অডিওটি কতবার যোগ করতে হবে তা নির্দিষ্ট করে (clipBegin এবং/অথবা clipEnd দ্বারা ক্লিপ করার পরে, যদি থাকে)। ভগ্নাংশ পুনরাবৃত্তি সমর্থিত নয়, তাই মানটি নিকটতম পূর্ণসংখ্যায় রাউন্ড করা হবে। শূন্য কোনও সঠিক ভ্যালু নয় এবং তাই এটিকে নির্দিষ্ট করা হয়নি বলে ধরা হয় এবং সেই ক্ষেত্রে ডিফল্ট ভ্যালু থাকে।
repeatDur না অনন্ত একটি TimeDesignation যা clipBegin, clipEnd, repeatCount এবং speed অ্যাট্রিবিউটের জন্য সোর্স প্রসেস করার পরে যোগ করা অডিওর সময়সীমার উপর একটি সীমা (সাধারণ প্লেব্যাকের সময়সীমার পরিবর্তে)। প্রসেস করা অডিওর সময়সীমা এই মানের চেয়ে কম হলে, সেই সময়ে প্লেব্যাক শেষ হয়ে যায়।
soundLevel না +০dB অডিওর সাউন্ড লেভেল soundLevelডেসিবেল অ্যাডজাস্ট করুন। সর্বাধিক রেঞ্জ হল +/-৪০dB, তবে প্রকৃত রেঞ্জ কার্যকরভাবে কম হতে পারে এবং আউটপুট কোয়ালিটি সম্পূর্ণ রেঞ্জ জুড়ে ভাল ফলাফল নাও দিতে পারে।

বর্তমানে অডিওর জন্য নিম্নলিখিত সেটিংস কাজ করে:

  • ফর্ম্যাট: MP3 (MPEG v2)
    • প্রতি সেকেন্ডে ২৪ হাজার স্যাম্পেল
    • ২৪K ~ ৯৬K বিট প্রতি সেকেন্ডে, নির্দিষ্ট রেট
  • ফর্ম্যাট: Ogg-এ Opus
    • প্রতি সেকেন্ডে ২৪ হাজার স্যাম্পেল (সুপার-ওয়াইডব্যান্ড)
    • ২৪K - ৯৬K বিট প্রতি সেকেন্ড, নির্দিষ্ট রেট
  • ফর্ম্যাট (বন্ধ করা হয়েছে): WAV (RIFF)
    • PCM ১৬-বিট সাইন করা, লিটল এন্ডিয়ান
    • প্রতি সেকেন্ডে ২৪ হাজার স্যাম্পেল
  • সব ফর্ম্যাটের জন্য:
    • সিঙ্গেল চ্যানেল থাকলে ভালো হয়, তবে স্টেরিও গ্রহণযোগ্য।
    • সর্বাধিক ২৪০ সেকেন্ডের হতে হবে। আপনি যদি আরও দীর্ঘ সময় ধরে অডিও চালাতে চান, তাহলে মিডিয়া রেসপন্স প্রয়োগ করার কথা বিবেচনা করুন।
    • ফাইলের সাইজ ৫ মেগাবাইটের বেশি হলে চলবে না।
    • সোর্স URL-এ অবশ্যই HTTPS প্রোটোকল ব্যবহার করতে হবে।
    • অডিও ফেচ করার সময় আমাদের UserAgent হল "Google-Speech-Actions"।

<audio> এলিমেন্টের কন্টেন্ট ঐচ্ছিক এবং অডিও ফাইল চালানো না গেলে বা আউটপুট ডিভাইসে অডিও কাজ না করলে এটি ব্যবহার করা হয়। কন্টেন্টে <desc> এলিমেন্ট থাকতে পারে, সেক্ষেত্রে ওই এলিমেন্টের টেক্সট কন্টেন্ট দেখানোর জন্য ব্যবহার করা হয়। আরও তথ্যের জন্য, উত্তর চেকলিস্ট-এর রেকর্ড করা অডিও বিভাগ দেখুন।

src URL-টি অবশ্যই একটি https URL হতে হবে (Google Cloud Storage আপনার অডিও ফাইলগুলি একটি https URL-এ হোস্ট করতে পারে)।

মিডিয়া রেসপন্স সম্পর্কে আরও জানতে, রেসপন্স গাইডের মিডিয়া রেসপন্স বিভাগ দেখুন।

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>

এটি নির্দেশ করে যে, উচ্চারণের জন্য উপনাম অ্যাট্রিবিউট ভ্যালুর টেক্সট, অন্তর্ভুক্ত টেক্সটকে প্রতিস্থাপন করে।

এছাড়াও, আপনি 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

প্রতিটি চিহ্নের জন্য স্ট্রিং আইডি।

Option বিবরণ
আত্মীয় একটি আপেক্ষিক ভ্যালু (যেমন, "কম", "মাঝারি", "বেশি" ইত্যাদি) উল্লেখ করুন যেখানে "মাঝারি" হল ডিফল্ট পিচ।
সেমিটোন "+Nst" বা "-Nst" ব্যবহার করে পিচ "N" সেমিটোন বাড়ান বা কমান। মনে রাখবেন, "+/-" এবং "st" প্রয়োজন।
শতাংশ "+N%" বা "-N%" ব্যবহার করে পিচ "N" শতাংশ বাড়ান বা কমান। মনে রাখবেন, "%" প্রয়োজন কিন্তু "+/-" ঐচ্ছিক।

prosody এলিমেন্ট সম্পর্কে আরও জানতে, W3 স্পেসিফিকেশন দেখুন।

উদাহরণ

নিম্নলিখিত উদাহরণে <prosody> এলিমেন্ট ব্যবহার করে স্বাভাবিকের চেয়ে ২ সেমিটোন কম পিচে ধীরে ধীরে বলা হয়:

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

<emphasis>

এলিমেন্টে থাকা টেক্সটে জোর দিতে বা জোর কমাতে ব্যবহার করা হয়। <emphasis> এলিমেন্ট <prosody>-এর মতোই স্পিচ পরিবর্তন করে, তবে আলাদা আলাদা স্পিচ অ্যাট্রিবিউট সেট করার প্রয়োজন হয় না।

এই এলিমেন্টে ঐচ্ছিক "level" অ্যাট্রিবিউট কাজ করে এবং এর জন্য নিম্নলিখিত ভ্যালুগুলি সঠিক:

  • 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> এলিমেন্টের জন্য, শুরু করার অ্যাট্রিবিউট উপেক্ষা করা হয় এবং শুরুর সময় হল যখন 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> এলিমেন্টের সেট কন্টেন্ট হিসেবে অনুমোদিত। মিডিয়া এলিমেন্ট যে ক্রমে রেন্ডার করা হয়, সেই ক্রমেই তা দেখানো হয়।

চাইল্ড এলিমেন্টের শুরু এবং শেষ অ্যাট্রিবিউট অফসেট ভ্যালুতে সেট করা যেতে পারে (নিচে সময় সংক্রান্ত বিবরণ দেখুন)। সেই চাইল্ড এলিমেন্টের অফসেট ভ্যালু সিকোয়েন্সের পূর্ববর্তী এলিমেন্টের শেষের সাথে অথবা সিকোয়েন্সের প্রথম এলিমেন্টের ক্ষেত্রে, এর <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 না কোনও মান নেই এই এলিমেন্টের জন্য একটি অনন্য XML শনাক্তকারী। এনকোড করা এন্টিটি কাজ করে না। অনুমোদিত শনাক্তকারীর মান রেগুলার এক্সপ্রেশন "([-_#]|\p{L}|\p{D})+"-এর সাথে মেলে। আরও তথ্যের জন্য XML-ID দেখুন।
শুরু না 0 এই মিডিয়া কন্টেনারের শুরুর সময়। এটি রুট মিডিয়া কন্টেনার এলিমেন্ট হলে উপেক্ষা করা হয় ("0" ডিফল্ট হিসেবে বিবেচনা করা হয়)। সঠিক স্ট্রিং ভ্যালুর জন্য নিচে সময় সংক্রান্ত বিবরণ বিভাগ দেখুন।
শেষ না কোনও ভ্যালু নেই এই মিডিয়া কন্টেনারের শেষ হওয়ার সময় সংক্রান্ত স্পেসিফিকেশন। সঠিক স্ট্রিং ভ্যালুর জন্য নিচে সময় সংক্রান্ত বিবরণ বিভাগ দেখুন।
repeatCount না 1 মিডিয়া কতবার যোগ করতে হবে তা নির্দিষ্ট করে একটি বাস্তব সংখ্যা। ভগ্নাংশ পুনরাবৃত্তি কাজ করে না, তাই ভ্যালুটি নিকটতম পূর্ণসংখ্যায় রাউন্ড অফ করা হবে। শূন্য কোনও সঠিক ভ্যালু নয় এবং তাই এটিকে নির্দিষ্ট করা হয়নি বলে ধরা হয় এবং সেই ক্ষেত্রে ডিফল্ট ভ্যালু থাকে।
repeatDur না কোনও ভ্যালু নেই TimeDesignation যা যোগ করা মিডিয়ার সময়সীমার উপর সীমাবদ্ধতা আরোপ করে। মিডিয়ার সময়কাল এই মানের চেয়ে কম হলে, সেই সময়ে প্লেব্যাক শেষ হয়ে যায়।
soundLevel না +০dB অডিওর সাউন্ড লেভেল soundLevel ডেসিবেল অ্যাডজাস্ট করুন। সর্বাধিক রেঞ্জ হল +/-৪০dB, তবে প্রকৃত রেঞ্জ কার্যকরভাবে কম হতে পারে এবং আউটপুট কোয়ালিটি সম্পূর্ণ রেঞ্জ জুড়ে ভাল ফলাফল নাও দিতে পারে।
fadeInDur না ০সেকেন্ড একটি TimeDesignation যার মাধ্যমে মিডিয়া সাইলেন্ট থেকে ঐচ্ছিকভাবে নির্দিষ্ট করা soundLevel-এ ফেড-ইন হবে। মিডিয়ার সময়সীমা এই মানের থেকে কম হলে, প্লেব্যাকের শেষে ফেড ইন বন্ধ হয়ে যাবে এবং সাউন্ড লেভেল নির্দিষ্ট সাউন্ড লেভেলে পৌঁছাবে না।
fadeOutDur না ০সেকেন্ড TimeDesignation-এর মধ্যে মিডিয়া ঐচ্ছিকভাবে নির্দিষ্ট করা soundLevel থেকে সাইলেন্ট না হওয়া পর্যন্ত ফেড আউট হবে। মিডিয়ার সময়কাল এই ভ্যালুর চেয়ে কম হলে, প্লেব্যাক শেষ হওয়ার সময় যাতে কোনও আওয়াজ না হয় তা নিশ্চিত করতে সাউন্ড লেভেল কম ভ্যালুতে সেট করা হয়।

সময় সংক্রান্ত স্পেসিফিকেশন

<media> এলিমেন্ট ও মিডিয়া কন্টেনারের (<par> ও <seq> এলিমেন্ট) `begin` ও `end` অ্যাট্রিবিউটের ভ্যালুর জন্য ব্যবহৃত সময় সংক্রান্ত স্পেসিফিকেশন হয় অফসেট ভ্যালু (যেমন, +2.5s) অথবা সিঙ্কবেস ভ্যালু (যেমন, foo_id.end-250ms)।

  • অফসেট ভ্যালু - টাইম অফসেট ভ্যালু হল SMIL টাইমকাউন্ট-ভ্যালু যা রেগুলার এক্সপ্রেশনের সাথে মেলে এমন ভ্যালুর অনুমতি দেয়: "\s\*(+|-)?\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"

    প্রথম ডিজিট স্ট্রিং হল দশমিক সংখ্যার পূর্ণ অংশ এবং দ্বিতীয় ডিজিট স্ট্রিং হল দশমিক ভগ্নাংশ। ডিফল্ট চিহ্ন (যেমন, "(+|-)?") হল "+"। ইউনিট ভ্যালু যথাক্রমে ঘণ্টা, মিনিট, সেকেন্ড ও মিলিসেকেন্ডের সাথে সম্পর্কিত। ইউনিটের জন্য ডিফল্ট হল "s" (সেকেন্ড)।

  • সিঙ্কবেস ভ্যালু - সিঙ্কবেস ভ্যালু হল SMIL সিঙ্কবেস-ভ্যালু যা রেগুলার এক্সপ্রেশনের সাথে ম্যাচ করা ভ্যালুর অনুমতি দেয়: "([-_#]|\p{L}|\p{D})+\.(begin|end)\s\*(+|-)\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"

    অফসেট ভ্যালুর মতোই সংখ্যা ও ইউনিট ব্যাখ্যা করা হয়।

TTS সিমুলেটর

Actions কনসোলে একটি TTS সিমুলেটর অন্তর্ভুক্ত থাকে যা আপনি উপরের যেকোনও এলিমেন্টের সাথে SSML পরীক্ষা করতে ব্যবহার করতে পারেন। আপনি কনসোলে সিমুলেটর > অডিও বিকল্পের মধ্যে TTS সিমুলেটর খুঁজে পাবেন। সিমুলেটরে আপনার টেক্সট ও SSML টাইপ করুন এবং TTS আউটপুট শুনতে আপডেট করুন ও শুনুন বিকল্পে ক্লিক করুন।

এছাড়াও, আপনার TTS আউটপুটের .mp3 ফাইল সেভ করতে, আপনি ডাউনলোড বোতামে ক্লিক করতে পারেন।