ब्यौरा
सिंथसाइज़ किए गए टेक्स्ट-टू-स्पीच (टीटीएस) को चलाने के लिए, chrome.tts
एपीआई का इस्तेमाल करें. इससे जुड़े ttsEngine
एपीआई के बारे में भी जानें. इसकी मदद से, एक्सटेंशन में स्पीच इंजन लागू किया जा सकता है.
Chrome, Windows (SAPI 5 का इस्तेमाल करके), Mac OS X, और ChromeOS पर यह सुविधा देता है. इसके लिए, ऑपरेटिंग सिस्टम की ओर से उपलब्ध कराई गई स्पीच सिंथेसिस की सुविधाओं का इस्तेमाल किया जाता है. सभी प्लैटफ़ॉर्म पर, उपयोगकर्ता ऐसे एक्सटेंशन इंस्टॉल कर सकता है जो खुद को स्पीच इंजन के तौर पर रजिस्टर करते हैं.
अनुमतियां
tts
कॉन्सेप्ट और इस्तेमाल
भाषण जनरेट करना
बोलने के लिए, अपने एक्सटेंशन से speak()
पर कॉल करें. उदाहरण के लिए:
chrome.tts.speak('Hello, world.');
बोलने की सुविधा को तुरंत बंद करने के लिए, बस stop()
को कॉल करें:
chrome.tts.stop();
आपके पास ऐसे विकल्प देने का विकल्प होता है जिनसे आवाज़ की अलग-अलग प्रॉपर्टी को कंट्रोल किया जा सकता है. जैसे, बोलने की स्पीड, पिच वगैरह. उदाहरण के लिए:
chrome.tts.speak('Hello, world.', {'rate': 2.0});
भाषा के बारे में जानकारी देने से, उस भाषा और क्षेत्र की बोली के हिसाब से सिंथेसाइज़र को चुना जा सकता है.
chrome.tts.speak('Hello, world.', {'lang': 'en-US', 'rate': 2.0});
डिफ़ॉल्ट रूप से, speak()
को कॉल करने पर, यह किसी भी चल रही स्पीच को बीच में रोक देता है और तुरंत बोलना शुरू कर देता है. यह पता लगाने के लिए कि कॉल से किसी काम में रुकावट आएगी या नहीं, isSpeaking()
को कॉल करें. इसके अलावा, enqueue
विकल्प का इस्तेमाल करके, इस जवाब को उन जवाबों की सूची में जोड़ा जा सकता है जिन्हें मौजूदा जवाब के खत्म होने के बाद बोला जाएगा.
chrome.tts.speak('Speak this first.'); chrome.tts.speak( 'Speak this next, when the first sentence is done.', {'enqueue': true});
सभी विकल्पों के बारे में पूरी जानकारी tts.speak()
में देखी जा सकती है. सभी स्पीच इंजन, सभी विकल्पों के साथ काम नहीं करेंगे.
गड़बड़ियों का पता लगाने और यह पक्का करने के लिए कि speak()
को सही तरीके से कॉल किया जा रहा है, एक कॉलबैक फ़ंक्शन पास करें. इसमें कोई आर्ग्युमेंट नहीं होता. कॉलबैक में, runtime.lastError
की जांच करें. इससे पता चलेगा कि कोई गड़बड़ी हुई है या नहीं.
chrome.tts.speak( utterance, options, function() { if (chrome.runtime.lastError) { console.log('Error: ' + chrome.runtime.lastError.message); } } );
इंजन के आवाज़ जनरेट करने से पहले ही, कॉलबैक तुरंत जवाब देता है. कॉल बैक का मकसद, टीटीएस एपीआई का इस्तेमाल करते समय सिंटैक्स से जुड़ी गड़बड़ियों के बारे में आपको सूचना देना है. इसका मकसद, स्पीच को सिंथेसाइज़ करने और आउटपुट करने की प्रोसेस में होने वाली सभी संभावित गड़बड़ियों का पता लगाना नहीं है. इन गड़बड़ियों को भी ठीक करने के लिए, आपको इवेंट लिसनर का इस्तेमाल करना होगा. इसके बारे में अगले सेक्शन में बताया गया है.
इवेंट सुनना
सिंथसाइज़ की गई स्पीच की स्थिति के बारे में रीयल-टाइम में ज़्यादा जानकारी पाने के लिए, speak()
के विकल्पों में एक इवेंट लिसनर पास करें. जैसे:
chrome.tts.speak( utterance, { onEvent: function(event) { console.log('Event ' + event.type + ' at position ' + event.charIndex); if (event.type == 'error') { console.log('Error: ' + event.errorMessage); } } }, callback );
हर इवेंट में, इवेंट टाइप, उच्चारण के हिसाब से मौजूदा स्पीच का वर्ण इंडेक्स, और गड़बड़ी वाले इवेंट के लिए, गड़बड़ी का वैकल्पिक मैसेज शामिल होता है. इवेंट के टाइप ये हैं:
'start'
: इंजन ने बोले गए शब्द को बोलना शुरू कर दिया है.'word'
: शब्द की सीमा पूरी हो गई है.event.charIndex
का इस्तेमाल करके, मौजूदा स्पीच की पोजीशन का पता लगाएं.'sentence'
: वाक्य की सीमा पूरी हो गई है.event.charIndex
का इस्तेमाल करके, यह पता लगाया जाता है कि मौजूदा समय में आवाज़ की स्थिति क्या है.'marker'
: एसएसएमएल मार्कर पर पहुंच गया है.event.charIndex
का इस्तेमाल करके, मौजूदा स्पीच की पोजीशन का पता लगाएं.'end'
: इंजन ने जवाब देना खत्म कर दिया है.'interrupted'
: इस बातचीत के दौरान,speak()
याstop()
को किसी दूसरी कॉल का अनुरोध किया गया था. इसलिए, यह बातचीत पूरी नहीं हो सकी.'cancelled'
: इस उच्चारण को कतार में रखा गया था. हालांकि, बाद मेंspeak()
याstop()
को किए गए किसी अन्य कॉल की वजह से इसे रद्द कर दिया गया. इसलिए, इसे कभी बोला नहीं गया.'error'
: इंजन से जुड़ी कोई गड़बड़ी हुई है. इसलिए, इस अटरेंस को नहीं बोला जा सकता. ज़्यादा जानकारी के लिए,event.errorMessage
देखें.
इवेंट टाइप में से चार—'end'
, 'interrupted'
, 'cancelled'
, और 'error'
—फ़ाइनल हैं. इनमें से कोई एक इवेंट मिलने के बाद, यह अटरेंस अब नहीं बोलेगा. साथ ही, इस अटरेंस से कोई नया इवेंट नहीं मिलेगा.
ऐसा हो सकता है कि कुछ आवाज़ें, सभी तरह के इवेंट के लिए काम न करें. यह भी हो सकता है कि कुछ आवाज़ें, किसी भी इवेंट के लिए काम न करें. अगर आपको किसी ऐसी आवाज़ का इस्तेमाल नहीं करना है जो कुछ इवेंट भेजती है, तो requiredEventTypes
सदस्य के विकल्पों वाले ऑब्जेक्ट में, अपनी ज़रूरत के इवेंट पास करें. इसके अलावा, getVoices()
का इस्तेमाल करके ऐसी आवाज़ चुनी जा सकती है जो आपकी ज़रूरतों को पूरा करती हो. इन दोनों के बारे में यहां बताया गया है.
एसएसएमएल मार्कअप
इस एपीआई में इस्तेमाल किए गए शब्दों में, स्पीच सिंथेसिस मार्कअप लैंग्वेज (एसएसएमएल) का इस्तेमाल करके मार्कअप शामिल किया जा सकता है. एसएसएमएल का इस्तेमाल करने पर, speak()
का पहला आर्ग्युमेंट, पूरा एसएसएमएल दस्तावेज़ होना चाहिए. इसमें एक्सएमएल हेडर और टॉप-लेवल <speak>
टैग होना चाहिए, न कि दस्तावेज़ का कोई हिस्सा.
उदाहरण के लिए:
chrome.tts.speak( '<?xml version="1.0"?>' + '<speak>' + ' The <emphasis>second</emphasis> ' + ' word of this sentence was emphasized.' + '</speak>' );
ऐसा हो सकता है कि सभी स्पीच इंजन, सभी एसएसएमएल टैग के साथ काम न करें. यह भी हो सकता है कि कुछ इंजन एसएसएमएल के साथ काम न करें. हालांकि, सभी इंजन को ऐसे एसएसएमएल को अनदेखा करना होगा जिनके साथ वे काम नहीं करते. साथ ही, उन्हें टेक्स्ट को पढ़ना होगा.
कोई आवाज़ चुनें
डिफ़ॉल्ट रूप से, Chrome आपकी बोली गई हर बात के लिए सबसे सही आवाज़ चुनता है. यह आवाज़, भाषा के हिसाब से चुनी जाती है. ज़्यादातर Windows, Mac OS X, और ChromeOS सिस्टम पर, ऑपरेटिंग सिस्टम की मदद से टेक्स्ट को बोलकर सुनाने की सुविधा मिलती है. इस सुविधा के ज़रिए, किसी भी टेक्स्ट को कम से कम एक भाषा में बोलकर सुनाया जा सकता है. कुछ उपयोगकर्ताओं के पास अलग-अलग आवाज़ों का विकल्प उपलब्ध हो सकता है. ये आवाज़ें, उनके ऑपरेटिंग सिस्टम और अन्य Chrome एक्सटेंशन के ज़रिए लागू किए गए स्पीच इंजन से मिलती हैं. ऐसे मामलों में, कस्टम कोड लागू किया जा सकता है. इससे सही आवाज़ चुनी जा सकती है या उपयोगकर्ता को विकल्पों की सूची दिखाई जा सकती है.
सभी आवाज़ों की सूची पाने के लिए, getVoices()
को कॉल करें. साथ ही, इसे एक ऐसा फ़ंक्शन पास करें जो TtsVoice
ऑब्जेक्ट की एक अरे को अपने तर्क के तौर पर स्वीकार करता हो:
chrome.tts.getVoices( function(voices) { for (var i = 0; i < voices.length; i++) { console.log('Voice ' + i + ':'); console.log(' name: ' + voices[i].voiceName); console.log(' lang: ' + voices[i].lang); console.log(' extension id: ' + voices[i].extensionId); console.log(' event types: ' + voices[i].eventTypes); } } );
टाइप
EventType
Enum
"start"
"end"
"word"
"sentence"
"marker"
"interrupted"
"cancelled"
"error"
"pause"
"resume"
TtsEvent
यह टीटीएस इंजन का एक इवेंट है. इसका इस्तेमाल, बोले गए शब्दों की स्थिति के बारे में बताने के लिए किया जाता है.
प्रॉपर्टी
- charIndex
number ज़रूरी नहीं
बोलने के क्रम में मौजूद वर्ण का इंडेक्स. शब्द इवेंट के लिए, इवेंट एक शब्द के खत्म होने पर और अगले शब्द के शुरू होने से पहले ट्रिगर होता है.
charIndex
, टेक्स्ट में उस जगह को दिखाता है जहां से अगले शब्द का उच्चारण शुरू होगा. - errorMessage
string ज़रूरी नहीं है
अगर इवेंट टाइप
error
है, तो गड़बड़ी की जानकारी. - लंबाई
number ज़रूरी नहीं
Chrome 74 या इसके बाद का वर्शनउच्चारण के अगले हिस्से की अवधि. उदाहरण के लिए,
word
इवेंट में, यह उस शब्द की लंबाई होती है जिसे अगली बार बोला जाएगा. अगर स्पीच इंजन इसे सेट नहीं करता है, तो इसे -1 पर सेट किया जाएगा. - टाइप
टाइप
start
हो सकता है, जैसे ही स्पीच शुरू होती है,word
जब कोई शब्द खत्म होता है,sentence
जब कोई वाक्य खत्म होता है,marker
जब कोई SSML मार्क एलिमेंट खत्म होता है,end
जब उच्चारण खत्म होता है,interrupted
जब उच्चारण खत्म होने से पहले ही रुक जाता है या उसमें रुकावट आती है,cancelled
जब इसे सिंथेसाइज़ होने से पहले ही कतार से हटा दिया जाता है याerror
जब कोई अन्य गड़बड़ी होती है. बोलने की सुविधा को रोकने पर,pause
इवेंट तब ट्रिगर होता है, जब किसी खास शब्द को बीच में रोका जाता है. वहीं,resume
इवेंट तब ट्रिगर होता है, जब किसी शब्द को फिर से शुरू किया जाता है. ध्यान दें कि अगर बातचीत के बीच में आवाज़ को रोका जाता है, तो हो सकता है कि 'रोकें' और 'फिर से शुरू करें' इवेंट ट्रिगर न हों.
TtsOptions
टीटीएस इंजन के लिए, बोली के विकल्प.
प्रॉपर्टी
- desiredEventTypes
string[] ज़रूरी नहीं है
टीएसएस के इवेंट टाइप, जिन्हें सुनने में आपकी दिलचस्पी है. अगर यह पैरामीटर मौजूद नहीं है, तो सभी तरह के इवेंट भेजे जा सकते हैं.
- enqueue
बूलियन ज़रूरी नहीं है
अगर यह वैल्यू सही है, तो टीटीएस के पहले से चालू होने पर, इस उच्चारण को लाइन में लगाता है. अगर यह वैल्यू गलत है (डिफ़ॉल्ट रूप से), तो यह नई आवाज़ में बोलने से पहले, मौजूदा आवाज़ को रोक देता है और स्पीच क्यू को फ़्लश कर देता है.
- extensionId
string ज़रूरी नहीं है
अगर आपको इस्तेमाल किए जाने वाले स्पीच इंजन का एक्सटेंशन आईडी पता है, तो उसे यहां डालें.
- लिंग
VoiceGender optional
Chrome 77 से बंद कर दिया गया हैलिंग के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.
सिंथसाइज़्ड स्पीच के लिए आवाज़ का लिंग.
- 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 से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति नहीं है. हालांकि, कई आवाज़ों के लिए, बोलने की कम से कम और ज़्यादा से ज़्यादा दर को और भी सीमित किया जाएगा. उदाहरण के लिए, अगर आपने 3.0 से ज़्यादा वैल्यू तय की है, तो भी कोई आवाज़ सामान्य से तीन गुना ज़्यादा तेज़ी से नहीं बोलेगी.
- requiredEventTypes
string[] ज़रूरी नहीं है
आवाज़ को टीटीएस इवेंट टाइप के साथ काम करना चाहिए.
- voiceName
string ज़रूरी नहीं है
आवाज़ का नाम, जिसका इस्तेमाल सिंथेसिस के लिए करना है. अगर इसे खाली छोड़ा जाता है, तो उपलब्ध किसी भी आवाज़ का इस्तेमाल किया जाता है.
- आवाज़
number ज़रूरी नहीं
बोलने की आवाज़ 0 और 1 के बीच होनी चाहिए. इसमें 0 सबसे कम और 1 सबसे ज़्यादा होता है. इसकी डिफ़ॉल्ट वैल्यू 1.0 होती है.
- onEvent
void ज़रूरी नहीं है
इस फ़ंक्शन को उन इवेंट के साथ कॉल किया जाता है जो बोले गए शब्दों को प्रोसेस करने के दौरान होते हैं.
onEvent
फ़ंक्शन इस तरह दिखता है:(event: TtsEvent) => {...}
- इवेंट
टेक्स्ट-टू-स्पीच इंजन से अपडेट इवेंट, जो इस उच्चारण की स्थिति के बारे में बताता है.
-
TtsVoice
यह बोली-संश्लेषण के लिए उपलब्ध किसी आवाज़ की जानकारी देता है.
प्रॉपर्टी
- eventTypes
EventType[] ज़रूरी नहीं है
सभी तरह के कॉलबैक इवेंट, जिन्हें यह आवाज़ भेज सकती है.
- extensionId
string ज़रूरी नहीं है
आवाज़ देने वाले एक्सटेंशन का आईडी.
- लिंग
VoiceGender optional
Chrome 70 से बंद कर दिया गया हैलिंग के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.
इस आवाज़ का लिंग.
- lang
string ज़रूरी नहीं है
यह आवाज़ जिस भाषा में उपलब्ध है उसे भाषा-क्षेत्र के फ़ॉर्मैट में दिखाया जाता है. उदाहरण: 'en', 'en-US', 'en-GB', 'zh-CN'.
- रिमोट
बूलियन ज़रूरी नहीं है
अगर यह वैल्यू सही है, तो सिंथेसिस इंजन एक रिमोट नेटवर्क संसाधन है. इसमें ज़्यादा समय लग सकता है और बैंडविड्थ का शुल्क लग सकता है.
- voiceName
string ज़रूरी नहीं है
आवाज़ का नाम.
VoiceGender
लिंग एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाता है.
Enum
"male"
"female"
तरीके
getVoices()
chrome.tts.getVoices(): Promise<TtsVoice[]>
इससे सभी उपलब्ध आवाज़ों की एक सूची मिलती है.
रिटर्न
-
Promise<TtsVoice[]>
Chrome 101 या इसके बाद के वर्शन
isSpeaking()
chrome.tts.isSpeaking(): Promise<boolean>
इस कुकी से यह पता चलता है कि इंजन फ़िलहाल बोल रहा है या नहीं. Mac OS X पर, सिस्टम स्पीच इंजन के बोलने पर नतीजा सही होता है. भले ही, Chrome ने स्पीच शुरू न की हो.
रिटर्न
-
Promise<boolean>
Chrome 101 या इसके बाद के वर्शन
pause()
chrome.tts.pause(): void
लिखे हुए को बोली में बदलने की सुविधा को रोकता है. ऐसा हो सकता है कि यह सुविधा किसी शब्द के बीच में रुक जाए. कॉल करने पर, बोलकर सुनाने की सुविधा फिर से शुरू हो जाएगी.
resume()
chrome.tts.resume(): void
अगर बोलने की सुविधा को रोका गया था, तो यह सुविधा वहीं से फिर से शुरू हो जाती है जहां इसे रोका गया था.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
): Promise<void>
लिखाई को बोली में बदलने वाले इंजन का इस्तेमाल करके, टेक्स्ट को बोलता है.
पैरामीटर
- बोले गए शब्द
स्ट्रिंग
बोलने के लिए टेक्स्ट. यह सादा टेक्स्ट या पूरा और सही तरीके से लिखा गया एसएसएमएल दस्तावेज़ होना चाहिए. जो स्पीच इंजन एसएसएमएल के साथ काम नहीं करते वे टैग हटा देंगे और टेक्स्ट को बोलकर सुनाएंगे. टेक्स्ट में ज़्यादा से ज़्यादा 32,768 वर्ण हो सकते हैं.
- विकल्प
TtsOptions ज़रूरी नहीं है
बोलने के विकल्प.
रिटर्न
-
Promise<void>
Chrome 101 या इसके बाद के वर्शन
stop()
chrome.tts.stop(): void
इससे ChromeVox को बोलने से रोका जा सकता है. साथ ही, यह उन सभी शब्दों को हटा देता है जिन्हें ChromeVox को बोलना है. इसके अलावा, अगर बोलने की सुविधा को रोका गया था, तो अब इसे अगली बार बोलने के लिए चालू कर दिया जाएगा.
इवेंट
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
इस कॉलबैक को तब कॉल किया जाता है, जब getVoices से मिलने वाले tts.TtsVoice
की सूची में बदलाव होता है.
पैरामीटर
- कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:() => void