chrome.tts

ब्यौरा

सिंथसाइज़ किए गए टेक्स्ट-टू-स्पीच (टीटीएस) को चलाने के लिए, chrome.tts एपीआई का इस्तेमाल करें. इससे जुड़ा ttsEngine एपीआई भी देखें. इसकी मदद से, एक्सटेंशन में स्पीच इंजन लागू किया जा सकता है.

Chrome, Windows (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});

डिफ़ॉल्ट रूप से, speak() को कॉल करने पर, यह सुविधा चालू हो जाती है. इससे, कोई भी आवाज़ तुरंत रुक जाती है और 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);
    }
  }
);

इंजन के आवाज़ जनरेट करने से पहले ही, कॉलबैक तुरंत जवाब देता है. कॉल बैक का मकसद, टीटीएस एपीआई का इस्तेमाल करते समय सिंटैक्स से जुड़ी गड़बड़ियों के बारे में आपको सूचना देना है. इसका मकसद, स्पीच को सिंथेसाइज़ करने और आउटपुट करने की प्रोसेस में होने वाली सभी संभावित गड़बड़ियों का पता लगाना नहीं है. इन गड़बड़ियों का पता लगाने के लिए भी, आपको इवेंट लिसनर का इस्तेमाल करना होगा. इसके बारे में अगले सेक्शन में बताया गया है.

इवेंट सुनना

सिंथसाइज़ की गई स्पीच की स्थिति के बारे में रीयल-टाइम में ज़्यादा जानकारी पाने के लिए, 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': एसएसएमएल मार्कर पर पहुंच गया है. event.charIndex का इस्तेमाल करके, मौजूदा स्पीच की पोजीशन का पता लगाएं.
  • 'end': इंजन ने जवाब देना खत्म कर दिया है.
  • 'interrupted': इस बातचीत के दौरान, speak() या stop() को कॉल किया गया था. इसलिए, यह बातचीत पूरी नहीं हो सकी.
  • 'cancelled': इस उच्चारण को कतार में रखा गया था. हालांकि, बाद में speak() या stop() को किए गए किसी अन्य कॉल की वजह से इसे रद्द कर दिया गया. इसलिए, इसे कभी बोला नहीं गया.
  • 'error': इंजन से जुड़ी कोई गड़बड़ी हुई है. इसलिए, इस अटरेंस को नहीं बोला जा सकता. ज़्यादा जानकारी के लिए, event.errorMessage देखें.

इवेंट टाइप में से चार—'end', 'interrupted', 'cancelled', और 'error'फ़ाइनल हैं. इनमें से कोई एक इवेंट मिलने के बाद, यह अटरेंस बोलना बंद कर देगा. साथ ही, इस अटरेंस से कोई नया इवेंट नहीं मिलेगा.

ऐसा हो सकता है कि कुछ आवाज़ें, सभी तरह के इवेंट के साथ काम न करें. यह भी हो सकता है कि कुछ आवाज़ों के लिए, कोई भी इवेंट न भेजा जाए. अगर आपको किसी ऐसी आवाज़ का इस्तेमाल नहीं करना है जो कुछ इवेंट भेजती है, तो requiredEventTypes सदस्य के विकल्पों वाले ऑब्जेक्ट में, अपनी ज़रूरत के इवेंट पास करें. इसके अलावा, getVoices() का इस्तेमाल करके ऐसी आवाज़ चुनी जा सकती है जो आपकी ज़रूरतों को पूरा करती हो. इन दोनों के बारे में यहां बताया गया है.

एसएसएमएल मार्कअप

इस एपीआई में इस्तेमाल किए गए शब्दों में, स्पीच सिंथेसिस मार्कअप लैंग्वेज (एसएसएमएल) का इस्तेमाल करके मार्कअप शामिल किया जा सकता है. एसएसएमएल का इस्तेमाल करने पर, speak() का पहला आर्ग्युमेंट, पूरा एसएसएमएल दस्तावेज़ होना चाहिए. इसमें एक्सएमएल हेडर और टॉप-लेवल <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

