browser.ttsEngine

বিবরণ

এক্সটেনশন ব্যবহার করে টেক্সট-টু-স্পিচ(TTS) ইঞ্জিন প্রয়োগ করতে chrome.ttsEngine API ব্যবহার করুন। আপনার এক্সটেনশন এই API ব্যবহার করে রেজিস্টার করলে, কোনও এক্সটেনশন বা Chrome অ্যাপ স্পিচ জেনারেট করার জন্য tts API ব্যবহার করলে, এটি উচ্চারণ করার জন্য একটি উচ্চারণ এবং অন্যান্য প্যারামিটার সহ ইভেন্ট পাবে। আপনার এক্সটেনশন তখন স্পিচ সিন্থেসাইজ ও আউটপুট করতে এবং স্ট্যাটাস রিপোর্ট করার জন্য কলিং ফাংশনে ইভেন্ট ফেরত পাঠাতে উপলভ্য যেকোনও ওয়েব প্রযুক্তি ব্যবহার করতে পারে।

অনুমতি

ttsEngine

ধারণা ও ব্যবহার

কোনও এক্সটেনশন নিজেকে স্পিচ ইঞ্জিন হিসেবে রেজিস্টার করতে পারে। এটি করার মাধ্যমে, এটি tts.speak() এবং tts.stop()-এর মতো ফাংশনে কিছু বা সব কল ইন্টারসেপ্ট করতে পারে এবং একটি বিকল্প ইমপ্লিমেন্টেশন প্রদান করতে পারে। এক্সটেনশনগুলি স্পিচ প্রদান করার জন্য যেকোনও উপলভ্য ওয়েব প্রযুক্তি ব্যবহার করতে পারে, যার মধ্যে সার্ভার থেকে অডিও স্ট্রিমিং, HTML5 অডিও অন্তর্ভুক্ত। এমনকি কোনও এক্সটেনশন উচ্চারণের সাথে অন্য কিছু করতে পারে, যেমন পপ-আপে ক্লোজড ক্যাপশন দেখানো বা রিমোট সার্ভারে লগ মেসেজ হিসেবে পাঠানো।

TTS ইঞ্জিন প্রয়োগ করতে, এক্সটেনশনকে অবশ্যই "ttsEngine" অনুমতি ঘোষণা করতে হবে এবং তারপরে এক্সটেনশন ম্যানিফেস্টে এটি প্রদান করে এমন সব ভয়েস ঘোষণা করতে হবে, যেমন:

{
  "name": "My TTS Engine",
  "version": "1.0",
  "permissions": ["ttsEngine"],
  "tts_engine": {
    "voices": [
      {
        "voice_name": "Alice",
        "lang": "en-US",
        "event_types": ["start", "marker", "end"]
      },
      {
        "voice_name": "Pat",
        "lang": "en-US",
        "event_types": ["end"]
      }
    ]
  },
  "background": {
    "page": "background.html",
    "persistent": false
  }
}

একটি এক্সটেনশন যেকোনও সংখ্যক ভয়েস নির্দিষ্ট করতে পারে।

voice_name প্যারামিটারটি প্রয়োজন। নামটি যথেষ্ট বর্ণনামূলক হতে হবে যাতে এটি ভয়েসের নাম এবং ব্যবহৃত ইঞ্জিন শনাক্ত করে। একই নামে দুটি এক্সটেনশন ভয়েস রেজিস্টার করলে, ক্লায়েন্ট সেই এক্সটেনশনের আইডি উল্লেখ করতে পারে যা সিন্থেসিস করবে।

