如何在C#中改变语音合成器的语音或速度

问题描述 投票:0回答:3

我有一个滑块和可用语音列表,我希望允许用户在语音合成期间使用 SpeechSynthesizer 类即时更改。我可以在语音开始之前使用

SpeechSynthesizer.Options.SpeakingRate
SpeechSynthesizer.Voice
完成所有这些操作。但是,我希望用户能够在语音发生时更改这些设置。

在语音合成运行时更改属性

async
不起作用。我尝试创建一个
new SpeechSynthesizer()
并更改声音,但这并不会改变正在运行的原始合成。我知道这是可能的,因为它是在 Microsoft Edge 中完成的。有什么想法吗?

c# uwp text-to-speech
3个回答
2
投票

我知道这是可能的,因为它是在 Microsoft Edge 中完成的。

首先我不太清楚Microsoft Edge是如何实现这个功能的。边缘很可能没有使用这个 API。

我检查了文档并测试了官方示例,我还没有找到我们可以在演讲开始时修改语音和说话速率的选项。所以这个功能对于UWP来说应该是不可能的。


0
投票

语音合成器包含 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.");  

}


0
投票

现在位于

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);
© www.soinside.com 2019 - 2024. All rights reserved.