首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓-Chrome中的SpeechSynthesis :无法从美国英语中改变英语声音

安卓-Chrome中的SpeechSynthesis :无法从美国英语中改变英语声音
EN

Stack Overflow用户
提问于 2018-10-24 17:42:34
回答 1查看 2K关注 0票数 4

我正在使用Android-Chrome上的语音合成API。问题是,尽管有4种英语声音可用,但浏览器总是使用美国英语,无论代码指定了什么。我可以使用其他语言,如法语,但不是其他英语语音,例如-AU,GB,或IN。

该代码从getVoices数组中过滤英国英语语音对象,并使用第一个单词“番茄”。问题是这个单词总是发音为“to-可能-lo”而不是"to-mar-to“,这意味着我的文本不像它应该的那样押韵。

所使用的语音对象被显示,并且(在我尝试过的手机上)是一个GB对象。

html..。

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en-GB">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Let's not call the whole thing off</title>
        <script src="tomato.js" defer></script>
    </head>
    <body>
        <div id="tomato" lang="en-GB">Tomato</div>
        <div id="platform"></div>
    </body>
</html>

还有剧本..。

代码语言:javascript
复制
var platform = document.getElementById("platform");
var tomato = document.getElementById("tomato");

var voices = [];
var voicesGB = [];
voices = speechSynthesis.getVoices();
speechSynthesis.onvoiceschanged = function() {
    voices = speechSynthesis.getVoices();
    voicesGB = voices.filter(voice => /en(-|_)GB/.test(voice.lang));
};

function speak(word) {
    var msg = new SpeechSynthesisUtterance();
    msg.default = false;
    msg.text = word;
    msg.voice = voicesGB[0];
    msg.lang = voicesGB[0].lang;
    window.speechSynthesis.speak(msg);
    for (var p in msg.voice) {
        platform.innerHTML += p + ': ' + msg.voice[p] + '<br>\n';
    }
}

tomato.addEventListener("click",() => {speak('tomato');});

还有一个jsbin:https://jsbin.com/xefukemuga/edit?html,js,output在Android上运行这个程序,然后点击“番茄”这个词。

我搜遍了所有的地方,尝试了各种修复方法。你如何控制Android-Chrome的声音?

EN

回答 1

Stack Overflow用户

发布于 2020-04-22 13:22:49

在AndroidVersion5.0.2上解决此问题的唯一方法是更改Android设置中的默认声音,然后重新启动设备。这将允许您使用您想要的声音,但其他的英语将是不可用的。这里是一些更详细的内容:

SpeechSynthesis.getVoices()将返回几个英文选项(美国、澳大利亚、尼日利亚、印度和英国),但一次只提供一个选项。你可以选择哪一个通过进入设置应用程序,然后控制->语言和输入->文本到语音选项。在Google文本到语音引擎旁边选择齿轮图标,然后在语言下你可以更新你想要使用的确切区域。如果选择“安装语音数据”,甚至可以从一些地区的不同声音样本中进行选择。更改此设置后,需要重新启动设备才能生效。 当您播放SpeechSynthesisUtterance时,安卓设备上使用的声音将取决于您在Android设置中选择了什么。您可以从javascript中选择要播放的语言(请参阅下面的详细信息),但您无法控制所使用的语言环境或准确的声音。 这个问题发生在Chrome和火狐上,所以这很可能是安卓平台实现speechSynthesis API的一个问题。浏览器更新不太可能解决这个问题,但是不同版本的Android可能会解决这个问题。(我的测试设备是在Android5.0.2上,所以如果这是在以后的更新中修复的,请告诉我。)

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

https://stackoverflow.com/questions/52975068

复制
相关文章

相似问题

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