lang প্যারামিটারটি ঐচ্ছিক, তবে এটি ব্যবহার করার জন্য বিশেষভাবে সাজেস্ট করা হয়। সাধারণত, একটি ভয়েস শুধুমাত্র একটি ভাষাতেই স্পিচ সিন্থেসাইজ করতে পারে। কোনও ইঞ্জিন একাধিক ভাষা সাপোর্ট করলে, সেটি সহজেই প্রতিটি ভাষার জন্য আলাদা ভয়েস রেজিস্টার করতে পারে। খুব কম ক্ষেত্রে যেখানে একটি ভয়েস একাধিক ভাষা ম্যানেজ করতে পারে, সেখানে দুটি আলাদা ভয়েস তালিকাভুক্ত করা এবং ইন্টার্নালি একই লজিক ব্যবহার করে সেগুলি ম্যানেজ করা সবচেয়ে সহজ। তবে, আপনি যদি এমন একটি ভয়েস তৈরি করতে চান যা যেকোনও ভাষায় উচ্চারণ হ্যান্ডেল করবে, তাহলে আপনার এক্সটেনশনের ম্যানিফেস্ট থেকে lang প্যারামিটারটি বাদ দিন।

সবশেষে, স্পিচ সিন্থেসিসের প্রোগ্রেস সম্পর্কে ক্লায়েন্টকে আপডেট করার জন্য ইঞ্জিন ইভেন্ট পাঠাতে পারলে, event_types প্যারামিটার প্রয়োজন হয়। কমপক্ষে, স্পিচ কখন শেষ হচ্ছে তা নির্দেশ করার জন্য 'end' ইভেন্টের ধরনকে সমর্থন করার জন্য অত্যন্ত সুপারিশ করা হয়, অন্যথায় Chrome সারিবদ্ধ উচ্চারণ শিডিউল করতে পারে না।

লোড হয়ে গেলে, এক্সটেনশন browser.ttsEngine.updateVoices-এ কল করে ঘোষিত ভয়েসের তালিকা পরিবর্তন করতে পারে। (মনে রাখবেন যে updateVoices-এ প্রোগ্রাম্যাটিক কলে ব্যবহৃত প্যারামিটারগুলি ক্যামেল কেসে থাকে: যেমন, voiceName, ম্যানিফেস্ট ফাইলের মতো নয় যা voice_name ব্যবহার করে।)

আপনি যেসব সম্ভাব্য ইভেন্টের ধরন পাঠাতে পারেন সেগুলি speak() মেথডের রিসিভ করা ইভেন্টের ধরনের সাথে সম্পর্কিত:

  • 'start': ইঞ্জিন উচ্চারণ বলা শুরু করেছে।
  • 'word': শব্দের সীমানায় পৌঁছে গেছে। বর্তমান স্পিচ পজিশন নির্ধারণ করতে event.charIndex ব্যবহার করুন।
  • 'sentence': বাক্যের সীমায় পৌঁছে গেছে। বর্তমান স্পিচ পজিশন নির্ধারণ করতে event.charIndex ব্যবহার করুন।
  • 'marker': SSML মার্কার পাওয়া গেছে। বর্তমান স্পিচ পজিশন নির্ধারণ করতে event.charIndex ব্যবহার করুন।
  • 'end': ইঞ্জিন উচ্চারণ বলা শেষ করেছে।
  • 'error': ইঞ্জিন-নির্দিষ্ট সমস্যা হয়েছে এবং এই উচ্চারণটি বলা যাবে না। event.errorMessage-এ আরও তথ্য পাস করুন।

'interrupted' এবং 'cancelled' ইভেন্ট স্পিচ ইঞ্জিন থেকে পাঠানো হয় না; এগুলি Chrome অটোমেটিক তৈরি করে।

টেক্সট-টু-স্পিচ ক্লায়েন্টরা আপনার এক্সটেনশনের ম্যানিফেস্ট থেকে ভয়েস সংক্রান্ত তথ্য পেতে পারেন tts.getVoices-এ কল করে, ধরে নেওয়া হচ্ছে যে আপনি নিচে বর্ণনা করা অনুযায়ী স্পিচ ইভেন্ট লিসেনার রেজিস্টার করেছেন।

স্পিচ ইভেন্ট ম্যানেজ করা

