chrome.tts

বিবরণ

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

অপারেটিং সিস্টেম দ্বারা প্রদত্ত স্পিচ সংশ্লেষণ ক্ষমতা ব্যবহার করে, Chrome উইন্ডোজ (SAPI 5 ব্যবহার করে), Mac OS X এবং ChromeOS-এ এই ক্ষমতা প্রদান করে। সমস্ত প্ল্যাটফর্মে, ব্যবহারকারী এমন এক্সটেনশন ইনস্টল করতে পারেন যা নিজেদেরকে বিকল্প স্পিচ ইঞ্জিন হিসাবে নিবন্ধিত করে।

অনুমতিসমূহ

tts

ধারণা এবং ব্যবহার

বক্তৃতা তৈরি করুন

আপনার এক্সটেনশন থেকে speak() কল করে কথা বলুন। উদাহরণস্বরূপ:

chrome.tts.speak('Hello, world.');

অবিলম্বে কথা বলা বন্ধ করতে, শুধু stop() কল করুন :

chrome.tts.stop();

আপনি এমন বিকল্প প্রদান করতে পারেন যা বক্তৃতার বিভিন্ন বৈশিষ্ট্য নিয়ন্ত্রণ করে, যেমন এর গতি, পিচ এবং আরও অনেক কিছু। উদাহরণস্বরূপ:

chrome.tts.speak('Hello, world.', {'rate': 2.0});

ভাষাটি নির্দিষ্ট করাও একটি ভালো ধারণা যাতে সেই ভাষা (এবং প্রযোজ্য ক্ষেত্রে আঞ্চলিক উপভাষা) সমর্থনকারী একটি সিন্থেসাইজার বেছে নেওয়া হয়।

chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});

ডিফল্টরূপে, প্রতিটি কল to speak() যেকোনো চলমান বক্তৃতাকে বাধাগ্রস্ত করে এবং তাৎক্ষণিকভাবে কথা বলে। কোনও কল কোনও কিছুতে বাধা সৃষ্টি করছে কিনা তা নির্ধারণ করতে, আপনি isSpeaking() কল করতে পারেন। এছাড়াও, আপনি enqueue বিকল্পটি ব্যবহার করে এই উচ্চারণটি উচ্চারণের একটি সারিতে যুক্ত করতে পারেন যা বর্তমান উচ্চারণটি শেষ হওয়ার পরে বলা হবে।

chrome.tts.speak('Speak this first.');
chrome.tts.speak(
    'Speak this next, when the first sentence is done.', {'enqueue': true});

সকল অপশনের সম্পূর্ণ বিবরণ tts.speak() এর অধীনে পাওয়া যাবে। সকল স্পিচ ইঞ্জিন সকল অপশন সমর্থন করবে না।

ত্রুটিগুলি ধরার জন্য এবং আপনি speak() সঠিকভাবে কল করছেন কিনা তা নিশ্চিত করার জন্য, একটি কলব্যাক ফাংশন পাস করুন যা কোনও আর্গুমেন্ট নেয় না। কলব্যাকের ভিতরে, কোনও ত্রুটি আছে কিনা তা দেখতে runtime.lastError পরীক্ষা করুন।

chrome.tts.speak(
  utterance,
  options,
  function() {
    if (chrome.runtime.lastError) {
      console.log('Error: ' + chrome.runtime.lastError.message);
    }
  }
);

ইঞ্জিন স্পিচ তৈরি করা শুরু করার আগেই কলব্যাকটি ফিরে আসে। কলব্যাকের উদ্দেশ্য হল TTS API ব্যবহারের সময় সিনট্যাক্স ত্রুটি সম্পর্কে আপনাকে সতর্ক করা, স্পিচ সংশ্লেষণ এবং আউটপুট করার প্রক্রিয়ায় ঘটতে পারে এমন সমস্ত সম্ভাব্য ত্রুটি ধরা না। এই ত্রুটিগুলি ধরার জন্যও, আপনাকে পরবর্তী বিভাগে বর্ণিত একটি ইভেন্ট লিসেনার ব্যবহার করতে হবে।

ঘটনাগুলো শুনুন

