2017-05-17 23 views
9

क्रोमियम ब्राउज़र पर SpeechSynthesisUtterance() और window.speechSynthesis.speak() का उपयोग कैसे करें?क्रोमियम पर वेब स्पीच एपीआई का उपयोग कैसे करें?

var msg = new SpeechSynthesisUtterance("Hello I am browser"); 
window.speechSynthesis.speak(msg); 

सिस्टम स्पीकर पर कोई आउटपुट नहीं देता है।

एपीआई के साथ मुद्दे मधुमक्खी The HTML5 SpeechSynthesis API is rubbish नोट किया गया है;

var voices = window.speechSynthesis.getVoices(); 

voices पहचानकर्ता के लिए एक खाली सरणी लॉग करता है; और केवल क्रोमियम क्रोमियम को Web Speech API Specification का समर्थन नहीं करता है, Web Speech API Demonstration पृष्ठ पर माइक्रोफ़ोन सक्षम होने पर ध्वनि सुनने के लिए html तत्व का मान सेट करता है।

कम से कम जावास्क्रिप्ट कार्यक्षमता से संबंधित के कुछ जाहिरा तौर पर

var langs = 
[['Afrikaans',  ['af-ZA']], 
['Bahasa Indonesia',['id-ID']], 
['Bahasa Melayu', ['ms-MY']], 
['Català',   ['ca-ES']], 
['Čeština',   ['cs-CZ']], 
['Dansk',   ['da-DK']], 
['Deutsch',   ['de-DE']], 
['English',   ['en-AU', 'Australia'], 
        ['en-CA', 'Canada'], 
        ['en-IN', 'India'], 
        ['en-NZ', 'New Zealand'], 
        ['en-ZA', 'South Africa'], 
        ['en-GB', 'United Kingdom'], 
        ['en-US', 'United States']], 
['Español',   ['es-AR', 'Argentina'], 
        ['es-BO', 'Bolivia'], 
        ['es-CL', 'Chile'], 
        ['es-CO', 'Colombia'], 
        ['es-CR', 'Costa Rica'], 
        ['es-EC', 'Ecuador'], 
        ['es-SV', 'El Salvador'], 
        ['es-ES', 'España'], 
        ['es-US', 'Estados Unidos'], 
        ['es-GT', 'Guatemala'], 
        ['es-HN', 'Honduras'], 
        ['es-MX', 'México'], 
        ['es-NI', 'Nicaragua'], 
        ['es-PA', 'Panamá'], 
        ['es-PY', 'Paraguay'], 
        ['es-PE', 'Perú'], 
        ['es-PR', 'Puerto Rico'], 
        ['es-DO', 'República Dominicana'], 
        ['es-UY', 'Uruguay'], 
        ['es-VE', 'Venezuela']], 
['Euskara',   ['eu-ES']], 
['Filipino',  ['fil-PH']], 
['Français',  ['fr-FR']], 
['Galego',   ['gl-ES']], 
['Hrvatski',  ['hr_HR']], 
['IsiZulu',   ['zu-ZA']], 
['Íslenska',  ['is-IS']], 
['Italiano',  ['it-IT', 'Italia'], 
        ['it-CH', 'Svizzera']], 
['Lietuvių',  ['lt-LT']], 
['Magyar',   ['hu-HU']], 
['Nederlands',  ['nl-NL']], 
['Norsk bokmål', ['nb-NO']], 
['Polski',   ['pl-PL']], 
['Português',  ['pt-BR', 'Brasil'], 
        ['pt-PT', 'Portugal']], 
['Română',   ['ro-RO']], 
['Slovenščina',  ['sl-SI']], 
['Slovenčina',  ['sk-SK']], 
['Suomi',   ['fi-FI']], 
['Svenska',   ['sv-SE']], 
['Tiếng Việt',  ['vi-VN']], 
['Türkçe',   ['tr-TR']], 
['Ελληνικά',  ['el-GR']], 
['български',  ['bg-BG']], 
['Pусский',   ['ru-RU']], 
['Српски',   ['sr-RS']], 
['Українська',  ['uk-UA']], 
['한국어',   ['ko-KR']], 
['中文',    ['cmn-Hans-CN', '普通话 (中国大陆)'], 
        ['cmn-Hans-HK', '普通话 (香港)'], 
        ['cmn-Hant-TW', '中文 (台灣)'], 
        ['yue-Hant-HK', '粵語 (香港)']], 
['日本語',   ['ja-JP']], 
['हिन्दी',   ['hi-IN']], 
['ภาษาไทย',   ['th-TH']]]; 