ক্লায়েন্টের অনুরোধে স্পিচ জেনারেট করতে, আপনার এক্সটেনশনকে অবশ্যই onSpeak এবং onStop, দুটির জন্যই লিসেনার রেজিস্টার করতে হবে, যেমন:

const speakListener = (utterance, options, sendTtsEvent) => {
  sendTtsEvent({type: 'start', charIndex: 0})

  // (start speaking)

  sendTtsEvent({type: 'end', charIndex: utterance.length})
};

const stopListener = () => {
  // (stop all speech)
};

browser.ttsEngine.onSpeak.addListener(speakListener);
browser.ttsEngine.onStop.addListener(stopListener);

কোনও স্পিচ অনুরোধ এক্সটেনশনে পাঠানো হবে কিনা তা সম্পূর্ণভাবে নির্ভর করে এক্সটেনশনটি তার ম্যানিফেস্টে প্রদত্ত ভয়েস প্যারামিটারগুলি সমর্থন করে কিনা এবং onSpeak ও onStop-এর জন্য রেজিস্টার করা শ্রোতা আছে কিনা তার উপর। অন্যভাবে বলতে গেলে, কোনও এক্সটেনশনের পক্ষে স্পিচ অনুরোধ গ্রহণ করা এবং সেটি ম্যানেজ করা হবে কিনা তা ডাইনামিকভাবে সিদ্ধান্ত নেওয়ার কোনও উপায় নেই।

ধরন

AudioBuffer

Chrome 92+ browser.* Chrome 148 থেকে

অডিও বাফার এবং সংশ্লিষ্ট ডেটা সহ প্যারামিটার।

প্রপার্টি

  • audioBuffer

    ArrayBuffer

    টেক্সট-টু-স্পিচ ইঞ্জিন থেকে অডিও বাফার। এটির দৈর্ঘ্য ঠিক audioStreamOptions.bufferSize হতে হবে এবং audioStreamOptions.sampleRate-এ মোনো হিসেবে এবং লিনিয়ার pcm, ৩২-বিট সাইনড ফ্লোট অর্থাৎ জাভাস্ক্রিপ্টে Float32Array টাইপ হিসেবে এনকোড করা হতে হবে।

  • charIndex

    নম্বর ঐচ্ছিক

    এই অডিও বাফারের সাথে যুক্ত ক্যারেক্টার ইন্ডেক্স।

  • isLastBuffer

    বুলিয়ান ঐচ্ছিক

    এই অডিও বাফারটি টেক্সট বলার জন্য শেষ হলে ট্রু।

AudioStreamOptions

Chrome 92+ browser.* Chrome 148 থেকে

ইঞ্জিন থেকে যে অডিও স্ট্রিম ফর্ম্যাট তৈরি হবে বলে আশা করা হচ্ছে তা অন্তর্ভুক্ত করে।

প্রপার্টি

  • bufferSize

    নম্বর

    অডিও বাফারে স্যাম্পেলের সংখ্যা।

  • sampleRate

    নম্বর

    অডিও বাফারে প্রত্যাশিত স্যাম্পেল রেট।

LanguageInstallStatus

Chrome 132+ Chrome 148 থেকে browser.*

ভয়েসের ইনস্টলেশন স্ট্যাটাস।

Enum

"notInstalled"

"ইনস্টল করা হচ্ছে"

"ইনস্টল করা হয়েছে"

"ব্যর্থ হয়েছে"

LanguageStatus

Chrome 132+ Chrome 148 থেকে browser.*

কোনও ভাষার ইনস্টল স্ট্যাটাস।

প্রপার্টি

  • সমস্যা

    স্ট্রিং ঐচ্ছিক

    ইনস্টল না হওয়ার কারণ সম্পর্কে বিস্তারিত বিবরণ। ভাষা ইনস্টল করা না গেলে, বিকল্প হিসেবে এটি দেখানো হয়।

  • installStatus

    ইনস্টলেশন স্ট্যাটাস।

  • lang

    স্ট্রিং

    ভাষা কোড-অঞ্চল কোড ফর্ম্যাটে ভাষার স্ট্রিং, যেখানে অঞ্চল বাদ দেওয়া হতে পারে। উদাহরণ হল en, en-AU, zh-CH.