সংশ্লেষিত বক্তৃতার অবস্থা সম্পর্কে আরও রিয়েল-টাইম তথ্য পেতে, to speak() বিকল্পগুলিতে একটি ইভেন্ট লিসেনার পাস করুন, যেমন:

chrome.tts.speak(
  utterance,
  {
    onEvent: function(event) {
      console.log('Event ' + event.type + ' at position ' + event.charIndex);
      if (event.type == 'error') {
        console.log('Error: ' + event.errorMessage);
      }
    }
  },
  callback
);

প্রতিটি ইভেন্টে একটি ইভেন্ট টাইপ থাকে, উচ্চারণের সাপেক্ষে বর্তমান বক্তৃতার অক্ষর সূচক, এবং ত্রুটি ইভেন্টের জন্য, একটি ঐচ্ছিক ত্রুটি বার্তা থাকে। ইভেন্টের ধরণগুলি হল:

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

চারটি ইভেন্টের ধরণ— 'end' , 'interrupted' , 'cancelled' , এবং 'error'চূড়ান্ত । এই ইভেন্টগুলির মধ্যে একটি পাওয়ার পরে, এই উচ্চারণটি আর কথা বলবে না এবং এই উচ্চারণ থেকে কোনও নতুন ইভেন্ট গ্রহণ করা হবে না।

কিছু ভয়েস সব ধরণের ইভেন্ট সাপোর্ট নাও করতে পারে, এবং কিছু ভয়েস কোনও ইভেন্টই পাঠাতে পারে না। যদি আপনি কোনও ভয়েস ব্যবহার করতে না চান যদি না এটি নির্দিষ্ট ইভেন্ট পাঠায়, তাহলে অপশন অবজেক্টের requiredEventTypes সদস্যে আপনার প্রয়োজনীয় ইভেন্টগুলি পাস করুন, অথবা getVoices() ব্যবহার করে আপনার প্রয়োজনীয়তা পূরণ করে এমন একটি ভয়েস বেছে নিন। উভয়ের বর্ণনা নিম্নলিখিত অংশে দেওয়া হয়েছে।

SSML মার্কআপ

এই API-তে ব্যবহৃত উচ্চারণগুলিতে স্পিচ সিনথেসিস মার্কআপ ল্যাঙ্গুয়েজ (SSML) ব্যবহার করে মার্কআপ অন্তর্ভুক্ত থাকতে পারে। যদি আপনি SSML ব্যবহার করেন, তাহলে speak() এর প্রথম যুক্তিটি একটি সম্পূর্ণ SSML ডকুমেন্ট হওয়া উচিত যার একটি XML হেডার এবং একটি শীর্ষ-স্তরের <speak> ট্যাগ থাকবে, কোনও ডকুমেন্ট ফ্র্যাগমেন্ট নয়।

উদাহরণস্বরূপ:

chrome.tts.speak(
  '<?xml version="1.0"?>' +
  '<speak>' +
  '  The <emphasis>second</emphasis> ' +
  '  word of this sentence was emphasized.' +
  '</speak>'
);

সব স্পিচ ইঞ্জিন সব SSML ট্যাগ সমর্থন করবে না, এবং কিছু কিছু SSML একেবারেই সমর্থন নাও করতে পারে, তবে সব ইঞ্জিনকে এমন যেকোনো SSML উপেক্ষা করতে হবে যা তারা সমর্থন করে না এবং তবুও অন্তর্নিহিত টেক্সট বলতে হবে।

একটি ভয়েস বেছে নিন

ডিফল্টরূপে, Chrome আপনার পছন্দের প্রতিটি উচ্চারণের জন্য, ভাষার উপর ভিত্তি করে সবচেয়ে উপযুক্ত ভয়েস বেছে নেয়। বেশিরভাগ Windows, Mac OS X এবং ChromeOS সিস্টেমে, অপারেটিং সিস্টেম দ্বারা সরবরাহিত স্পিচ সংশ্লেষণ কমপক্ষে একটি ভাষায় যেকোনো টেক্সট বলতে সক্ষম হওয়া উচিত। তবে কিছু ব্যবহারকারীর কাছে তাদের অপারেটিং সিস্টেম এবং অন্যান্য Chrome এক্সটেনশন দ্বারা বাস্তবায়িত স্পিচ ইঞ্জিন থেকে বিভিন্ন ধরণের ভয়েস উপলব্ধ থাকতে পারে। এই ক্ষেত্রে, আপনি উপযুক্ত ভয়েস চয়ন করতে বা ব্যবহারকারীকে পছন্দের তালিকা উপস্থাপন করতে কাস্টম কোড প্রয়োগ করতে পারেন।

