我正在研究在聲音文件上應用濾波器的應用程序,這些濾波器應用於頻域,因此我使用NAudio庫使用此代碼從.wav文件獲取樣本:將樣本浮點數組轉換爲WAV文件格式
audio = new AudioFileReader(wav_file);
samples = new float[wave.Length];
audio.Read(samples, 0, samples.Length);
在應用了前面的代碼之後,現在我將樣本作爲float數組,然後對獲取頻域數據的樣本應用短時傅立葉變換,然後將濾波器應用於頻域數據。
然後對頻域數據應用逆短時傅立葉變換以將其轉換回時域,該時域應該與初始樣本相似,但應用了濾波器。
再次以下步驟:
- 獲取樣本(時域數據)從wav文件數組。
- 對樣本應用短時傅立葉變換得到頻域數據。
- 在頻域數據上應用濾波器。
- 在頻域數據上應用反向短時傅里葉變換以獲得樣本(時域數據)。
- 將樣本再次轉換爲wav格式以保存並播放它。
現在問題是在最後一步,我有float數組樣本(時域數據),我該如何將它轉換成.wav文件並播放它?
你應該能夠在這裏找到你所需要的:http://stackoverflow.com/questions/19715553/double-array-to-wav - 或這裏:http://stackoverflow.com/questions/9805407/normalizing-audio-how-to-convert-a-float-array-to-a-byte-array - 它有一些額外的步驟,但我相信到最後,它只需要生成你的wav文件。 – gmiley