Chrome 54 या इसके बाद का वर्शन

Enum

"start"

"end"

"word"

"sentence"

"marker"

"interrupted"

"cancelled"

"error"

"pause"

"resume"

TtsEvent

यह टीटीएस इंजन का एक इवेंट है. इसका इस्तेमाल, बोले गए शब्दों की स्थिति के बारे में बताने के लिए किया जाता है.

प्रॉपर्टी

  • charIndex

    number ज़रूरी नहीं

    बोलने के दौरान इस्तेमाल किए गए शब्दों में मौजूद मौजूदा वर्ण का इंडेक्स. शब्द इवेंट के लिए, इवेंट एक शब्द के खत्म होने पर और अगले शब्द के शुरू होने से पहले ट्रिगर होता है. charIndex, टेक्स्ट में उस जगह को दिखाता है जहां से अगले शब्द का उच्चारण शुरू होगा.

  • errorMessage

    string ज़रूरी नहीं है

    अगर इवेंट टाइप error है, तो गड़बड़ी की जानकारी.

  • लंबाई

    number ज़रूरी नहीं

    Chrome 74 या इसके बाद का वर्शन

    उच्चारण के अगले हिस्से की अवधि. उदाहरण के लिए, word इवेंट में, यह उस शब्द की लंबाई होती है जिसे अगली बार बोला जाएगा. अगर स्पीच इंजन इसे सेट नहीं करता है, तो इसे -1 पर सेट किया जाएगा.

  • टाइप

    टाइप start हो सकता है, जैसे ही स्पीच शुरू होती है, word जब कोई शब्द खत्म होता है, sentence जब कोई वाक्य खत्म होता है, marker जब कोई SSML मार्क एलिमेंट खत्म होता है, end जब उच्चारण खत्म होता है, interrupted जब उच्चारण को खत्म होने से पहले रोक दिया जाता है या उसमें रुकावट आती है, cancelled जब इसे कभी भी सिंथेसाइज़ किए जाने से पहले ही कतार से हटा दिया जाता है या error जब कोई अन्य गड़बड़ी होती है. बोलने की सुविधा को रोकने पर, अगर किसी खास शब्द को बीच में ही रोक दिया जाता है, तो pause इवेंट ट्रिगर होता है. वहीं, अगर किसी शब्द को फिर से शुरू किया जाता है, तो resume इवेंट ट्रिगर होता है. ध्यान दें कि अगर बातचीत के बीच में आवाज़ को रोका जाता है, तो हो सकता है कि 'रोकें' और 'फिर से शुरू करें' इवेंट ट्रिगर न हों.

TtsOptions

Chrome 77 या इसके बाद के वर्शन

TTS इंजन के लिए, बोली के विकल्प.

