Javascript 长文本语音合成问题
你好 我的语音合成在说长文本时出现了不一致的问题 我正在尝试用英语和普通话进行文本转换。当我指定outrance.lang='en-US';我发现我的英文文章一直读到写完。然而,当我使用outrance.lang='zh CN';我的英文和中文文本只能读到30个单词。我不知道编码或其他方面是否有问题 该条: 环果桉 环果肠杆菌,通常被称为瓜纳卡斯特、卡罗卡罗或 象耳树,是豌豆科开花树种。 原产于美洲热带地区的豆科植物 墨西哥中部,南至巴西北部(罗莱马)和委内瑞拉。它是 以其巨大的比例和膨胀的球形冠而闻名, 还有形状奇特的豆荚。这棵树的丰饶, 尤其是在哥斯达黎加的瓜纳卡斯特省,它因 它在强烈的阳光下提供了阴凉的浮雕,再加上 广袤无垠,使它成为一个被广泛认可的物种。它是 哥斯达黎加的国家树种 这是一个好主意。最重要的是每14秒发布一份简历 对于您的代码,这意味着在“发言”之后添加以下内容:Javascript 长文本语音合成问题,javascript,text-to-speech,Javascript,Text To Speech,你好 我的语音合成在说长文本时出现了不一致的问题 我正在尝试用英语和普通话进行文本转换。当我指定outrance.lang='en-US';我发现我的英文文章一直读到写完。然而,当我使用outrance.lang='zh CN';我的英文和中文文本只能读到30个单词。我不知道编码或其他方面是否有问题 该条: 环果桉 环果肠杆菌,通常被称为瓜纳卡斯特、卡罗卡罗或 象耳树,是豌豆科开花树种。 原产于美洲热带地区的豆科植物 墨西哥中部,南至巴西北部(罗莱马)和委内瑞拉。它是 以其巨大的比例和膨胀的球形
你能分享一下你为制作这期杂志而测试的那篇文章吗?当然可以。我的文章是用php写的。但这是一篇文章“环果肠草,俗称瓜纳卡斯特树、卡罗树或象耳树,是豆科豆科开花树的一种,原产于墨西哥中部南部的美洲热带地区……”我的文章有点太长了。无法将所有内容粘贴到此处。我不知道为什么它只能读到30个字符。@SerraYara-你的问题是30个单词,这个评论是30个字符。我假设这是30个字对吗?对不起。实际上是30个单词。你使用的是什么浏览器/操作系统?大概是狩猎?谢谢!它起作用了。我还有一个小问题。当我把我的语言设置为中文“zn CH”时,它的英语读得很好,但当有一年的时候。为什么它仍然用中文阅读?如果有效,请将其标记为已接受的答案,并将链接为“解决方法”的问题向上投票。声音将尝试用自己的语言阅读,因此当它遇到数字时,没有任何东西阻止它这样做。你可以通过将数字改为其对应的单词来修改它,例如从1改为1,或者今年的“219”。
onload = function() {
if ('speechSynthesis' in window) with(speechSynthesis) {
var playEle = document.querySelector('#play');
var pauseEle = document.querySelector('#pause');
var stopEle = document.querySelector('#stop');
var flag = false;
playEle.addEventListener('click', onClickPlay);
pauseEle.addEventListener('click', onClickPause);
stopEle.addEventListener('click', onClickStop);
function onClickPlay() {
if(!flag){
flag = true;
utterance = new SpeechSynthesisUtterance(document.querySelector('article').textContent);
utterance.lang = 'zh-CN';
utterance.onend = function(){
flag = false; playEle.className = pauseEle.className = ''; stopEle.className = 'stopped';
};
playEle.className = 'played';
stopEle.className = '';
speak(utterance);
}
if (paused) { /* unpause/resume narration */
playEle.className = 'played';
pauseEle.className = '';
resume();
}
}
function onClickPause() {
if(speaking && !paused){ /* pause narration */
pauseEle.className = 'paused';
playEle.className = '';
pause();
}
}
function onClickStop() {
if(speaking){ /* stop narration */
/* for safari */
stopEle.className = 'stopped';
playEle.className = pauseEle.className = '';
flag = false;
cancel();
}
}
}
else { /* speech synthesis not supported */
msg = document.createElement('h5');
msg.textContent = "Detected no support for Speech Synthesis";
msg.style.textAlign = 'center';
msg.style.backgroundColor = 'red';
msg.style.color = 'white';
msg.style.marginTop = msg.style.marginBottom = 0;
document.body.insertBefore(msg, document.querySelector('div'));
}
}
let r = setInterval(() => {
console.log(speechSynthesis.speaking);
if (!speechSynthesis.speaking) {
clearInterval(r);
} else {
speechSynthesis.resume();
}
}, 14000);