我正在开发一个应用声音文件过滤器的应用程序,过滤器应用于频域,因此我使用带有此代码的NAudio库从.wav文件中获取样本:
audio = new AudioFileReader(wav_file);
samples = new float[wave.Length];
audio.Read(samples, 0, samples.Length);
应用前面的代码后,现在我将样本作为浮点数组,然后对获得频域数据的样本应用短时傅立叶变换,然后将滤波器应用于频域数据。
然后对频域数据应用逆短时傅里叶变换,将其转换回时域,该时域应与初始样本类似,但应用滤波器。
再次采取措施:
现在问题出在最后一步,我有浮点数组样本(时域数据),如何将其转换为.wav文件并播放?
答案 0 :(得分:1)
要将样本保存为.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;
答案 1 :(得分:0)
1-创建一个实现ISampleProvider的类 2-使用此代码播放 (当然是ISampleProvider)
var xs = new NAudio.Wave.SampleProviders.SampleToWaveProvider16(source);
var l = new NAudio.Wave.WaveOut();
l.Init(xs);
l.Play();