ब्यौरा
लिखाई को बोली में बदलने की सुविधा (TTS) चलाने के लिए, chrome.tts
API का इस्तेमाल करें. इससे जुड़ा ttsEngine
एपीआई भी देखें. इससे किसी एक्सटेंशन को स्पीच इंजन लागू करने की अनुमति मिलती है.
अनुमतियां
tts
खास जानकारी
Chrome, Windows (SAPI 5 का इस्तेमाल करके), Mac OS X, और ChromeOS पर बोली को बोली में बदलने की सुविधा देता है. इसके लिए, ऑपरेटिंग सिस्टम में मौजूद बोली को बोली में बदलने की सुविधा का इस्तेमाल किया जाता है. सभी प्लैटफ़ॉर्म पर, उपयोगकर्ता ऐसे एक्सटेंशन इंस्टॉल कर सकता है जो खुद को, बोली के वैकल्पिक इंजन के तौर पर रजिस्टर कर सकते हैं.
बातचीत जनरेट हो रही है
बोलने के लिए अपने एक्सटेंशन से 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>
टैग वाला पूरा SSML दस्तावेज़ होना चाहिए. यह दस्तावेज़ का फ़्रैगमेंट नहीं होना चाहिए.
उदाहरण के लिए:
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
"end"
TtsEvent
किसी बातचीत की स्थिति के बारे में बताने के लिए, टीटीएस इंजन से मिला इवेंट.
प्रॉपर्टी
-
charIndex
नंबर ज़रूरी नहीं
बातचीत में मौजूदा वर्ण का इंडेक्स. वर्ड इवेंट के लिए, इवेंट एक शब्द के आखिर में और अगले शब्द की शुरुआत से पहले सक्रिय होता है.
charIndex
, बोले जाने वाले अगले शब्द की शुरुआत में टेक्स्ट के एक पॉइंट को दिखाता है. -
errorMessage
स्ट्रिंग ज़रूरी नहीं
गड़बड़ी की जानकारी, अगर इवेंट टाइप
error
है. -
length
नंबर ज़रूरी नहीं
Chrome 74 और इसके बाद के वर्शनबातचीत के अगले हिस्से की लंबाई. उदाहरण के लिए,
word
इवेंट में, यह आगे बोले जाने वाले शब्द की लंबाई है. अगर बोली इंजन ने इसे सेट नहीं किया है, तो इसे -1 पर सेट किया जाएगा. -
टाइप
स्पीच शुरू होते ही टाइप
start
हो सकता है,word
शब्द की सीमा तक पहुंचने पर,sentence
जब वाक्य की सीमा तक पहुंचा गया हो,marker
जब एसएसएमएल मार्क एलिमेंट तक पहुंचा गया हो,end
जब बातचीत खत्म हो जाती है,end
जब बातचीत खत्म हो जाती है,interrupted
जब बातचीत बंद हो जाती है या खत्म होने से पहले रुक जाती है,cancelled
को संश्लेषित करने से पहले, सूची से हटाने पर या कोई दूसरी गड़बड़ी होने परerror
. स्पीच को रोकने के दौरान, अगर किसी खास वाक्य को बीच में रोक दिया जाता है, तोpause
इवेंट ट्रिगर होता है. साथ ही, अगर किसी बातचीत को बातचीत फिर से शुरू किया जाता है, तोresume
इवेंट ट्रिगर होता है. ध्यान दें कि अगर बातचीत को बोलने के बीच में रोका जाता है, तो हो सकता है कि इवेंट रोकें और फिर से शुरू न करें.
TtsOptions
टीटीएस इंजन के लिए बोली के विकल्प.
प्रॉपर्टी
-
desiredEventTypes
स्ट्रिंग[] ज़रूरी नहीं है
टीटीएस इवेंट के टाइप, जिन्हें आपको सुनना है. अगर यह जानकारी मौजूद नहीं है, तो सभी तरह के इवेंट भेजे जा सकते हैं.
-
एन्क्यू
बूलियन ज़रूरी नहीं
अगर सही है, तो यह वाक्य तब शामिल किया जाता है, जब टीटीएस पहले से जारी हो. अगर गलत (डिफ़ॉल्ट) है, तो मौजूदा स्पीच में रुकावट आती है और इस नए उच्चारण को बोलने से पहले, स्पीच की सूची को मिटा दिया जाता है.
-
extensionId
स्ट्रिंग ज़रूरी नहीं
अगर पता हो, तो स्पीच इंजन का इस्तेमाल करने के लिए एक्सटेंशन आईडी.
-
gender
VoiceGender ज़रूरी नहीं
Chrome 77 के बाद से अब सेवा में नहीं हैजेंडर के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.
संश्लेषित बोली के लिए आवाज़ का लिंग.
-
lang
स्ट्रिंग ज़रूरी नहीं
language-region के रूप में, संश्लेषण के लिए इस्तेमाल की जाने वाली भाषा. उदाहरण: 'en', 'en-US', 'en-GB', 'zh-CN'.
-
पिच
नंबर ज़रूरी नहीं
पिच की वैल्यू 0 से 2 के बीच होती है, जिसमें 0 का मतलब सबसे कम और 2 का मतलब सबसे ज़्यादा होता है. 1.0, आवाज़ की डिफ़ॉल्ट पिच से मेल खाता है.
-
दर
नंबर ज़रूरी नहीं
इस आवाज़ के लिए, डिफ़ॉल्ट ऑडियो की तुलना में बोलने की दर. डिफ़ॉल्ट दर 1.0 है, आम तौर पर हर मिनट करीब 180 से 220 शब्द. 2.0, दुगुनी तेज़ और 0.5 शब्द के मुकाबले आधा होता है. अगर वैल्यू 0.1 या 10.0 से कम हो, तो इसकी अनुमति नहीं है. हालांकि, कई आवाज़ें कम से कम और ज़्यादा से ज़्यादा दरों को सीमित कर सकती हैं. उदाहरण के लिए, हो सकता है कि कोई खास आवाज़, असल में सामान्य से तीन गुना से ज़्यादा तेज़ न भी बोल पाए, भले ही आपने 3.0 से बड़ी वैल्यू क्यों न दी हो.
-
requiredEventTypes
स्ट्रिंग[] ज़रूरी नहीं है
टीटीएस इवेंट के टाइप, इन इवेंट टाइप के साथ काम करते हैं.
-
voiceName
स्ट्रिंग ज़रूरी नहीं
बोली को लेख में बदलने के लिए इस्तेमाल की जाने वाली आवाज़ का नाम. खाली होने पर, किसी भी उपलब्ध आवाज़ का इस्तेमाल किया जाता है.
-
आवाज़
नंबर ज़रूरी नहीं
आवाज़ का स्तर 0 से 1 के बीच होता है. इसमें 0 का मतलब सबसे कम और 1 का मतलब सबसे ज़्यादा होता है और इसका डिफ़ॉल्ट मान 1.0 होता है.
-
onEvent
अमान्य ज़रूरी नहीं
इस फ़ंक्शन को उन इवेंट के साथ कॉल किया जाता है जो बोले गए शब्दों को बोलने की प्रोसेस के दौरान होते हैं.
onEvent
फ़ंक्शन ऐसा दिखता है:(event: TtsEvent) => {...}
-
इवेंट
लिखाई को बोली में बदलने के इंजन का अपडेट इवेंट, जो इस उच्चारण की स्थिति के बारे में बताता है.
-
TtsVoice
बोली को लेख में बदलने की सुविधा के लिए उपलब्ध आवाज़ का ब्यौरा.
प्रॉपर्टी
-
eventTypes
EventType[] ज़रूरी नहीं
इस आवाज़ से भेजे जा सकने वाले सभी कॉलबैक इवेंट टाइप.
-
extensionId
स्ट्रिंग ज़रूरी नहीं
यह आवाज़ देने वाले एक्सटेंशन का आईडी.
-
gender
VoiceGender ज़रूरी नहीं
Chrome 70 के बाद से अब सेवा में नहीं हैजेंडर के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाएगा.
इस आवाज़ की लैंगिक जानकारी.
-
lang
स्ट्रिंग ज़रूरी नहीं
इस आवाज़ में इस्तेमाल की जा सकने वाली भाषा, भाषा-क्षेत्र में होनी चाहिए. उदाहरण: 'en', 'en-US', 'en-GB', 'zh-CN'.
-
रिमोट जॉब
बूलियन ज़रूरी नहीं
सही होने पर, सिंथेसिस इंजन एक रिमोट नेटवर्क रिसॉर्स है. इसमें इंतज़ार का समय ज़्यादा हो सकता है और इससे बैंडविथ पर होने वाला खर्च भी बढ़ सकता है.
-
voiceName
स्ट्रिंग ज़रूरी नहीं
आवाज़ का नाम.
VoiceGender
'लिंग' के इस्तेमाल पर रोक लगा दी गई है और इसे अनदेखा कर दिया जाता है.
Enum
तरीके
getVoices()
chrome.tts.getVoices(
callback?: function,
)
यहां सभी उपलब्ध आवाज़ों का कलेक्शन मिलता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(voices: TtsVoice[]) => void
-
आवाज़ें
TtsVoice[]
स्पीच सिंथेसिस के लिए उपलब्ध आवाज़ों को दिखाने वाले
tts.TtsVoice
ऑब्जेक्ट का कलेक्शन.
-
लौटाए गए प्रॉडक्ट
-
Promise<TtsVoice[]>
Chrome 101 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.
isSpeaking()
chrome.tts.isSpeaking(
callback?: function,
)
यह जांचता है कि इंजन फ़िलहाल बोल रहा है या नहीं. Mac OS X पर, जब भी सिस्टम बोली इंजन बोल रहा होता है, तब नतीजा सही होता है, भले ही बोली Chrome ने शुरू न की हो.
पैरामीटर
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(speaking: boolean) => void
-
बोलना
boolean
अगर बोलें, तो सही है, नहीं तो गलत है.
-
लौटाए गए प्रॉडक्ट
-
Promise<boolean>
Chrome 101 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.
pause()
chrome.tts.pause()
स्पीच सिंथेसिस को रोक देता है, जो बातचीत के बीच में हो सकता है. फिर से शुरू करने या रोकने के लिए कॉल करने पर, बातचीत फिर से शुरू हो जाएगी.
resume()
chrome.tts.resume()
अगर बातचीत रोकी गई थी, तो वहीं से फिर से बोलनी शुरू हो जाती है जहां उसे रोका गया था.
speak()
chrome.tts.speak(
utterance: string,
options?: TtsOptions,
callback?: function,
)
लिखाई को बोली में बदलने के इंजन का इस्तेमाल करके, टेक्स्ट बोलता है.
पैरामीटर
-
उच्चारण
स्ट्रिंग
बोला जाने वाला टेक्स्ट, सादा टेक्स्ट या अच्छी तरह से बनाया गया SSML दस्तावेज़ हो सकता है. एसएसएमएल के साथ काम न करने वाले स्पीच इंजन, टैग हटा देंगे और टेक्स्ट बोलें. टेक्स्ट ज़्यादा से ज़्यादा 32,768 वर्णों का होना चाहिए.
-
विकल्प
TtsOptions ज़रूरी नहीं है
बोलने के विकल्प.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:() => void
लौटाए गए प्रॉडक्ट
-
Promise<void>
Chrome 101 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. अन्य प्लैटफ़ॉर्म के लिए कॉलबैक का इस्तेमाल करना ज़रूरी है.
stop()
chrome.tts.stop()
मौजूदा स्पीच को रोकता है और रुके हुए उच्चारणों की सूची को फ़्लश करता है. साथ ही, अगर बातचीत रोकी गई थी, तो अब उसे अगली कॉल के लिए फिर से चालू कर दिया जाएगा.
इवेंट
onVoicesChanged
chrome.tts.onVoicesChanged.addListener(
callback: function,
)
यह तब कॉल किया जाता है, जब getVoices से मिलने वाले tts.TtsVoice
की सूची बदल गई हो.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:() => void