2016-01-30 5 views
0

Следующий код хорошо работает последние 2 месяца до вчерашнего дня, он прекратил читать китайские тексты, но читает английские тексты, несмотря на то, что lang - zh-CN. По-видимому, теперь он читает только английский. После обыска в Интернете и внесенных изменений и попыток около дня (загрузка и добавление голосов, добавление расширения Chrome «Chrome Speak» и т. Д.), Я все еще не мог решить проблему. (Chrome Speak читает отлично, но я не мог понять, как отправить его текст с помощью JavaScript)Speech Synthesis больше не читает китайский текст

var repete = 0; 
function simpleSpeak(text, callback) { 
    var u = new SpeechSynthesisUtterance(); 
    u.text = text; 
    u.lang = 'zh-CN'; 
    u.rate = (repete % 2 == 0) ? 1 : 0.8; 
    repete++; 

    u.onerror = function (e) { 
     alert('error!') 
     if (callback) { 
      callback(e); 
    } 
    window.speechSynthesis.speak(u); 
}; 

Можете ли вы мне помочь? ОС: Windows Vista, Chrome Версия 48.0.2564.97 m

+0

Он будет работать на Localhost, а не в Интернете. –

ответ

0

похоже, что это web speech api - speech synthesis .lang property not working где 'pt-BR' (Portuguese) больше не работает.

Ответ на этот запрос Chromium Issue 582455: SpeechSynthesisUtterance does not change language и предлагает решение проблемы с настройкой объекта .voice.

+0

Спасибо. Я также продолжал искать решение, но не нашел его. –

0

Я думаю, что я решил проблему, я надеюсь, что она решает и вашу. В следующем коде 17 для «zh-CN», для «pt-BR», 15.

var voiceSelected; 
function loadVoices() { 
    var voices = speechSynthesis.getVoices(); 
    voices.forEach(function (voice, i) { 
     if (i == 17) voiceSelected = voice.name; 
    }); 
} 

loadVoices(); 
window.speechSynthesis.onvoiceschanged = function (e) { 
    loadVoices(); 
}; 

function speakTTS(text) { 
    var laf = new SpeechSynthesisUtterance(); 
    laf.text = text; 
    laf.volume = 1; 
    laf.rate = 1; 
    laf.pitch = 1; 
    laf.voice = speechSynthesis.getVoices().filter(function (voice) { 
     return voice.name == voiceSelected; 
    })[0]; 
    window.speechSynthesis.speak(laf); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^