长话短说,语音合成音量,速率和音调都不起作用。有没有其他人有这个问题,知道如何解决它,或者我一个人?
长篇故事:
对我来说,语音合成的音量,速率和音调都不起作用。这是我的演讲功能:
function speak(message, voice, callback, volume, rate, pitch, start, lang) {
if (speech) {
window.speechSynthesis.onvoiceschanged = function() {
voices = window.speechSynthesis.getVoices();
var msg = new SpeechSynthesisUtterance();
msg.voice = (typeof voice != "undefined" && voice != 0) ? voices[voice] : voices[0]; // Note: some voices don't support altering params
msg.volume = (typeof volume != "undefined" && volume != 0) ? volume : 1; // 0 to 1
msg.rate = (typeof rate != "undefined" && rate != 0) ? rate : 1; // 0.1 to 10
msg.pitch = (typeof pitch != "undefined" && pitch != 0) ? pitch : 2; //0 to 2
msg.text = message;
msg.lang = (typeof lang != "undefined" && lang != 0) ? lang : "en-US";
msg.onstart = function(event) {
if (typeof start != "undefined" && start != 0) {
start(event);
}
}
msg.onend = function(event) {
console.log(event.elapsedTime);
if (typeof callback != "undefined" && callback != 0) {
callback(event);
}
};
speechSynthesis.speak(msg);
};
}
}
然而,当我致电speak("Hello", 0, 0, 0.1)
时,它会输出与speak("Hello")
完全相同的内容。我想让它输出相同的东西但更柔和。
我目前正在关注http://updates.html5rocks.com/2014/01/Web-apps-that-talk---Introduction-to-the-Speech-Synthesis-API。
答案 0 :(得分:1)
出于某种原因,如果您将语言更改为en-EN,则参数将起作用。
答案 1 :(得分:0)
从我所看到的情况来看,设置这些参数仅在语音来自local service时生效。
正如您所指出的,这可能是并非所有声音都支持设置参数的情况。
答案 2 :(得分:0)
我也想尝试做同样的事情。但我设法通过添加一个我希望它减速的fullstop来使其工作。我知道这不是正确的方法,但它对我有用
var u = new SpeechSynthesisUtterance();
u.text = 'Welcome to Handy Mandy. Lets Get Started. Say Handy Mandy.';
//u.lang = 'en-US';
//u.rate = 10;
//u.onend = function(event) { alert('Finished in ' + event.elapsedTime + ' seconds.'); }
speechSynthesis.speak(u);
在此之前
答案 3 :(得分:0)
这更像是一个评论,但它可能是一个错字。
看起来,Speech Synthesis类也有一个rate属性。
务必将其设置在话语而不是语音合成对象上。
不正确:
speechSynthesis.rate = 2;
speechSynthesis.speak(utterance);
正确:
utterance.rate = 2;
speechSynthesis.speak(utterance);