3

长话短说,语音合成的音量、速率和音高不起作用。有没有其他人有这个问题并且知道如何解决它,或者我一个人?

长话短说:

对我来说,语音合成的音量、速率和音高不起作用。这是我的语音功能:

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

4

4 回答 4

2

这更像是一个评论,但它可能是一个错字。

看起来语音合成类也有一个速率属性。

请务必将其设置在话语而不是语音合成对象上。

不正确:

speechSynthesis.rate = 2;
speechSynthesis.speak(utterance);

正确的:

utterance.rate = 2;
speechSynthesis.speak(utterance);
于 2018-05-22T00:40:41.163 回答
1

出于某种原因,如果您将语言更改为 en-EN,这些参数将起作用。

于 2014-12-27T20:14:43.933 回答
0

据我所见,设置这些参数仅在语音来自本地服务时才有效。

正如您所指出的,这可能是并非所有声音都支持设置参数的情况。

于 2015-01-29T18:37:44.487 回答
0

我也在尝试做同样的事情。但是我设法通过在我希望它放慢速度的地方添加一个句号来使其工作。我知道这不是正确的方法,但它对我有用

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);

在此之前它

于 2015-04-07T02:10:16.570 回答