ब्यौरा
किसी एक्सटेंशन का इस्तेमाल करके, लिखे गए शब्दों को सुनने की सुविधा(टीटीएस) वाले इंजन को लागू करने के लिए, 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 सूची में मौजूद आवाज़ों को शेड्यूल नहीं कर पाएगा.
लोड होने के बाद, कोई एक्सटेंशन browser.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)
};
browser.ttsEngine.onSpeak.addListener(speakListener);
browser.ttsEngine.onStop.addListener(stopListener);
किसी स्पीच रिक्वेस्ट को एक्सटेंशन पर भेजना है या नहीं, यह इस बात पर निर्भर करता है कि एक्सटेंशन अपने मेनिफ़ेस्ट में, दी गई आवाज़ के पैरामीटर के साथ काम करता है या नहीं. साथ ही, उसने onSpeak और onStop के लिए लिसनर रजिस्टर किए हैं या नहीं. दूसरे शब्दों में, ऐसा कोई तरीका नहीं है जिससे एक्सटेंशन को बोली का अनुरोध मिले और वह डाइनैमिक तौर पर यह तय कर सके कि उसे मैनेज करना है या नहीं.
टाइप
AudioBuffer
ऑडियो बफ़र और उससे जुड़ा डेटा शामिल करने वाले पैरामीटर.
प्रॉपर्टी
-
audioBuffer
ArrayBuffer
लिखे गए शब्दों को सुनने की सुविधा के इंजन से मिला ऑडियो बफ़र. इसकी लंबाई audioStreamOptions.bufferSize के बराबर होनी चाहिए.साथ ही, इसे audioStreamOptions.sampleRate पर मोनो के तौर पर और लीनियर पीसीएम, 32-बिट साइन किए गए फ़्लोट के तौर पर एन्कोड किया जाना चाहिए. इसका मतलब है कि JavaScript में Float32Array टाइप.
-
charIndex
number ज़रूरी नहीं
इस ऑडियो बफ़र से जुड़ा वर्ण इंडेक्स.
-
isLastBuffer
बूलियन ज़रूरी नहीं
अगर यह ऑडियो बफ़र, बोले जा रहे टेक्स्ट के लिए आखिरी है, तो True.
AudioStreamOptions
इसमें ऑडियो स्ट्रीम का वह फ़ॉर्मैट शामिल होता है जो किसी इंजन से जनरेट होने की उम्मीद होती है.
प्रॉपर्टी
-
bufferSize
संख्या
ऑडियो बफ़र में मौजूद सैंपल की संख्या.
-
sampleRate
संख्या
ऑडियो बफ़र में सैंपल रेट.
LanguageInstallStatus
आवाज़ के इंस्टॉल होने की स्थिति.
Enum
"notInstalled"
"installing"
"installed"
"failed"
LanguageStatus
किसी भाषा के इंस्टॉल होने की स्थिति.
प्रॉपर्टी
-
गड़बड़ी
string ज़रूरी नहीं
इंस्टॉल न हो पाने की वजहों के बारे में जानकारी. अगर भाषा इंस्टॉल नहीं हो पाती है, तो यह विकल्प अपने-आप भर जाता है.
-
installStatus
इंस्टॉल किए जाने की स्थिति.
-
lang
स्ट्रिंग
भाषा की स्ट्रिंग, भाषा कोड-क्षेत्र कोड के फ़ॉर्मैट में होती है. इसमें क्षेत्र को छोड़ा जा सकता है. उदाहरण के लिए, en, en-AU, zh-CH.
LanguageUninstallOptions
किसी भाषा को अनइंस्टॉल करने के विकल्प.
प्रॉपर्टी
-
uninstallImmediately
बूलियन
अगर टीटीएस क्लाइंट चाहता है कि भाषा को तुरंत अनइंस्टॉल किया जाए, तो वैल्यू true होगी. इस पैरामीटर और अनुरोध करने वाले की जानकारी के आधार पर, इंजन यह तय कर सकता है कि भाषा को अनइंस्टॉल करना है या नहीं. इसके अलावा, यह भी तय कर सकता है कि भाषा को कब अनइंस्टॉल करना है. अगर इसे 'गलत है' पर सेट किया जाता है, तो ऐप्लिकेशन को अनइंस्टॉल करने का समय तय करने के लिए, अन्य शर्तों का इस्तेमाल किया जा सकता है. जैसे, हाल ही में इस्तेमाल किया गया ऐप्लिकेशन.
SpeakOptions
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 की सुविधाओं के लिए, यह सुविधा का ऐसा नाम होता है जिसे आसानी से पढ़ा जा सकता है.
-
सोर्स
अनुरोध करने वाले व्यक्ति का टाइप.
TtsClientSource
अनुरोध करने वाले व्यक्ति का टाइप.
Enum
"chromefeature"
"extension"
VoiceGender
लैंगिक जानकारी के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.
Enum
"male"
"female"
तरीके
updateLanguage()
browser.ttsEngine.updateLanguage(
status: LanguageStatus,
): void
इसे इंजन तब कॉल करता है, जब कोई भाषा इंस्टॉल करने की कोशिश की जाती है और जब कोई भाषा अनइंस्टॉल की जाती है. क्लाइंट से स्टेटस के अनुरोध के जवाब में भी कॉल किया जाता है. जब कोई आवाज़ इंस्टॉल या अनइंस्टॉल की जाती है, तो इंजन को आवाज़ को रजिस्टर करने के लिए ttsEngine.updateVoices को भी कॉल करना चाहिए.
पैरामीटर
-
स्थिति
भाषा के इंस्टॉल होने की स्थिति.
updateVoices()
browser.ttsEngine.updateVoices(
voices: TtsVoice[],
): void
इंजन की आवाज़ों की सूची को अपडेट करने के लिए, इंजन इसे कॉल करता है. यह सूची, इस एक्सटेंशन के मेनिफ़ेस्ट में बताई गई सभी आवाज़ों को बदल देती है.
पैरामीटर
-
आवाज़ें
TtsVoice[]
tts.TtsVoiceऑब्जेक्ट का ऐरे, जो स्पीच सिंथेसिस के लिए उपलब्ध आवाज़ों को दिखाता है.
इवेंट
onInstallLanguageRequest
browser.ttsEngine.onInstallLanguageRequest.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब कोई टीटीएस क्लाइंट नई भाषा इंस्टॉल करने का अनुरोध करता है. इंजन को भाषा डाउनलोड और इंस्टॉल करने की कोशिश करनी चाहिए. साथ ही, नतीजे के साथ ttsEngine.updateLanguage को कॉल करना चाहिए. इंजन को नई आवाज़ों को रजिस्टर करने के लिए, ttsEngine.updateVoices को भी कॉल करना चाहिए.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(requestor: TtsClient, lang: string) => void
-
अनुरोध करने वाला
-
lang
स्ट्रिंग
-
onLanguageStatusRequest
browser.ttsEngine.onLanguageStatusRequest.addListener(
callback: function,
)
यह तब ट्रिगर होता है, जब कोई टीटीएस क्लाइंट किसी भाषा के इंस्टॉल होने की स्थिति का अनुरोध करता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(requestor: TtsClient, lang: string) => void
-
अनुरोध करने वाला
-
lang
स्ट्रिंग
-
onPause
browser.ttsEngine.onPause.addListener(
callback: function,
)
ज़रूरी नहीं: अगर कोई इंजन, इवेंट को रोकने की सुविधा के साथ काम करता है, तो उसे मौजूदा समय में बोले जा रहे शब्द को रोकना चाहिए. ऐसा तब तक करना चाहिए, जब तक उसे इवेंट को फिर से शुरू करने या रोकने का निर्देश न मिले. ध्यान दें कि स्टॉप इवेंट से, रोकी गई स्थिति भी हट जानी चाहिए.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:() => void
onResume
browser.ttsEngine.onResume.addListener(
callback: function,
)
ज़रूरी नहीं: अगर कोई इंजन, इवेंट को रोकने की सुविधा के साथ काम करता है, तो उसे इवेंट को फिर से शुरू करने की सुविधा के साथ भी काम करना चाहिए. इससे, मौजूदा वाक्य को बोलना जारी रखा जा सकता है. ध्यान दें कि स्टॉप इवेंट से, रोकी गई स्थिति भी हट जानी चाहिए.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:() => void
onSpeak
browser.ttsEngine.onSpeak.addListener(
callback: function,
)
यह तब कॉल किया जाता है, जब उपयोगकर्ता tts.speak() को कॉल करता है और इस एक्सटेंशन के मेनिफ़ेस्ट में मौजूद आवाज़ों में से कोई एक आवाज़, विकल्पों के ऑब्जेक्ट से सबसे पहले मैच होती है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(utterance: string, options: SpeakOptions, sendTtsEvent: function) => void
-
utterance
स्ट्रिंग
-
विकल्प
-
sendTtsEvent
फ़ंक्शन
sendTtsEventपैरामीटर कुछ ऐसा दिखता है:(event: tts.TtsEvent) => void
-
इवेंट
लिखे गए शब्दों को सुनने की सुविधा वाले इंजन से मिला इवेंट, जो इस उच्चारण की स्थिति बताता है.
-
-
onSpeakWithAudioStream
browser.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+ browser.* Chrome 148 सेsendErrorपैरामीटर कुछ ऐसा दिखता है:(errorMessage?: string) => void
-
errorMessage
string ज़रूरी नहीं
गड़बड़ी के बारे में बताने वाली स्ट्रिंग.
-
-
onStop
browser.ttsEngine.onStop.addListener(
callback: function,
)
यह तब ट्रिगर होता है, जब tts.stop को कॉल किया जाता है और यह एक्सटेंशन बोल रहा हो. अगर किसी एक्सटेंशन को onStop के लिए कॉल मिलता है और बोली पहले ही बंद हो चुकी है, तो उसे कुछ नहीं करना चाहिए (कोई गड़बड़ी नहीं दिखानी चाहिए). अगर बोली को रोका गया है, तो इससे रोकी गई स्थिति रद्द हो जाएगी.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:() => void
onUninstallLanguageRequest
browser.ttsEngine.onUninstallLanguageRequest.addListener(
callback: function,
)
यह तब ट्रिगर होता है, जब टीटीएस क्लाइंट यह बताता है कि अब किसी भाषा की ज़रूरत नहीं है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(requestor: TtsClient, lang: string, uninstallOptions: LanguageUninstallOptions) => void
-
अनुरोध करने वाला
-
lang
स्ट्रिंग
-
uninstallOptions
-