C#中的SpeechSynthesizer创建22kHz的wav文件...需要转换为16kHz。

4
我的C#应用程序需要将文本转换为wav文件并将其注入到Skype通话中。创建wav文件的代码如下所示。问题在于该文件具有22kHz采样率,而Skype仅接受16kHz。
是否有任何方法可以调整此设置?
using (System.IO.FileStream stream = System.IO.File.Create("message.wav"))
{

System.Speech.Synthesis.SpeechSynthesizer speechEngine = new System.Speech.Synthesis.SpeechSynthesizer();

 speechEngine.SetOutputToWaveStream(stream);
 speechEngine.Speak(number);
 stream.Flush();
}
1个回答

4

SetOutputToWaveFile()有一个重载,接受一个SpeechAudioFormatInfo参数,可用于设置采样率。虽然奇怪的是,SetOutputToWaveStream()没有这个参数,但由于你无论如何都要写入文件,所以应该可以工作。

编辑:

正如@Hans指出的那样,正确的重载是SetOutputToAudioStream(),用于写入流。


1
SetOutputToAudioStream() 是另一种选择。 - Hans Passant
@Hans,啊,我明白了。他们的命名方式不一致有点奇怪...对于非波形格式,使用SetOutputToAudioFile(),或者是重载的SetOutputToWaveStream()。已更新答案。 :) - Tanzelax
完美的解决方案。我的wav文件格式恰到好处! - screenshot345

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接