refresh date: 2026-09-25 robots: noindex
ब्यौरा
एक्सटेंशन का इस्तेमाल करके, लिखाई को बोली में बदलने(टीटीएस) वाले इंजन को लागू करने के लिए, chrome.ttsEngine API का इस्तेमाल करें. अगर आपका एक्सटेंशन इस एपीआई का इस्तेमाल करके रजिस्टर करता है, तो उसे ऐसे इवेंट मिलेंगे जिनमें बोले जाने वाले शब्द और अन्य पैरामीटर शामिल होंगे. ऐसा तब होगा, जब कोई एक्सटेंशन या 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
ऑडियो बफ़र और उससे जुड़ा डेटा शामिल करने वाले पैरामीटर.
प्रॉपर्टी
-
audioBuffer
ArrayBuffer
लिखे गए शब्दों को सुनने की सुविधा देने वाले इंजन का ऑडियो बफ़र. इसकी लंबाई, audioStreamOptions.bufferSize के बराबर होनी चाहिए. इसे मोनो के तौर पर, audioStreamOptions.sampleRate पर, और लीनियर पीसीएम के तौर पर एन्कोड किया जाना चाहिए. साथ ही, यह 32-बिट साइंड फ़्लोट होना चाहिए. इसका मतलब है कि यह JavaScript में Float32Array टाइप का होना चाहिए.
-
charIndex
number optional
इस ऑडियो बफ़र से जुड़ा वर्ण इंडेक्स.
-
isLastBuffer
boolean ज़रूरी नहीं है
अगर यह ऑडियो बफ़र, बोले जा रहे टेक्स्ट के लिए आखिरी बफ़र है, तो True.
AudioStreamOptions
इसमें ऑडियो स्ट्रीम का वह फ़ॉर्मैट होता है जिसे इंजन से जनरेट किया जाना चाहिए.
प्रॉपर्टी
-
bufferSize
संख्या
ऑडियो बफ़र में मौजूद सैंपल की संख्या.
-
sampleRate
संख्या
ऑडियो बफ़र में अनुमानित सैंपल रेट.
LanguageInstallStatus
किसी आवाज़ के इंस्टॉल होने की स्थिति.
Enum
"notInstalled"
"installing"
"installed"
"failed"
LanguageStatus
किसी भाषा के इंस्टॉल होने की स्थिति.
प्रॉपर्टी
-
गड़बड़ी
string ज़रूरी नहीं है
इंस्टॉल नहीं हो पाने की वजह के बारे में जानकारी. अगर भाषा इंस्टॉल नहीं हो पाती है, तो इस फ़ील्ड में जानकारी भरी जा सकती है.
-
installStatus
इंस्टॉल करने की स्थिति.
-
lang
स्ट्रिंग
भाषा कोड-क्षेत्रीय कोड के फ़ॉर्मैट में भाषा स्ट्रिंग. इसमें क्षेत्र को छोड़ा जा सकता है. उदाहरण के लिए, en, en-AU, zh-CH.
LanguageUninstallOptions
किसी भाषा को अनइंस्टॉल करने के विकल्प.
प्रॉपर्टी
-
uninstallImmediately
बूलियन
अगर टीटीएस क्लाइंट चाहता है कि भाषा को तुरंत अनइंस्टॉल कर दिया जाए, तो यह वैल्यू सही होती है. इस पैरामीटर और अनुरोध करने वाले व्यक्ति की जानकारी के आधार पर, इंजन यह तय कर सकता है कि भाषा को कब अनइंस्टॉल करना है. अगर यह वैल्यू 'गलत है', तो यह तय करने के लिए कि ऐप्लिकेशन को कब अनइंस्टॉल करना है, अन्य शर्तों का इस्तेमाल किया जा सकता है. जैसे, हाल ही में ऐप्लिकेशन का इस्तेमाल.
SpeakOptions
tts.speak() तरीके के लिए तय किए गए विकल्प.
प्रॉपर्टी
-
लिंग
VoiceGender optional
Chrome 92 के बाद से काम नहीं करताजेंडर एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.
सिंथसाइज़्ड स्पीच के लिए आवाज़ का लिंग.
-
lang
string ज़रूरी नहीं है
सिंथेसिस के लिए इस्तेमाल की जाने वाली भाषा, भाषा-देश/इलाका के फ़ॉर्मैट में होनी चाहिए. उदाहरण: 'en', 'en-US', 'en-GB', 'zh-CN'.
-
पिच
number optional
बोलने की पिच 0 से 2 के बीच होनी चाहिए. इसमें ये दोनों भी शामिल हैं. यहां 0 का मतलब सबसे कम और 2 का मतलब सबसे ज़्यादा है. 1.0, इस आवाज़ की डिफ़ॉल्ट पिच के लिए इस्तेमाल किया जाता है.
-
दर
number optional
इस आवाज़ के लिए, डिफ़ॉल्ट रेट के हिसाब से बोलने की रफ़्तार. डिफ़ॉल्ट दर 1.0 होती है. आम तौर पर, यह 180 से 220 शब्द प्रति मिनट होती है. 2.0 का मतलब है कि वीडियो को दोगुनी रफ़्तार से चलाया जाएगा और 0.5 का मतलब है कि वीडियो को आधी रफ़्तार से चलाया जाएगा. इस वैल्यू के 0.1 और 10.0 के बीच होने की गारंटी है. इसमें ये दोनों वैल्यू भी शामिल हैं. जब कोई आवाज़, इस पूरी रेंज की दरों के साथ काम नहीं करती है, तो गड़बड़ी का मैसेज न दिखाएं. इसके बजाय, आवाज़ के हिसाब से दर को क्लिप करें.
-
voiceName
string ज़रूरी नहीं है
आवाज़ का नाम, जिसका इस्तेमाल सिंथेसिस के लिए करना है.
-
आवाज़
number optional
बोलने की आवाज़ की वैल्यू 0 से 1 के बीच होनी चाहिए. इसमें 0 सबसे कम और 1 सबसे ज़्यादा वैल्यू होती है. डिफ़ॉल्ट वैल्यू 1.0 होती है.
TtsClient
स्टेटस का अनुरोध करने वाले क्लाइंट के लिए आइडेंटिफ़ायर.
प्रॉपर्टी
-
id
स्ट्रिंग
भाषा मैनेज करने का अनुरोध करने वाला क्लाइंट. एक्सटेंशन के लिए, यह यूनीक एक्सटेंशन आईडी होता है. Chrome की सुविधाओं के लिए, यह सुविधा का ऐसा नाम है जिसे आसानी से पढ़ा जा सकता है.
-
सोर्स
अनुरोध करने वाला कौन है.
TtsClientSource
अनुरोध करने वाला कौन है.
Enum
"chromefeature"
"extension"
VoiceGender
जेंडर एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.
Enum
"male"
"female"
तरीके
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
इस फ़ंक्शन को इंजन तब कॉल करता है, जब कोई भाषा इंस्टॉल करने की कोशिश की जाती है और जब कोई भाषा अनइंस्टॉल की जाती है. इसे क्लाइंट से मिले स्टेटस के अनुरोध के जवाब में भी कहा जाता है. किसी आवाज़ को इंस्टॉल या अनइंस्टॉल करने पर, इंजन को ttsEngine.updateVoices को भी कॉल करना चाहिए, ताकि आवाज़ को रजिस्टर किया जा सके.
पैरामीटर
-
स्थिति
भाषा के इंस्टॉल होने की स्थिति.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
इस फ़ंक्शन को इंजन कॉल करता है, ताकि वह आवाज़ों की सूची को अपडेट कर सके. यह सूची, इस एक्सटेंशन के मेनिफ़ेस्ट में बताई गई किसी भी आवाज़ को बदल देती है.
पैरामीटर
-
आवाज़ें
TtsVoice[]
यह
tts.TtsVoiceऑब्जेक्ट का ऐरे है. इसमें स्पीच सिंथेसिस के लिए उपलब्ध आवाज़ों के बारे में जानकारी होती है.
इवेंट
onInstallLanguageRequest
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.ttsEngine.onSpeakWithAudioStream.addListener(
callback: function,
)
इस फ़ंक्शन को तब कॉल किया जाता है, जब उपयोगकर्ता tts.speak() को कॉल करता है और इस एक्सटेंशन के मेनिफ़ेस्ट में मौजूद कोई आवाज़, विकल्पों वाले ऑब्जेक्ट से मेल खाने वाली पहली आवाज़ होती है. यह ttsEngine.onSpeak से अलग है. इसमें Chrome, ऑडियो चलाने की सेवाएं उपलब्ध कराता है और टीटीएस इवेंट को मैनेज करता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
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
string ज़रूरी नहीं है
इस स्ट्रिंग में गड़बड़ी के बारे में जानकारी होती है.
-
-
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
-
अनुरोध करने वाला
-
lang
स्ट्रिंग
-
uninstallOptions
-