【发布时间】:2017-11-01 03:30:26
【问题描述】:
我正在开发一个对声音文件应用过滤器的应用程序,过滤器应用在频域中,因此我使用带有此代码的 NAudio 库从 .wav 文件中获取样本:
audio = new AudioFileReader(wav_file);
samples = new float[wave.Length];
audio.Read(samples, 0, samples.Length);
在应用前面的代码之后,现在我将样本作为浮点数组,然后对获取频域数据的样本应用短时傅里叶变换,然后对频域数据应用滤波器。
然后对频域数据应用逆短时傅里叶变换,将其转换回时域,该时域应该与初始样本相似,但应用了滤波器。
再次执行步骤:
- 从 wav 文件中获取样本(时域数据)数组。
- 对样本应用短时傅里叶变换以获得频域数据。
- 对频域数据应用过滤器。
- 对频域数据应用反短时傅里叶变换来获取样本(时域数据)。
- 再次将样本转换回 wav 格式以保存和播放。
现在问题出在最后一步,我有样本的浮点数组(时域数据),如何将其转换为 .wav 文件并播放?
【问题讨论】:
-
你应该可以在这里找到你需要的东西:stackoverflow.com/questions/19715553/double-array-to-wav - 或者在这里:stackoverflow.com/questions/9805407/… - 它有一些额外的步骤,但我相信到最后,它已经拥有了所有需要的东西生成您的 wav 文件。