प्रॉपर्टी

  • desiredEventTypes

    string[] ज़रूरी नहीं है

    टीएसएस इवेंट के टाइप, जिन्हें सुनने में आपकी दिलचस्पी है. अगर यह पैरामीटर मौजूद नहीं है, तो सभी तरह के इवेंट भेजे जा सकते हैं.

  • enqueue

    बूलियन ज़रूरी नहीं है

    अगर सही है, तो टीटीएस पहले से चल रहा होने पर, इस उच्चारण को लाइन में लगाता है. अगर यह वैल्यू गलत है (डिफ़ॉल्ट रूप से), तो यह नई आवाज़ में बोलने से पहले, मौजूदा आवाज़ को रोक देता है और स्पीच क्यू को फ़्लश कर देता है.

  • extensionId

    string ज़रूरी नहीं है

    अगर पता हो, तो इस्तेमाल किए जाने वाले स्पीच इंजन का एक्सटेंशन आईडी.

  • लिंग

    VoiceGender ज़रूरी नहीं है

    Chrome 77 से बंद कर दिया गया है

    लिंग एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.

    सिंथसाइज़्ड स्पीच के लिए आवाज़ का लिंग.

  • lang

    string ज़रूरी नहीं है

    टेक्स्ट को ऑडियो में बदलने के लिए इस्तेमाल की जाने वाली भाषा. इसका फ़ॉर्मैट language-region होना चाहिए. उदाहरण: 'en', 'en-US', 'en-GB', 'zh-CN'.

  • पिच

    number ज़रूरी नहीं

    बोलने की पिच 0 से 2 के बीच होनी चाहिए. इसमें 0 सबसे कम और 2 सबसे ज़्यादा है. 1.0 का मतलब है कि आवाज़ की पिच डिफ़ॉल्ट है.

  • दर

    number ज़रूरी नहीं

    इस आवाज़ के लिए, डिफ़ॉल्ट रेट के हिसाब से बोलने की रफ़्तार. डिफ़ॉल्ट दर 1.0 होती है. आम तौर पर, यह हर मिनट में करीब 180 से 220 शब्द होती है. 2.0 का मतलब है कि वीडियो को दोगुनी स्पीड से चलाया जाएगा. वहीं, 0.5 का मतलब है कि वीडियो को आधी स्पीड से चलाया जाएगा. 0.1 से कम या 10.0 से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति नहीं है. हालांकि, कई आवाज़ों के लिए, बोलने की कम से कम और ज़्यादा से ज़्यादा दर को और भी सीमित किया जाएगा. उदाहरण के लिए, अगर आपने 3.0 से ज़्यादा वैल्यू तय की है, तो भी कोई आवाज़ सामान्य से तीन गुना ज़्यादा तेज़ी से नहीं बोलेगी.

  • requiredEventTypes

    string[] ज़रूरी नहीं है

    आवाज़ को टीटीएस इवेंट टाइप के साथ काम करना चाहिए.

  • voiceName

    string ज़रूरी नहीं है

    आवाज़ का नाम, जिसका इस्तेमाल सिंथेसिस के लिए करना है. अगर इसे खाली छोड़ा जाता है, तो उपलब्ध किसी भी आवाज़ का इस्तेमाल किया जाता है.

  • आवाज़

    number ज़रूरी नहीं

    बोलने की आवाज़ 0 और 1 के बीच होनी चाहिए. इसमें 0 का मतलब सबसे कम और 1 का मतलब सबसे ज़्यादा होता है. इसकी डिफ़ॉल्ट वैल्यू 1.0 होती है.

  • onEvent

    void optional

    इस फ़ंक्शन को उन इवेंट के साथ कॉल किया जाता है जो जवाब देने की प्रोसेस के दौरान होते हैं.

    onEvent फ़ंक्शन इस तरह दिखता है:

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

    • इवेंट

      यह टेक्स्ट-टू-स्पीच इंजन से मिला अपडेट इवेंट है. इससे इस उच्चारण की स्थिति के बारे में पता चलता है.

TtsVoice

यह बोली-संश्लेषण के लिए उपलब्ध किसी आवाज़ की जानकारी देता है.

प्रॉपर्टी

  • eventTypes

    EventType[] ज़रूरी नहीं है

    सभी तरह के कॉलबैक इवेंट, जिन्हें यह आवाज़ भेज सकती है.

  • extensionId

    string ज़रूरी नहीं है

    आवाज़ देने वाले एक्सटेंशन का आईडी.

  • लिंग

    VoiceGender ज़रूरी नहीं है

    Chrome 70 से बंद कर दिया गया है

    लिंग एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.

    इस आवाज़ का लिंग.

  • lang

    string ज़रूरी नहीं है

    यह आवाज़ जिस भाषा में काम करती है उसे भाषा-क्षेत्र के फ़ॉर्मैट में दिखाया जाता है. उदाहरण: 'en', 'en-US', 'en-GB', 'zh-CN'.

  • रिमोट

    बूलियन ज़रूरी नहीं है

    अगर यह वैल्यू सही है, तो सिंथेसिस इंजन एक रिमोट नेटवर्क संसाधन है. इसमें ज़्यादा समय लग सकता है और बैंडविड्थ का शुल्क लग सकता है.

  • voiceName

    string ज़रूरी नहीं है

    आवाज़ का नाम.