সকল ভয়েসের তালিকা পেতে, getVoices() কল করুন এবং এটিকে একটি ফাংশন দিন যা TtsVoice অবজেক্টের একটি অ্যারেকে তার আর্গুমেন্ট হিসেবে গ্রহণ করে:

chrome.tts.getVoices(
  function(voices) {
    for (var i = 0; i < voices.length; i++) {
      console.log('Voice ' + i + ':');
      console.log('  name: ' + voices[i].voiceName);
      console.log('  lang: ' + voices[i].lang);
      console.log('  extension id: ' + voices[i].extensionId);
      console.log('  event types: ' + voices[i].eventTypes);
    }
  }
);

প্রকারভেদ

EventType

ক্রোম ৫৪+

এনাম

"শুরু"

"শেষ"

"শব্দ"

"বাক্য"

"চিহ্নিতকারী"

"বাধাগ্রস্ত"

"বাতিল"

"ত্রুটি"

"বিরতি"

"জীবনবৃত্তান্ত"

TtsEvent

একটি উচ্চারণের অবস্থা জানাতে TTS ইঞ্জিন থেকে একটি ইভেন্ট।

বৈশিষ্ট্য

  • charIndex সম্পর্কে

    সংখ্যা ঐচ্ছিক

    উচ্চারণে বর্তমান অক্ষরের সূচক। শব্দের ঘটনার ক্ষেত্রে, ঘটনাটি একটি শব্দের শেষে এবং পরবর্তী শব্দের শুরুর আগে শুরু হয়। charIndex পরবর্তী শব্দের শুরুতে লেখার একটি বিন্দুকে প্রতিনিধিত্ব করে।

  • ত্রুটি বার্তা

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

    যদি ইভেন্টের ধরণ error হয়, তাহলে ত্রুটির বর্ণনা।

  • দৈর্ঘ্য

    সংখ্যা ঐচ্ছিক

    ক্রোম ৭৪+

    উচ্চারণের পরবর্তী অংশের দৈর্ঘ্য। উদাহরণস্বরূপ, একটি word ইভেন্টে, এটি পরবর্তীতে উচ্চারিত শব্দের দৈর্ঘ্য। স্পিচ ইঞ্জিন দ্বারা সেট না করা হলে এটি -1 এ সেট করা হবে।

  • এই ধরণের ধরণ হতে পারে: বক্তৃতা শুরু হওয়ার সাথে সাথেই start , শব্দের সীমানায় পৌঁছালে word , বাক্যের সীমানায় পৌঁছালে sentence , SSML চিহ্নের উপাদানে পৌঁছালে marker , উচ্চারণের শেষে পৌঁছালে end , উচ্চারণ বন্ধ হলে বাধাপ্রাপ্ত বা শেষ পৌঁছানোর আগে interrupted , সংশ্লেষিত হওয়ার আগে সারি থেকে সরানো হলে cancelled , অথবা অন্য কোনও ত্রুটি ঘটলে error । বক্তৃতা বিরতি দেওয়ার সময়, যদি একটি নির্দিষ্ট উচ্চারণ মাঝখানে বিরতি দেওয়া হয় তবে একটি pause ইভেন্ট কার্যকর করা হয় এবং যদি একটি উচ্চারণ বক্তৃতা পুনরায় শুরু করে তবে বিরতি ইভেন্ট resume করা হয়। মনে রাখবেন যে উচ্চারণের মধ্যে বক্তৃতা বিরতি দেওয়া হলে বিরতি এবং বিরতি ইভেন্টগুলি কার্যকর নাও হতে পারে।

TtsOptions

ক্রোম ৭৭+

টিটিএস ইঞ্জিনের জন্য স্পিচ অপশন।

