语音合成不再阅读中文文本
Speech Synthesis no longer reads Chinese text
以下代码在过去 2 个月中运行良好,直到昨天它停止阅读中文文本,但它读取英文文本,尽管 lang 是 zh-CN。显然它现在只读英语。在搜索互联网并进行了很多更改并尝试了大约一天(加载和添加语音,添加Chrome扩展程序" Chrome Speak"等)后,我仍然无法解决问题。(Chrome Speak读起来很好,但我不知道如何通过javaScript发送文本)
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
这似乎与网络语音 API 有关 - 语音合成 .lang 属性在"pt-BR"(葡萄牙语)不再工作的情况下不起作用。
那里的答案引用了Chromium Issue 582455:SpeechSynthesisUtterance不会更改语言,并建议直接设置.voice
属性的解决方案。
我想
我解决了问题,我希望它也能解决你的问题。在下面的代码中,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);
}
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- 高亮显示时编辑文本大小和颜色
- jquery中的文本框验证
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- Sails.js:同时发布文本输入和一个文件
- 当鼠标悬停在文本中的单词上时显示警报
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 语音合成不再阅读中文文本
- 我可以检测文本中的非日文中文字符吗?
- 将文本区域限制为固定数量的中文字符