LanguageUninstallOptions

Chrome 132+ Chrome 148 থেকে browser.*

প্রদত্ত ভাষা আনইনস্টল করার বিকল্প।

প্রপার্টি

  • uninstallImmediately

    বুলিয়ান

    TTS ক্লায়েন্ট যদি ভাষাটি অবিলম্বে আনইনস্টল করতে চায়, তাহলে সত্য। এই প্যারামিটার এবং অনুরোধকারীর তথ্যের উপর ভিত্তি করে, ইঞ্জিন ভাষাটি আনইনস্টল করবে কিনা বা কখন করবে তা বেছে নিতে পারে। মিথ্যা হলে, এটি কখন আনইনস্টল করতে হবে তা নির্ধারণ করতে অন্যান্য মানদণ্ড ব্যবহার করতে পারে, যেমন সাম্প্রতিক ব্যবহার।

SpeakOptions

Chrome 92+ browser.* Chrome 148 থেকে

tts.speak() পদ্ধতিতে নির্দিষ্ট করা বিকল্প।

প্রপার্টি

  • লিঙ্গগত পরিচয়

    VoiceGender ঐচ্ছিক

    Chrome 92 থেকে বন্ধ করা হয়েছে

    লিঙ্গগত পরিচয় সংক্রান্ত তথ্য বন্ধ করা হয়েছে এবং তা উপেক্ষা করা হবে।

    সিন্থেসাইজ করা স্পিচের জন্য ভয়েসের লিঙ্গগত পরিচয়।

  • lang

    স্ট্রিং ঐচ্ছিক

    সিন্থেসিসের জন্য ব্যবহার করা ভাষা, ভাষা-অঞ্চল ফর্ম্যাটে। যেমন: 'en', 'en-US', 'en-GB', 'zh-CN'।

  • পিচ

    নম্বর ঐচ্ছিক

    কথা বলার পিচ ০ থেকে ২-এর মধ্যে হতে হবে, যেখানে ০ হল সবচেয়ে কম এবং ২ হল সবচেয়ে বেশি। ১.০ এই ভয়েসের ডিফল্ট পিচের সাথে সম্পর্কিত।

  • রেট

    নম্বর ঐচ্ছিক

    এই ভয়েসের জন্য ডিফল্ট রেটের তুলনায় কথা বলার রেট। ১.০ হল ডিফল্ট রেট, সাধারণত প্রতি মিনিটে ১৮০ থেকে ২২০টি শব্দ। ২.০ হল দ্বিগুণ দ্রুত এবং ০.৫ হল অর্ধেক দ্রুত। এই ভ্যালু ০.১ থেকে ১০.০-এর মধ্যে থাকবে, এই দুটি ধরে। কোনও ভয়েস এই সম্পূর্ণ রেঞ্জের রেট সাপোর্ট না করলে, কোনও সমস্যা দেখাবেন না। পরিবর্তে, ভয়েস যে রেঞ্জ সাপোর্ট করে সেই রেঞ্জে রেট ক্লিপ করুন।

  • voiceName

    স্ট্রিং ঐচ্ছিক

    সংশ্লেষণের জন্য ব্যবহার করার জন্য ভয়েসের নাম।

  • ভলিউম

    নম্বর ঐচ্ছিক

    কথা বলার ভলিউম ০ থেকে ১-এর মধ্যে, যেখানে ০ হল সর্বনিম্ন এবং ১ হল সর্বোচ্চ, ডিফল্ট ভলিউম ১.০।

TtsClient

Chrome 131+ Chrome 148 থেকে browser.*

স্ট্যাটাসের অনুরোধ করা ক্লায়েন্টের শনাক্তকারী।

