首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTML5语音合成接口-只能使用“原生”声音

HTML5语音合成接口-只能使用“原生”声音
EN

Stack Overflow用户
提问于 2015-04-28 21:01:00
回答 1查看 1.7K关注 0票数 0

我有一个web应用程序,它使用了HTML5语音合成应用程序接口,它可以工作-但只能使用原生语音。下面是我的代码:

代码语言:javascript
运行
复制
var msg = new SpeechSynthesisUtterance();
var voices;

window.speechSynthesis.onvoiceschanged = function() {
    voices = window.speechSynthesis.getVoices();
};

$("#btnRead").click(function() {
        speak();
});

function speak(){
    msg = new SpeechSynthesisUtterance();
    msg.rate = 0.8;
    msg.text = $("#contentView").html();
    msg.voice = voices[10];
    msg.lang = 'en-GB';
    window.speechSynthesis.speak(msg);
}

voices10是唯一可以正常工作的语音,当我将它登录到控制台时,我可以看到它是本机语音-这似乎表明其他语音没有正确加载,但当它登录到控制台时,它们仍然出现在语音数组中,正如您可以在这里看到的:

有谁有什么想法吗?我确信我可能遗漏了一些相对简单的东西,但是我已经在这个问题上挣扎了一段时间了!我使用的是Google Chrome版本42.0.2311.90,据我所知,它应该支持语音合成API。

EN

回答 1

Stack Overflow用户

发布于 2015-11-11 06:18:09

刚刚开始使用speechSynthesis,所以没有花太多时间在上面。我偶然发现了你的问题,我相信答案是你选择的声音不支持你给它的语言,你得到了一个后备。

如果您阅读文档并检查您如何选择语音,它的工作方式(至少在我的pc上) https://developers.google.com/web/updates/2014/01/Web-apps-that-talk-Introduction-to-the-Speech-Synthesis-API?hl=en

代码语言:javascript
运行
复制
var msg = new SpeechSynthesisUtterance('Awesome!');
msg.voice = speechSynthesis.getVoices().filter(function(voice) { 
      return voice.name == 'Google UK English Male'; 
})[0];

// now say it like you mean it:
speechSynthesis.speak(msg);

希望这对你或其他正在寻找它的人有所帮助。

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

https://stackoverflow.com/questions/29920285

复制
相关文章

相似问题

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