for (var i = 0; i < langs.length; i++) { 
    select_language.options[i] = new Option(langs[i][0], i); 
} 
select_language.selectedIndex = 7; 
updateCountry(); 
select_dialect.selectedIndex = 6; 
showInfo('info_start'); 

function updateCountry() { 
    for (var i = select_dialect.options.length - 1; i >= 0; i--) { 
    select_dialect.remove(i); 
    } 
    var list = langs[select_language.selectedIndex]; 
    for (var i = 1; i < list.length; i++) { 
    select_dialect.options.add(new Option(list[i][1], list[i][0])); 
    } 
    select_dialect.style.visibility = list[1].length == 1 ? 'hidden' : 'visible'; 
} 

var create_email = false; 
var final_transcript = ''; 
var recognizing = false; 
var ignore_onend; 
var start_timestamp; 
if (!('webkitSpeechRecognition' in window)) { 
    upgrade(); 
} else { 
    start_button.style.display = 'inline-block'; 
    var recognition = new webkitSpeechRecognition(); 
    recognition.continuous = true; 
    recognition.interimResults = true; 

    recognition.onstart = function() { 
    recognizing = true; 
    showInfo('info_speak_now'); 
    start_img.src = '/intl/en/chrome/assets/common/images/content/mic-animate.gif'; 
    }; 

    recognition.onerror = function(event) { 
    if (event.error == 'no-speech') { 
     start_img.src = '/intl/en/chrome/assets/common/images/content/mic.gif'; 
     showInfo('info_no_speech'); 
     ignore_onend = true; 
    } 
    if (event.error == 'audio-capture') { 
     start_img.src = '/intl/en/chrome/assets/common/images/content/mic.gif'; 
     showInfo('info_no_microphone'); 
     ignore_onend = true; 
    } 
    if (event.error == 'not-allowed') { 
     if (event.timeStamp - start_timestamp < 100) { 
     showInfo('info_blocked'); 
     } else { 
     showInfo('info_denied'); 
     } 
     ignore_onend = true; 
    } 
    }; 

    recognition.onend = function() { 
    recognizing = false; 
    if (ignore_onend) { 
     return; 
    } 
    start_img.src = '/intl/en/chrome/assets/common/images/content/mic.gif'; 
    if (!final_transcript) { 
     showInfo('info_start'); 
     return; 
    } 
    showInfo(''); 
    if (window.getSelection) { 
     window.getSelection().removeAllRanges(); 
     var range = document.createRange(); 
     range.selectNode(document.getElementById('final_span')); 
     window.getSelection().addRange(range); 
    } 
    if (create_email) { 
     create_email = false; 
     createEmail(); 
    } 
    }; 

    recognition.onresult = function(event) { 
    var interim_transcript = ''; 
    if (typeof(event.results) == 'undefined') { 
     recognition.onend = null; 
     recognition.stop(); 
     upgrade(); 
     return; 
    } 
    for (var i = event.resultIndex; i < event.results.length; ++i) { 
     if (event.results[i].isFinal) { 
     final_transcript += event.results[i][0].transcript; 
     } else { 
     interim_transcript += event.results[i][0].transcript; 
     } 
    } 
    final_transcript = capitalize(final_transcript); 
    final_span.innerHTML = linebreak(final_transcript); 
    interim_span.innerHTML = linebreak(interim_transcript); 
    if (final_transcript || interim_transcript) { 
     showButtons('inline-block'); 
    } 
    }; 
} 

function upgrade() { 
    start_button.style.visibility = 'hidden'; 
    showInfo('info_upgrade'); 
} 

var two_line = /\n\n/g; 
var one_line = /\n/g; 
function linebreak(s) { 
    return s.replace(two_line, '<p></p>').replace(one_line, '<br>'); 
} 

var first_char = /\S/; 
function capitalize(s) { 
    return s.replace(first_char, function(m) { return m.toUpperCase(); }); 
} 

function createEmail() { 
    var n = final_transcript.indexOf('\n'); 
    if (n < 0 || n >= 80) { 
    n = 40 + final_transcript.substring(40).indexOf(' '); 
    } 
    var subject = encodeURI(final_transcript.substring(0, n)); 
    var body = encodeURI(final_transcript.substring(n + 1)); 
    window.location.href = 'mailto:?subject=' + subject + '&body=' + body; 
} 

