ब्यौरा
एक्सटेंशन का इस्तेमाल करके, लिखाई को बोली में बदलने वाले(टीटीएस) इंजन को लागू करने के लिए, 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
ऐसे पैरामीटर जिनमें ऑडियो बफ़र और उससे जुड़ा डेटा शामिल होता है.
प्रॉपर्टी
- 
    audioBufferArrayBuffer लिखाई को बोली में बदलने वाले इंजन का ऑडियो बफ़र. इसकी लंबाई, audioStreamOptions.bufferSize के हिसाब से होनी चाहिए.साथ ही, इसे audioStreamOptions.sampleRate पर मोनो के तौर पर और लीनियर पीसीएम, 32-बिट साइन वाले फ़्लोट के तौर पर एन्कोड किया जाना चाहिए. इसका मतलब है कि इसे JavaScript में Float32Array टाइप के तौर पर एन्कोड किया जाना चाहिए. 
- 
    charIndexnumber ज़रूरी नहीं इस ऑडियो बफ़र से जुड़ा वर्ण इंडेक्स. 
- 
    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,
): 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 ऑडियो चलाने की सेवाएं देता है और 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
 
-