বৈশিষ্ট্য

  • পছন্দসই ইভেন্ট টাইপ

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

    আপনি যে TTS ইভেন্টের ধরণগুলি শুনতে আগ্রহী। যদি অনুপস্থিত থাকে, তাহলে সমস্ত ইভেন্টের ধরণ পাঠানো যেতে পারে।

  • সারিবদ্ধ করা

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

    যদি সত্য হয়, তাহলে TTS ইতিমধ্যেই চলমান থাকলে এই উচ্চারণটি সারিবদ্ধ করে। যদি মিথ্যা হয় (ডিফল্ট), তাহলে যেকোনো বর্তমান বক্তৃতাকে বাধাগ্রস্ত করে এবং এই নতুন উচ্চারণটি বলার আগে বক্তৃতা সারিটি ফ্লাশ করে।

  • এক্সটেনশন আইডি

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

    যদি জানা থাকে, তাহলে স্পিচ ইঞ্জিনের এক্সটেনশন আইডি ব্যবহার করা হবে।

  • লিঙ্গ
    Chrome 77 থেকে বন্ধ করা হয়েছে

    লিঙ্গ অবচিত এবং উপেক্ষা করা হবে।

    সংশ্লেষিত বক্তৃতার জন্য কণ্ঠস্বরের লিঙ্গ।

  • ল্যাং

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

    সংশ্লেষণের জন্য যে ভাষা ব্যবহার করা হবে, ভাষা - অঞ্চল আকারে। উদাহরণ: 'en', 'en-US', 'en-GB', 'zh-CN'।

  • পিচ

    সংখ্যা ঐচ্ছিক

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

  • হার

    সংখ্যা ঐচ্ছিক

    এই ভয়েসের ডিফল্ট হারের তুলনায় কথা বলার হার ১.০। ডিফল্ট হার হলো ১.০, সাধারণত প্রতি মিনিটে ১৮০ থেকে ২২০ শব্দ। ২.০ দ্বিগুণ দ্রুত এবং ০.৫ অর্ধেক দ্রুত। ০.১ এর নিচে বা ১০.০ এর উপরে মান কঠোরভাবে নিষিদ্ধ, তবে অনেক ভয়েস সর্বনিম্ন এবং সর্বোচ্চ হারকে আরও সীমাবদ্ধ করে দেবে—উদাহরণস্বরূপ, একটি নির্দিষ্ট ভয়েস আসলে স্বাভাবিকের চেয়ে ৩ গুণ দ্রুত কথা নাও বলতে পারে, এমনকি যদি আপনি ৩.০ এর চেয়ে বড় মান উল্লেখ করেন।

  • প্রয়োজনীয় ইভেন্টের ধরণ

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

    ভয়েস যে TTS ইভেন্ট টাইপগুলিকে সমর্থন করবে।

  • ভয়েসনাম

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

    সংশ্লেষণের জন্য ব্যবহার করা ভয়েসের নাম। যদি খালি থাকে, তাহলে যেকোনো উপলব্ধ ভয়েস ব্যবহার করে।

  • আয়তন

    সংখ্যা ঐচ্ছিক

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

  • অনইভেন্ট

    ঐচ্ছিক বাতিল

    এই ফাংশনটি উচ্চারণ বলার প্রক্রিয়ায় ঘটে যাওয়া ঘটনাগুলির সাথে ডাকা হয়।

    onEvent ফাংশনটি দেখতে এরকম:

    (event: TtsEvent) => {...}

    • টেক্সট-টু-স্পিচ ইঞ্জিন থেকে আপডেট ইভেন্ট যা এই উচ্চারণের অবস্থা নির্দেশ করে।

TtsVoice

বক্তৃতা সংশ্লেষণের জন্য উপলব্ধ একটি কণ্ঠস্বরের বর্ণনা।

