chrome.ttsEngine

refresh date: 2026-09-25 robots: noindex

ब्यौरा

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

अनुमतियां

ttsEngine

खास जानकारी

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

मेनिफ़ेस्ट

टीटीएस इंजन लागू करने के लिए, एक्सटेंशन को "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

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

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

Enum

"notInstalled"

"installing"

"installed"

"failed"

LanguageStatus

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

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

प्रॉपर्टी

  • गड़बड़ी

    string ज़रूरी नहीं

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

  • installStatus

    इंस्टॉल किए जाने की स्थिति.

  • lang

    स्ट्रिंग

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

LanguageUninstallOptions

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

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

प्रॉपर्टी

  • uninstallImmediately

    बूलियन

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

SpeakOptions

Chrome 92+

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

प्रॉपर्टी

  • लिंग

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

    Chrome 92 के बाद से इस्तेमाल नहीं किया जा रहा है

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

    मशीनी आवाज़ के लिए, आवाज़ देने वाले का लिंग.

  • lang

    string ज़रूरी नहीं

    सिंथेसिस के लिए इस्तेमाल की जाने वाली भाषा. इसे भाषा-इलाका के फ़ॉर्मैट में लिखा जाता है. उदाहरण: '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

    string ज़रूरी नहीं

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

  • आवाज़

    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 132 या इसके बाद का वर्शन
chrome.ttsEngine.updateLanguage(
  status: LanguageStatus,
)
: void

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

पैरामीटर

  • स्थिति

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

updateVoices()

Chrome 66+
chrome.ttsEngine.updateVoices(
  voices: TtsVoice[],
)
: void

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

पैरामीटर

  • आवाज़ें

    tts.TtsVoice ऑब्जेक्ट का ऐरे, जो स्पीच सिंथेसिस के लिए उपलब्ध आवाज़ों को दिखाता है.

इवेंट

onInstallLanguageRequest

Chrome 131+
chrome.ttsEngine.onInstallLanguageRequest.addListener(
  callback: function,
)

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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

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

      स्ट्रिंग

onLanguageStatusRequest

Chrome 132 या इसके बाद का वर्शन
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

    • utterance

      स्ट्रिंग

    • विकल्प
    • sendTtsEvent

      फ़ंक्शन

      sendTtsEvent पैरामीटर कुछ ऐसा दिखता है:

      (event: tts.TtsEvent) => void

      • इवेंट

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

onSpeakWithAudioStream

Chrome 92+
chrome.ttsEngine.onSpeakWithAudioStream.addListener(
  callback: function,
)

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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

    • utterance

      स्ट्रिंग

    • विकल्प
    • audioStreamOptions
    • sendTtsAudio

      फ़ंक्शन

      sendTtsAudio पैरामीटर कुछ ऐसा दिखता है:

      (audioBufferParams: AudioBuffer) => void

      • audioBufferParams

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

    • sendError

      फ़ंक्शन

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

      sendError पैरामीटर कुछ ऐसा दिखता है:

      (errorMessage?: string) => void

      • errorMessage

        string ज़रूरी नहीं

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

onStop

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    () => void

onUninstallLanguageRequest

Chrome 132 या इसके बाद का वर्शन
chrome.ttsEngine.onUninstallLanguageRequest.addListener(
  callback: function,
)

यह तब ट्रिगर होता है, जब टीटीएस क्लाइंट यह बताता है कि अब किसी भाषा की ज़रूरत नहीं है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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