VoiceGender

Chrome 54 या इसके बाद के वर्शन Chrome 70 के बाद से काम नहीं करता

लिंग एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाता है.

Enum

"male"

"female"

तरीके

getVoices()

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

इससे सभी उपलब्ध आवाज़ों का कलेक्शन मिलता है.

रिटर्न

  • Promise<TtsVoice[]>

    Chrome 101 या इसके बाद के वर्शन

isSpeaking()

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

इस कुकी से यह पता चलता है कि इंजन फ़िलहाल बोल रहा है या नहीं. Mac OS X पर, सिस्टम के स्पीच इंजन के बोलने पर नतीजा 'सही है' होता है. भले ही, Chrome ने स्पीच शुरू न की हो.

रिटर्न

  • Promise<boolean>

    Chrome 101 या इसके बाद के वर्शन

pause()

chrome.tts.pause(): void

यह लिखे हुए को बोली में बदलने की सुविधा को रोकता है. ऐसा हो सकता है कि यह सुविधा किसी शब्द के बीच में ही रुक जाए. बोलकर दिए जाने वाले सुझावों को फिर से शुरू करने या रोकने के लिए कॉल करने पर, सुझावों को फिर से शुरू कर दिया जाएगा.

resume()

chrome.tts.resume(): void

अगर बोलने की सुविधा को रोका गया था, तो यह सुविधा वहीं से फिर से शुरू हो जाती है जहां इसे रोका गया था.

speak()

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

लिखाई को बोली में बदलने वाले इंजन का इस्तेमाल करके, टेक्स्ट को बोलता है.

पैरामीटर

  • बोले गए शब्द

    स्ट्रिंग

    बोलने के लिए टेक्स्ट. यह सादा टेक्स्ट या पूरा और सही तरीके से लिखा गया एसएसएमएल दस्तावेज़ होना चाहिए. जो स्पीच इंजन एसएसएमएल के साथ काम नहीं करते वे टैग हटा देंगे और टेक्स्ट को बोलकर सुनाएंगे. टेक्स्ट में ज़्यादा से ज़्यादा 32,768 वर्ण हो सकते हैं.

  • विकल्प

    TtsOptions ज़रूरी नहीं है

    बोलने के विकल्प.

रिटर्न

  • Promise<void>

    Chrome 101 या इसके बाद के वर्शन

    बातचीत खत्म होने से पहले ही समस्या हल हो जाती है. अगर कोई गड़बड़ी होती है, तो प्रॉमिस अस्वीकार कर दिया जाएगा. ज़्यादा जानकारी के साथ सुझाव/राय पाने या शिकायत करने के लिए, options.onEvent का इस्तेमाल करें.

stop()

chrome.tts.stop(): void

यह मौजूदा आवाज़ को बंद कर देता है और बोले जाने वाले शब्दों की सूची को मिटा देता है. इसके अलावा, अगर बोलकर जवाब देने की सुविधा को रोका गया था, तो अब इसे चालू कर दिया जाएगा, ताकि अगली बार बोलकर जवाब दिया जा सके.

इवेंट

onVoicesChanged

Chrome 124 और इसके बाद के वर्शन
chrome.tts.onVoicesChanged.addListener(
  callback: function,
)

इस फ़ंक्शन को तब कॉल किया जाता है, जब getVoices से मिलने वाली tts.TtsVoice की सूची में बदलाव होता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर ऐसा दिखता है:

    () => void