বৈশিষ্ট্য

  • ইভেন্টের ধরণ

    ইভেন্ট টাইপ [] ঐচ্ছিক

    এই ভয়েস যে সকল কলব্যাক ইভেন্ট টাইপ পাঠাতে সক্ষম।

  • এক্সটেনশন আইডি

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

    এই ভয়েস সরবরাহকারী এক্সটেনশনের আইডি।

  • লিঙ্গ
    Chrome 70 থেকে বন্ধ করা হয়েছে

    লিঙ্গ অবচিত এবং উপেক্ষা করা হবে।

    এই কণ্ঠস্বরের লিঙ্গ।

  • ল্যাং

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

    এই ভয়েস যে ভাষাটিকে সমর্থন করে, তা ভাষা - অঞ্চল আকারে। উদাহরণ: 'en', 'en-US', 'en-GB', 'zh-CN'।

  • দূরবর্তী

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

    যদি সত্য হয়, তাহলে সংশ্লেষণ ইঞ্জিনটি একটি দূরবর্তী নেটওয়ার্ক রিসোর্স। এটি উচ্চতর ল্যাটেন্সি হতে পারে এবং ব্যান্ডউইথ খরচ বহন করতে পারে।

  • ভয়েসনাম

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

    কণ্ঠস্বরের নাম।

VoiceGender

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

লিঙ্গ অবজ্ঞা করা হয় এবং উপেক্ষা করা হয়।

এনাম

"পুরুষ"

"মহিলা"

পদ্ধতি

getVoices()

chrome.tts.getVoices(): Promise<TtsVoice[]>

সমস্ত উপলব্ধ ভয়েসের একটি অ্যারে পায়।

রিটার্নস

  • প্রতিশ্রুতি< TtsVoice []>

    ক্রোম ১০১+

isSpeaking()

chrome.tts.isSpeaking(): Promise<boolean>

ইঞ্জিনটি বর্তমানে কথা বলছে কিনা তা পরীক্ষা করে। Mac OS X-এ, সিস্টেম স্পিচ ইঞ্জিন যখনই কথা বলছে তখন ফলাফল সত্য হয়, এমনকি যদি স্পিচটি Chrome দ্বারা শুরু না করা হয়।

রিটার্নস

  • প্রতিশ্রুতি<বুলিয়ান>

    ক্রোম ১০১+

pause()

chrome.tts.pause(): void

বক্তৃতা সংশ্লেষণকে থামায়, সম্ভবত একটি উচ্চারণের মাঝখানে। পুনরায় শুরু করার বা বন্ধ করার জন্য একটি কল বক্তৃতাকে থামিয়ে দেবে।

resume()

chrome.tts.resume(): void

যদি বক্তৃতা থামানো হয়, তাহলে যেখানে শেষ হয়েছিল সেখান থেকে আবার বলা শুরু করুন।

speak()

chrome.tts.speak(
  utterance: string,
  options?: TtsOptions,
)
: Promise<void>

টেক্সট-টু-স্পিচ ইঞ্জিন ব্যবহার করে টেক্সট বলে।

পরামিতি

  • উচ্চারণ

    স্ট্রিং

    যে টেক্সটটি বলতে হবে, তা হয় প্লেইন টেক্সট অথবা একটি সম্পূর্ণ, সুগঠিত SSML ডকুমেন্ট। যেসব স্পিচ ইঞ্জিন SSML সমর্থন করে না, তারা ট্যাগগুলি সরিয়ে টেক্সটটি বলবে। টেক্সটের সর্বোচ্চ দৈর্ঘ্য 32,768 অক্ষর।

  • বিকল্পগুলি

    TtsOptions ঐচ্ছিক

    বক্তৃতা বিকল্প।

রিটার্নস

  • প্রতিশ্রুতি<অকার্যকর>

    ক্রোম ১০১+

    বক্তৃতা শেষ হওয়ার আগেই সমাধান হয়ে যায়। যদি কোনও ত্রুটি দেখা দেয়, তাহলে প্রতিশ্রুতি প্রত্যাখ্যান করা হবে। আরও বিস্তারিত প্রতিক্রিয়া পেতে options.onEvent ব্যবহার করুন।

stop()

chrome.tts.stop(): void

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

ইভেন্টগুলি

onVoicesChanged

ক্রোম ১২৪+
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

getVoices দ্বারা ফেরত দেওয়া tts.TtsVoice এর তালিকা পরিবর্তিত হলে কল করা হয়।

পরামিতি

  • কলব্যাক

    ফাংশন

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

    () => void