嗨,我对这件事很陌生,请耐心等待。我正试图将WAV文件转换为谱图,但不知道如何开始。我读了一些说要读取PCM数据(我认为是我的WAV文件)并将其存储在WavReader类的数组中,然后对其应用FFT并将其转换为GUI。我目前使用Naudio来实现这一目标,但找不到任何显示如何将WAV文件转换为光谱图的内容。谢谢将WAV文件转换为频谱图
编辑: 我发现有关转换PCM与FFT与Naudio和IM坚持。
using (var reader = new AudioFileReader("test1.wav"))
{
// test1.wav is my file to process
// test0.wav is my temp file
IWaveProvider stream16 = new WaveFloatTo16Provider(reader);
using (WaveFileWriter converted = new WaveFileWriter("test0.wav", stream16.WaveFormat))
{
// buffer length needs to be a power of 2 for FFT to work nicely
// however, make the buffer too long and pitches aren't detected fast enough
// successful buffer sizes: 8192, 4096, 2048, 1024
// (some pitch detection algorithms need at least 2048)
byte[] buffer = new byte[8192];
int bytesRead;
do
{
bytesRead = stream16.Read(buffer, 0, buffer.Length);
converted.WriteData(buffer, 0, bytesRead);
} while (bytesRead != 0 && converted.Length < reader.Length);
}
}
编辑:我也想知道是否有可能以编程方式比较2个谱图的2个不同的文件。
我认为统一游戏引擎提供了一类音频anylisys,但我不确定。 – user2417992