C# 中的 SpeechSynthesizer 创建具有 22kHz 的 wav ...需要为 16kHz
Posted
技术标签:
【中文标题】C# 中的 SpeechSynthesizer 创建具有 22kHz 的 wav ...需要为 16kHz【英文标题】:SpeechSynthesizer in C# creates wav that has 22kHz... needs to be 16kHz 【发布时间】:2011-02-07 05:03:44 【问题描述】:我的 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】:SetOutputToWaveFile()
有一个接受SpeechAudioFormatInfo
参数的重载,该参数可用于设置采样率。 奇怪的是,没有看到 既然你正在写入一个文件,那应该可以工作。SetOutputToWaveStream()
的文件,但是
编辑:
正如@Hans 指出的那样,正确的重载是SetOutputToAudiostream()
写入流。
【讨论】:
SetOutputToAudioStream() 是替代方法。 @Hans,啊,我明白了。奇怪的是它们的命名不一致...SetOutputToAudioFile()
用于非波形格式,或重载的SetOutputToWaveStream()
。更新了答案。 :)
完美解决方案。我的 wav 文件格式正确!以上是关于C# 中的 SpeechSynthesizer 创建具有 22kHz 的 wav ...需要为 16kHz的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SpeechSynthesizer 播放时播放 IMFMediaEngine 背景音频
在 Azure Web App(.NET Framework 4.7)上发布后,“SpeechSynthesizer”不起作用
asp.net使用SpeechSynthesizer类生成语音文件部署到iis遇到的几个坑