function copyButton() { 
    if (recognizing) { 
    recognizing = false; 
    recognition.stop(); 
    } 
    copy_button.style.display = 'none'; 
    copy_info.style.display = 'inline-block'; 
    showInfo(''); 
} 

function emailButton() { 
    if (recognizing) { 
    create_email = true; 
    recognizing = false; 
    recognition.stop(); 
    } else { 
    createEmail(); 
    } 
    email_button.style.display = 'none'; 
    email_info.style.display = 'inline-block'; 
    showInfo(''); 
} 

function startButton(event) { 
    if (recognizing) { 
    recognition.stop(); 
    return; 
    } 
    final_transcript = ''; 
    recognition.lang = select_dialect.value; 
    recognition.start(); 
    ignore_onend = false; 
    final_span.innerHTML = ''; 
    interim_span.innerHTML = ''; 
    start_img.src = '/intl/en/chrome/assets/common/images/content/mic-slash.gif'; 
    showInfo('info_allow'); 
    showButtons('none'); 
    start_timestamp = event.timeStamp; 
} 

function showInfo(s) { 
    if (s) { 
    for (var child = info.firstChild; child; child = child.nextSibling) { 
     if (child.style) { 
     child.style.display = child.id == s ? 'inline' : 'none'; 
     } 
    } 
    info.style.visibility = 'visible'; 
    } else { 
    info.style.visibility = 'hidden'; 
    } 
} 

var current_style; 
function showButtons(style) { 
    if (style == current_style) { 
    return; 
    } 
    current_style = style; 
    copy_button.style.display = style; 
    email_button.style.display = style; 
    copy_info.style.display = 'none'; 
    email_info.style.display = 'none'; 
} 

दस्तावेज़ के लेखकों के लिए जिम्मेदार ठहराया है।

हालांकि यह सुनिश्चित नहीं है कि यह SpeechSynthesisUtterance() और window.speechSynthesis.speak() के उपयोग को कैसे प्रभावित करता है?

window.speechSynthesis.getVoices() को पॉप्युलेट करने के लिए आवाज कैसे लोड करें?

लिंक किए गए प्रदर्शन दस्तावेज़ में ध्वनि को पाठ को प्रतिलिपि बनाने के लिए कार्यक्षमता को कैसे कार्यान्वित किया जाता है?

क्रोमियम ब्राउज़र पर वेब स्पीच एपीआई का उपयोग करने के लिए आवश्यक वर्कअराउंड क्या हैं?

विशेष रूप से, पाठ को ध्वनि को ट्रांसक्रिप्ट करने और ऑडियो आउटपुट में टेक्स्ट कैसे परिवर्तित करें?

+0

संबंधित [वेब वाक् API क्रोमियम में वर्तमान में काम नहीं कर रहा/इलेक्ट्रॉन/NW js?] (Https: // stackoverflow .com/प्रश्न/36052774/वेब-भाषण-एपीआई-काम नहीं कर रहे-वर्तमान में क्रोमियम-इलेक्ट्रॉन-एनडब्ल्यू-जेएस? आरक्यू = 1), [डब्ल्यू 3 सी वेब स्पीच एपीआई के साथ ऑडियो फाइल जेनरेट करें] (https: // stackoverflow .com/प्रश्न/38727696/जेनरेट-ऑडियो-फ़ाइल-साथ-w3c-web-speech-api? rq = 1) – guest271314

+0

SpeechSynthesisUtterance और बोलें() क्रोमियम windows7 में ठीक काम करता है। getVoices() बोलने से पहले खाली सरणी देता है()। लेकिन अगर मैं बोलने की कोशिश करता हूं() और फिर वोवाइस() प्राप्त करता है तो यह आवाज़ देता है। संस्करण 61.0.3125.0 (डेवलपर बिल्ड) (32-बिट) – karthick

+0

@ कार्तिक वर्तमान में क्रोमियम 58 पर * निक्स 32-बिट पर कोशिश कर रहा है। क्या आप वर्णन कर रहे पैटर्न को प्रदर्शित करने के लिए एक plnkr https://plnkr.co बना सकते हैं? – guest271314

उत्तर

1

स्थापित espeak पैकेज प्रबंधक

$ sudo apt-get install espeak 

लॉन्च क्रोमियम उपयोग --enable-speech-dispatcher ध्वज के साथ

$ chromium-browser --enable-speech-dispatcher 
संबंधित मुद्दे