2014-10-10 36 views
2

我的web應用程序使用語音合成API。我的問題很簡單:我設置了話語和語言環境。在(我的)MAC電腦上,它工作,即。與請求的語言環境進行交談。在Windows電腦上(我嘗試過的),它總是使用英語。不支持PC計算機中的語言環境的HTML5語音合成

var mUtterance=new SpeechSynthesisUtterance(), 
mUtterance.text="<text in spanish for example>"; 
mUtterance.lang="es"; 
window.speechSynthesis && window.speechSynthesis.speak(mUtterance); 

爲什麼會發生這種情況?

我在兩個平臺中都使用最新的chrome版本(剛剛更新)。

回答

1

我發現爲什麼...

如果我指定的語言環境,完整的代碼,ES-ES,它的工作原理。

看起來Chrome/MAC版本能夠爲請求的語言環境選擇默認的變體,而在Chrome/PC版本中,您必須指定完整的語言環境代碼(語言+變體)。這使我的生活更加艱難,因爲例如西班牙語有幾十個變種,如果某人只安裝了其中一個,則必須明確選擇它,否則引擎將默認爲英語:(

我寫了一個小功能找到任何語言環境的變體(找到的第一個),對於給定的語言:

findLocaleCode=function(lang) { 
    var voices=window.speechSynthesis.getVoices(); 
    for (var i=0, len=voices.length; i<len; i++) try { 
     var voice=voices[i]; 
     if (voice.lang.indexOf(lang)==0) return voice.lang; 
    } catch (e) {} 
    return null; 
}; 

所以我可以做:

mUtterance.lang=findLocaleCode("es"); 

,它會得到ES-ES,ES-AR從或什麼語音列表。