ब्यौरा
एक्सटेंशन का इस्तेमाल करके, लिखाई को बोली में बदलने वाले(टीटीएस) इंजन को लागू करने के लिए, 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
ऐसे पैरामीटर जिनमें ऑडियो बफ़र और उससे जुड़ा डेटा शामिल होता है.
प्रॉपर्टी
-
audioBuffer
ArrayBuffer
लिखाई को बोली में बदलने वाले इंजन का ऑडियो बफ़र. इसकी लंबाई, audioStreamOptions.bufferSize के हिसाब से होनी चाहिए.साथ ही, इसे audioStreamOptions.sampleRate पर मोनो के तौर पर और लीनियर पीसीएम, 32-बिट साइन वाले फ़्लोट के तौर पर एन्कोड किया जाना चाहिए. इसका मतलब है कि इसे JavaScript में Float32Array टाइप के तौर पर एन्कोड किया जाना चाहिए.
-
charIndex
number ज़रूरी नहीं
इस ऑडियो बफ़र से जुड़ा वर्ण इंडेक्स.
-
isLastBuffer
बूलियन ज़रूरी नहीं
अगर बोले गए टेक्स्ट के लिए यह ऑडियो बफ़र आखिरी है, तो True.
AudioStreamOptions
इसमें ऑडियो स्ट्रीम का वह फ़ॉर्मैट होता है जो इंजन से जनरेट होने की उम्मीद होती है.
प्रॉपर्टी
-
bufferSize
संख्या
ऑडियो बफ़र में सैंपल की संख्या.
-
sampleRate
संख्या
ऑडियो बफ़र में सैंपल रेट की उम्मीद.
LanguageInstallStatus
किसी आवाज़ के इंस्टॉल होने की स्थिति.
Enum
"notInstalled"
"installing"
"installed"
"failed"
LanguageStatus
किसी भाषा के इंस्टॉल होने की स्थिति.
प्रॉपर्टी
-
गड़बड़ी
स्ट्रिंग ज़रूरी नहीं
इंस्टॉलेशन से जुड़ी गड़बड़ियों के बारे में जानकारी. अगर भाषा इंस्टॉल नहीं हो पाती है, तो इस फ़ील्ड में अपने-आप जानकारी भर जाती है.
-
installStatus
इंस्टॉलेशन की स्थिति.
-
lang
स्ट्रिंग
भाषा कोड-क्षेत्र कोड के तौर पर भाषा स्ट्रिंग, जहां क्षेत्र को छोड़ा जा सकता है. उदाहरण के लिए, en, en-AU, zh-CH.
LanguageUninstallOptions
किसी भाषा को अनइंस्टॉल करने के विकल्प.
प्रॉपर्टी
-
uninstallImmediately
बूलियन
अगर लिखाई को बोली में बदलने की सुविधा देने वाले क्लाइंट को भाषा को तुरंत अनइंस्टॉल करना है, तो यह वैल्यू 'सही' होगी. इंजन इस पैरामीटर और अनुरोध करने वाले की जानकारी के आधार पर यह तय कर सकता है कि भाषा को अनइंस्टॉल करना है या नहीं. साथ ही, यह भी तय कर सकता है कि भाषा को कब अनइंस्टॉल करना है. अगर यह 'गलत है' पर सेट है, तो अनइंस्टॉल करने का समय तय करने के लिए, हाल ही में किए गए इस्तेमाल जैसी अन्य शर्तों का इस्तेमाल किया जा सकता है.
SpeakOptions
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 की सुविधाओं के लिए, यह सुविधा का ऐसा नाम होता है जिसे आसानी से पढ़ा जा सकता है.
-
source
अनुरोध करने वाले व्यक्ति का टाइप.
TtsClientSource
अनुरोध करने वाले व्यक्ति का टाइप.
Enum
"chromefeature"
"extension"
VoiceGender
लिंग के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.
Enum
"male"
"female"
तरीके
updateLanguage()
chrome.ttsEngine.updateLanguage(
status: LanguageStatus,
)
इंजन, भाषा इंस्टॉल करने की कोशिश करने और भाषा अनइंस्टॉल करने पर, इस फ़ंक्शन को कॉल करता है. क्लाइंट से स्टेटस के अनुरोध के जवाब में भी इसे कॉल किया जाता है. जब कोई आवाज़ इंस्टॉल या अनइंस्टॉल की जाती है, तो इंजन को आवाज़ को रजिस्टर करने के लिए, ttsEngine.updateVoices को भी कॉल करना चाहिए.
पैरामीटर
-
स्थिति
भाषा के इंस्टॉल होने की स्थिति.
updateVoices()
chrome.ttsEngine.updateVoices(
voices: TtsVoice[],
)
इंजन, अपनी आवाज़ों की सूची को अपडेट करने के लिए इसे कॉल करता है. यह सूची, इस एक्सटेंशन के मेनिफ़ेस्ट में बताई गई सभी आवाज़ों को बदल देती है.
पैरामीटर
-
आवाज़ें
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 ऑडियो चलाने की सेवाएं देता है और 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
-
अनुरोध करने वाला
-
lang
स्ट्रिंग
-
uninstallOptions
-