chrome.ttsEngine

ब्यौरा

एक्सटेंशन का इस्तेमाल करके, लिखाई को बोली में बदलने वाले(टीटीएस) इंजन को लागू करने के लिए, chrome.ttsEngine API का इस्तेमाल करें. अगर आपका एक्सटेंशन इस एपीआई का इस्तेमाल करके रजिस्टर होता है, तो जब कोई एक्सटेंशन या Chrome ऐप्लिकेशन बोली जनरेट करने के लिए tts एपीआई का इस्तेमाल करेगा, तो उसे बोले जाने वाले वाक्यांश और अन्य पैरामीटर वाले इवेंट मिलेंगे. इसके बाद, आपका एक्सटेंशन बोली को सिंथेटिक वॉइस में बदलने और उसे आउटपुट करने के लिए, उपलब्ध किसी भी वेब टेक्नोलॉजी का इस्तेमाल कर सकता है. साथ ही, स्थिति की रिपोर्ट करने के लिए, कॉलिंग फ़ंक्शन को इवेंट वापस भेज सकता है.

अनुमतियां

ttsEngine

कॉन्सेप्ट और इस्तेमाल

कोई एक्सटेंशन, खुद को बोली के इंजन के तौर पर रजिस्टर कर सकता है. ऐसा करने पर, यह tts.speak() और tts.stop() जैसे फ़ंक्शन के कुछ या सभी कॉल को इंटरसेप्ट कर सकता है और उन्हें लागू करने का कोई दूसरा तरीका दे सकता है. एक्सटेंशन, बोली सुनाने के लिए वेब की किसी भी उपलब्ध टेक्नोलॉजी का इस्तेमाल कर सकते हैं. जैसे, किसी सर्वर से ऑडियो स्ट्रीम करना, एचटीएमएल5 ऑडियो. एक्सटेंशन, बोली गई बातों का इस्तेमाल करके कुछ और भी कर सकता है. जैसे, पॉप-अप में सबटाइटल दिखाना या उन्हें किसी रिमोट सर्वर पर लॉग मैसेज के तौर पर भेजना.

टीटीएस इंजन लागू करने के लिए, किसी एक्सटेंशन को "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, बोली गई बातों को शेड्यूल नहीं कर पाएगा.

लोड होने के बाद, एक्सटेंशन chrome.ttsEngine.updateVoices को कॉल करके, पहले से तय की गई आवाज़ों की सूची को बदल सकता है. ध्यान दें कि updateVoices को प्रोग्रामैटिक तरीके से कॉल करने के लिए इस्तेमाल किए गए पैरामीटर, कैमल केस में होते हैं: उदाहरण के लिए, voiceName का इस्तेमाल करती है.)voice_name

आपके पास जो इवेंट टाइप भेजने का विकल्प है वे speak() तरीके से मिलने वाले इवेंट टाइप से मेल खाते हैं:

  • 'start': इंजन ने बोलना शुरू कर दिया है.
  • 'word': शब्द की सीमा पूरी हो गई. बोली गई मौजूदा बात की जगह का पता लगाने के लिए, event.charIndex का इस्तेमाल करें.
  • 'sentence': वाक्य की सीमा पूरी हो गई. बोली गई मौजूदा बात की स्थिति जानने के लिए, event.charIndex का इस्तेमाल करें.
  • 'marker': एसएसएमएल मार्कर तक पहुंचा गया. बोली गई मौजूदा बात की जगह का पता लगाने के लिए, 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)
};

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

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

टाइप

AudioBuffer

Chrome 92 और उसके बाद के वर्शन

ऐसे पैरामीटर जिनमें ऑडियो बफ़र और उससे जुड़ा डेटा शामिल होता है.

प्रॉपर्टी

  • audioBuffer

    ArrayBuffer

    लिखाई को बोली में बदलने वाले इंजन का ऑडियो बफ़र. इसकी लंबाई, audioStreamOptions.bufferSize के हिसाब से होनी चाहिए.साथ ही, इसे audioStreamOptions.sampleRate पर मोनो के तौर पर और लीनियर पीसीएम, 32-बिट साइन वाले फ़्लोट के तौर पर एन्कोड किया जाना चाहिए. इसका मतलब है कि इसे JavaScript में Float32Array टाइप के तौर पर एन्कोड किया जाना चाहिए.

  • charIndex

    number ज़रूरी नहीं

    इस ऑडियो बफ़र से जुड़ा वर्ण इंडेक्स.

  • isLastBuffer

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

    अगर बोले गए टेक्स्ट के लिए यह ऑडियो बफ़र आखिरी है, तो True.

AudioStreamOptions

Chrome 92 और उसके बाद के वर्शन

इसमें ऑडियो स्ट्रीम का वह फ़ॉर्मैट होता है जो इंजन से जनरेट होने की उम्मीद होती है.

प्रॉपर्टी

  • bufferSize

    संख्या

    ऑडियो बफ़र में सैंपल की संख्या.

  • sampleRate

    संख्या

    ऑडियो बफ़र में सैंपल रेट की उम्मीद.

LanguageInstallStatus

मंज़ूरी बाकी है

किसी आवाज़ के इंस्टॉल होने की स्थिति.

Enum

"notInstalled"

"installing"

"installed"

"failed"

LanguageStatus

मंज़ूरी बाकी है

किसी भाषा के इंस्टॉल होने की स्थिति.

