我正在开发一个将过滤器应用于声音文件的应用程序,滤波器是在频域上应用的,因此我使用下面的代码使用.wav库从NAudio文件中获得了示例:
audio = new AudioFileReader(wav_file);
samples = new float[wave.Length];
audio.Read(samples, 0, samples.Length);在应用前面的代码后,现在我把样本作为一个浮点数组,然后对得到频域数据的样本应用短时傅立叶变换,然后对频域数据应用滤波器。
然后对频域数据进行逆短时傅立叶变换,将其转换回时域,这应该与初始样本相似,但需要使用滤波器。
这些步骤又一次:
现在的问题是在最后一步,我有一个浮点数组的样本(时域数据),我如何将它转换成一个.wav文件并播放它?
发布于 2016-06-11 13:45:25
若要将示例保存为.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;发布于 2017-10-31 18:48:47
1-创建一个实现ISampleProvider 2的类-使用此代码播放(sourse为ISampleProvider)
var xs = new NAudio.Wave.SampleProviders.SampleToWaveProvider16(source);
var l = new NAudio.Wave.WaveOut();
l.Init(xs);
l.Play();https://stackoverflow.com/questions/37758735
复制相似问题