我正在开发一个在声音文件上应用滤镜的应用程序,这些滤镜在频域中应用,因此我使用NAudio库从.wav文件中获取了以下代码的示例:
audio = new AudioFileReader(wav_file);
samples = new float[wave.Length];
audio.Read(samples, 0, samples.Length);
在应用之前的代码之后,现在我将样本作为float数组,然后将短时傅立叶变换应用于获取频域数据的样本,然后将滤波器应用于频域数据。
然后将短时傅立叶逆变换应用于频域数据,以将其转换回时域,该时间域应与初始样本相似,但要应用滤波器。
再次执行以下步骤:
现在问题出在最后一步,我有样本的浮点数组(时域数据),如何将其转换为.wav文件并进行播放?
最佳答案
要将示例另存为.wav文件,请使用以下代码:
WaveFormat waveFormat = new WaveFormat(sampleRate, bitDepth, channels);
using (WaveFileWriter writer = new WaveFileWriter("C:\\track1.wav", waveFormat))
{
writer.WriteSamples(floatOutput, 0, floatOutput.Length);
}
像这样从输入文件中提取
sampleRate
,bitDepth
和channels
:sampleRate = wave.WaveFormat.SampleRate;
bitDepth = wave.WaveFormat.BitsPerSample;
channels = wave.WaveFormat.Channels;
关于c# - 将样本 float 数组转换为WAV文件格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37758735/