首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PC机中不尊重现场的HTML5语音合成

PC机中不尊重现场的HTML5语音合成
EN

Stack Overflow用户
提问于 2014-10-10 21:33:56
回答 1查看 287关注 0票数 2

我的网络应用程序使用语音合成API。我的问题很简单:我设置了语音和语言环境。在我的MAC电脑上,它能工作.与所请求的地区对话。在Windows计算机(我试过的那些)上,它总是使用英语。

代码语言:javascript
复制
var mUtterance=new SpeechSynthesisUtterance(),
mUtterance.text="<text in spanish for example>";
mUtterance.lang="es";
window.speechSynthesis && window.speechSynthesis.speak(mUtterance);

为什么会发生这种事?

我在两个平台上都使用了最新的chrome版本(刚刚更新)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-10 21:52:11

我找到了为什么..。

如果我指定区域设置为完整的代码,es-ES,它就能工作。

看起来Chrome/MAC版本可以为请求的区域设置选择默认变体,而在Chrome/PC版本中,您总是必须指定完整的地区代码(语言+变体)。这使我的生活更加艰难,因为例如西班牙语有几十个变体,如果有人只安装了其中一个变体,您必须显式地选择它,否则引擎将默认为英语:(

我编写了一个小函数来查找给定语言的任何地区变体(第一个找到的):

代码语言:javascript
复制
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;
};

所以我可以:

代码语言:javascript
复制
mUtterance.lang=findLocaleCode("es");

它会从语音列表中得到es-ES,es-AR或任何东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26308363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档