प्रॉपर्टी

  • गड़बड़ी

    स्ट्रिंग ज़रूरी नहीं

    इंस्टॉलेशन से जुड़ी गड़बड़ियों के बारे में जानकारी. अगर भाषा इंस्टॉल नहीं हो पाती है, तो इस फ़ील्ड में अपने-आप जानकारी भर जाती है.

  • installStatus

    इंस्टॉलेशन की स्थिति.

  • lang

    स्ट्रिंग

    भाषा कोड-क्षेत्र कोड के तौर पर भाषा स्ट्रिंग, जहां क्षेत्र को छोड़ा जा सकता है. उदाहरण के लिए, en, en-AU, zh-CH.

LanguageUninstallOptions

मंज़ूरी बाकी है

किसी भाषा को अनइंस्टॉल करने के विकल्प.

प्रॉपर्टी

  • uninstallImmediately

    बूलियन

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

SpeakOptions

Chrome 92 और उसके बाद के वर्शन

tts.speak() तरीके के लिए तय किए गए विकल्प.

प्रॉपर्टी

  • लिंग

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

    Chrome 92 से अमान्य है

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

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

  • lang

    स्ट्रिंग ज़रूरी नहीं

    सिंथेसिस के लिए इस्तेमाल की जाने वाली भाषा, भाषा-इलाका के फ़ॉर्मैट में. उदाहरण: '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 के बीच होगी. अगर कोई वॉइस, किराये की पूरी रेंज के साथ काम नहीं करती, तो गड़बड़ी का कोई मैसेज न दिखाएं. इसके बजाय, रेट को उस रेंज में रखें जिसमें वॉइस असिस्टेंट काम करती है.

  • voiceName

    स्ट्रिंग ज़रूरी नहीं

    सिंथेसिस के लिए इस्तेमाल की जाने वाली आवाज़ का नाम.

  • आवाज़

    number ज़रूरी नहीं

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

TtsClient

Chrome 131 और उसके बाद के वर्शन

स्टेटस का अनुरोध करने वाले क्लाइंट का आइडेंटिफ़ायर.

प्रॉपर्टी

  • आईडी

    स्ट्रिंग

    क्लाइंट, भाषा मैनेजमेंट का अनुरोध कर रहा है. एक्सटेंशन के लिए, यह यूनीक एक्सटेंशन आईडी होता है. Chrome की सुविधाओं के लिए, यह सुविधा का ऐसा नाम होता है जिसे आसानी से पढ़ा जा सकता है.

  • अनुरोध करने वाले व्यक्ति का टाइप.

TtsClientSource

Chrome 131 और उसके बाद के वर्शन

अनुरोध करने वाले व्यक्ति का टाइप.

Enum

"chromefeature"

"extension"

VoiceGender

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

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

Enum

"male"

"female"

तरीके

updateLanguage()

मंज़ूरी बाकी है
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)

इंजन, भाषा इंस्टॉल करने की कोशिश करने और भाषा अनइंस्टॉल करने पर, इस फ़ंक्शन को कॉल करता है. क्लाइंट से स्टेटस के अनुरोध के जवाब में भी इसे कॉल किया जाता है. जब कोई आवाज़ इंस्टॉल या अनइंस्टॉल की जाती है, तो इंजन को आवाज़ को रजिस्टर करने के लिए, ttsEngine.updateVoices को भी कॉल करना चाहिए.

पैरामीटर

  • स्थिति

    भाषा के इंस्टॉल होने की स्थिति.

updateVoices()

Chrome 66 और उसके बाद के वर्शन
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)

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

पैरामीटर

  • आवाज़ें

    tts.TtsVoice ऑब्जेक्ट का कलेक्शन, जो बोली को लिखाई में बदलने की सुविधा के लिए उपलब्ध आवाज़ों को दिखाता है.

इवेंट

onInstallLanguageRequest

Chrome 131 और उसके बाद के वर्शन
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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

    • अनुरोध करने वाला
    • lang

      स्ट्रिंग

onLanguageStatusRequest

मंज़ूरी बाकी है
chrome.ttsEngine.onLanguageStatusRequest.addListener(
  callback: function,
)

यह इवेंट तब ट्रिगर होता है, जब लिखाई को बोली में बदलने की सुविधा देने वाला क्लाइंट, किसी भाषा के इंस्टॉल होने की स्थिति का अनुरोध करता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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

    • अनुरोध करने वाला
    • lang

      स्ट्रिंग

onPause

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    () => void

onResume

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    () => void

onSpeak

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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

    • वाक्यांश

      स्ट्रिंग

    • विकल्प
    • sendTtsEvent

      फ़ंक्शन

      sendTtsEvent पैरामीटर इस तरह दिखता है:

      (event: tts.TtsEvent) => void

      • इवेंट

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

onSpeakWithAudioStream

Chrome 92 और उसके बाद के वर्शन
chrome.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 और उसके बाद के वर्शन

      sendError पैरामीटर इस तरह दिखता है:

      (errorMessage?: string) => void

      • errorMessage

        स्ट्रिंग ज़रूरी नहीं

        गड़बड़ी के बारे में बताने वाली स्ट्रिंग.

onStop

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

tts.stop को कॉल करने पर ट्रिगर होता है. ऐसा तब हो सकता है, जब यह एक्सटेंशन बोल रहा हो. अगर किसी एक्सटेंशन को onStop का कॉल मिलता है और बोली पहले से ही बंद है, तो उसे कुछ नहीं करना चाहिए (कोई गड़बड़ी नहीं दिखानी चाहिए). अगर बोली को रोका गया है, तो यह निर्देश उसे रोकने की स्थिति से हटा देगा.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    () => void

onUninstallLanguageRequest

मंज़ूरी बाकी है
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

यह इवेंट तब ट्रिगर होता है, जब लिखाई को बोली में बदलने की सुविधा देने वाला क्लाइंट यह बताता है कि किसी भाषा की ज़रूरत नहीं है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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