我有一个滑块和可用语音列表,我希望允许用户在语音合成期间使用 SpeechSynthesizer 类即时更改。我可以在语音开始之前使用
SpeechSynthesizer.Options.SpeakingRate
和 SpeechSynthesizer.Voice
完成所有这些操作。但是,我希望用户能够在语音发生时更改这些设置。
在语音合成运行时更改属性
async
不起作用。我尝试创建一个 new SpeechSynthesizer()
并更改声音,但这并不会改变正在运行的原始合成。我知道这是可能的,因为它是在 Microsoft Edge 中完成的。有什么想法吗?
语音合成器包含 SpeechSynthesizer.Rate 属性。
{
// 初始化 SpeechSynthesizer 的新实例。
SpeechSynthesizer 合成器 = new SpeechSynthesizer();
// Set a value for the speaking rate.
synth.Rate = -2;
// Configure the audio output.
synth.SetOutputToDefaultAudioDevice();
// Speak a text string synchronously.
synth.Speak("This example speaks a string with the speaking rate set to -2.");
}
现在位于
SpeechSynthesisUtterance
下。以下对我有用:
const synth = window.speechSynthesis;
// replace with text you want to be read
const utterance = new SpeechSynthesisUtterance(text);
// insert speed rate here
utterance.rate = 2;
synth.speak(utterance);