问题描述
我想使用 DataAvailable
上的 WaveInEvent
回调来填写我的示例列表。
我目前正在做的是我有一个 _totalPlayBack
变量,允许调用播放 100 次。
每个回调将 WaveInEventArgs
的缓冲区转换为 float[] 并将其附加到样本列表中。
private void OnDataAvailable(object sender,WaveInEventArgs e){
if(_totalPlayBack > 100) return;
float[] samples = new float[e.Buffer.Length];
RawSourceWaveStream stream = new RawSourceWaveStream(e.Buffer,samples.Length,new
WaveFormat(16000,1));
stream.ToSampleProvider().Read(samples,samples.Length);
_samples.AddRange(samples);
_totalPlayBack++;
}
问题是当我将 _samples
列表的样本放入音频文件并播放时,它坏了。它不完全是噪音,它包含我的声音,但它根本不干净,它有回声,它比应有的速度慢,而且在我的耳朵里,它听起来像是包含空白样本,因为如果你愿意的话,它会结巴。
我尝试了不同的类而不是 RawSourceWaveStream
像 WaveBuffer
来从回调方法创建的 byte[] 中获取 float[] 。产生了完整的噪音。
我还尝试了 BufferedWaveProvider
并将 DataAvailable
回调的返回样本添加到其中并将它们读入 float[]
它也有和RawSourceWaveStream
完全一样的问题。
我的目标是组合 DataAvailable
回调的返回样本并从中制作一个干净的音频文件,我唯一需要帮助的就是将这些样本干净地组合在一起。
重要如果您知道任何其他方法可以帮助我每 0.05 或 0.1 秒干净地读取样本 请与我分享。
非常感谢任何帮助,
最好的问候
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)