我会执行以下顺序:
- 使用
WaveIn
将音频录制到内存中。 - 从内存中获取 IEEE 32 位样本数组形式的内容。
- 对示例进行一些修改。
- 保存回磁盘。
我知道如何使用 WaveIn
进行录音以及如何使用 WaveFileReader
和 WaveFileWriter
。但这里还需要其他类,但我不知道如何使用。
最佳答案
- 将通过
WaveIn
接收到的所有音频写入MemoryStream
- 完成录制后,将
MemoryStream.Position
重置为 0。然后使用您的WaveFormat
将其传递到RawSourceWaveStream
WaveIn
- 使用
RawSourceWaveStream
上的ToSampleProvider
转至 IEEE 32 位 - 从示例提供程序中一次将音频 block 读取到 float[] 中。
- 执行您需要的任何 DSP
- 将其写入
WaveFileWriter
如果您将 DSP 实现为自定义 ISampleProvider
,则可以进一步简化管道,并使用 WaveFileWriter.CreateWaveFile
自动从 中提取所有数据>MemoryStream
到您的 WAV 文件
关于NAudio - 将音频录制到内存中,对其进行更改,然后保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40029847/