প্রপার্টি

  • id

    স্ট্রিং

    ক্লায়েন্ট ভাষা ম্যানেজমেন্টের অনুরোধ করছে। এক্সটেনশনের ক্ষেত্রে, এটি হল অনন্য এক্সটেনশন আইডি। Chrome ফিচারের ক্ষেত্রে, এটি হল ফিচারের মানুষের-পঠনযোগ্য নাম।

  • সোর্স

    অনুরোধকারীর ধরন।

TtsClientSource

Chrome 131+ Chrome 148 থেকে browser.*

অনুরোধকারীর ধরন।

Enum

"chromefeature"

"এক্সটেনশন"

VoiceGender

Chrome 54+ Chrome 148 থেকে browser.* Chrome 70 থেকে বন্ধ করা হয়েছে

লিঙ্গগত পরিচয় সংক্রান্ত তথ্য বন্ধ করা হয়েছে এবং তা উপেক্ষা করা হবে।

Enum

"পুরুষ"

"মহিলা"

পদ্ধতি

updateLanguage()

Chrome 132+ Chrome 148 থেকে browser.*
browser.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

কোনও ভাষা ইনস্টল করার চেষ্টা করা হলে এবং কোনও ভাষা আনইনস্টল করা হলে, কোনও ইঞ্জিন দ্বারা কল করা হয়। এছাড়াও, ক্লায়েন্টের থেকে স্ট্যাটাস সংক্রান্ত অনুরোধের উত্তরে কল করা হয়েছে। কোনও ভয়েস ইনস্টল বা আনইনস্টল করা হলে, ভয়েস রেজিস্টার করার জন্য ইঞ্জিনকে ttsEngine.updateVoices কল করতে হবে।

প্যারামিটারগুলি

  • স্ট্যাটাস

    ভাষা ইনস্টল করার স্ট্যাটাস।

updateVoices()

Chrome 66+ Chrome 148 থেকে browser.*
browser.ttsEngine.updateVoices(
  voices: TtsVoice[],
)
: void

ভয়েসের তালিকা আপডেট করার জন্য কোনও ইঞ্জিন দ্বারা কল করা হয়েছে। এই তালিকা এই এক্সটেনশনের ম্যানিফেস্টে ঘোষিত যেকোনও ভয়েস ওভাররাইড করে।

প্যারামিটারগুলি

  • ভয়েস

    স্পিচ সিন্থেসিসের জন্য উপলভ্য ভয়েসকে উপস্থাপন করে এমন tts.TtsVoice অবজেক্টের অ্যারে।

ইভেন্ট

onInstallLanguageRequest

Chrome 131+ Chrome 148 থেকে browser.*
browser.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

কোনও TTS ক্লায়েন্ট নতুন ভাষা ইনস্টল করার অনুরোধ করলে ফায়ার করা হয়। ইঞ্জিনটি ভাষা ডাউনলোড ও ইনস্টল করার চেষ্টা করবে এবং ফলাফল সহ ttsEngine.updateLanguage কল করবে। সফল হলে, নতুন উপলভ্য ভয়েস রেজিস্টার করার জন্য ইঞ্জিনকে ttsEngine.updateVoices কল করতে হবে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (requestor: TtsClient, lang: string) => void

    • অনুরোধকারী
    • lang

      স্ট্রিং

onLanguageStatusRequest

Chrome 132+ Chrome 148 থেকে browser.*
browser.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

কোনও TTS ক্লায়েন্ট কোনও ভাষার ইনস্টল স্ট্যাটাস সম্পর্কে অনুরোধ করলে ফায়ার করা হয়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (requestor: TtsClient, lang: string) => void

    • অনুরোধকারী
    • lang

      স্ট্রিং

onPause

browser.ttsEngine.onPause.addListener(
  callback: function,
)

ঐচ্ছিক: কোনও ইঞ্জিন পজ ইভেন্ট সাপোর্ট করলে, এটি বর্তমানে বলা হচ্ছে এমন উচ্চারণ পজ করবে, যদি থাকে, যতক্ষণ না এটি একটি রিজিউম ইভেন্ট বা স্টপ ইভেন্ট পায়। মনে রাখবেন, স্টপ ইভেন্ট পজ করা স্ট্যাটাসও মুছে দেবে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    () => void

onResume

browser.ttsEngine.onResume.addListener(
  callback: function,
)

ঐচ্ছিক: কোনও ইঞ্জিন পজ ইভেন্ট সাপোর্ট করলে, সেটি রিজুম ইভেন্টও সাপোর্ট করা উচিত, যাতে বর্তমান উচ্চারণ, যদি থাকে, বলা চালিয়ে যাওয়া যায়। মনে রাখবেন, স্টপ ইভেন্ট পজ করা স্ট্যাটাসও মুছে দেবে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    () => void

onSpeak

browser.ttsEngine.onSpeak.addListener(
  callback: function,
)

ব্যবহারকারী tts.speak() কল করলে এবং এই এক্সটেনশনের ম্যানিফেস্ট থেকে কোনও একটি ভয়েস বিকল্প অবজেক্টের সাথে প্রথমবার ম্যাচ করলে কল করা হয়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (utterance: string, options: SpeakOptions, sendTtsEvent: function) => void

    • উচ্চারণ

      স্ট্রিং

    • বিকল্প
    • sendTtsEvent

      ফাংশন

      sendTtsEvent প্যারামিটারটি দেখতে এইরকম:

      (event: tts.TtsEvent) => void

      • ইভেন্ট

        টেক্সট-টু-স্পিচ ইঞ্জিন থেকে পাওয়া ইভেন্ট যা এই উচ্চারণের স্ট্যাটাস নির্দেশ করে।

onSpeakWithAudioStream

Chrome 92+ browser.* Chrome 148 থেকে
browser.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

ব্যবহারকারী tts.speak() কল করলে এবং এই এক্সটেনশনের ম্যানিফেস্ট থেকে কোনও একটি ভয়েস বিকল্প অবজেক্টের সাথে প্রথমবার ম্যাচ করলে কল করা হয়। ttsEngine.onSpeak-এর থেকে আলাদা কারণ Chrome অডিও প্লেব্যাক পরিষেবা প্রদান করে এবং tts ইভেন্ট ডিসপ্যাচ করা ম্যানেজ করে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (utterance: string, options: SpeakOptions, audioStreamOptions: AudioStreamOptions, sendTtsAudio: function, sendError: function) => void

    • উচ্চারণ

      স্ট্রিং

    • বিকল্প
    • audioStreamOptions
    • sendTtsAudio

      ফাংশন

      sendTtsAudio প্যারামিটারটি দেখতে এইরকম:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

        অডিও বাফার এবং সংশ্লিষ্ট ডেটা সহ প্যারামিটার।

    • sendError

      ফাংশন

      Chrome 94+ Chrome 148 থেকে browser.*

      sendError প্যারামিটারটি দেখতে এইরকম:

      (errorMessage?: string) => void

      • errorMessage

        স্ট্রিং ঐচ্ছিক

        সমস্যার বিবরণ সহ স্ট্রিং।

onStop

browser.ttsEngine.onStop.addListener(
  callback: function,
)

tts.stop-এ কল করা হলে এবং এই এক্সটেনশন হয়ত কথা বলার মাঝখানে থাকলে ফায়ার করা হয়। কোনও এক্সটেনশন onStop-এ কল পেলে এবং স্পিচ আগে থেকেই বন্ধ থাকলে, এটি কিছু করবে না (কোনও সমস্যা দেখাবে না)। স্পিচ পজ করা থাকলে, এটি পজ করা স্ট্যাটাস বাতিল করবে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    () => void

onUninstallLanguageRequest

Chrome 132+ Chrome 148 থেকে browser.*
browser.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

কোনও ভাষা আর প্রয়োজন নেই বলে TTS ক্লায়েন্ট ইঙ্গিত দিলে এটি ট্রিগার করা হয়।

প্যারামিটারগুলি