这是我第一次尝试在 C# 上分析音频流。没有任何经验,如果您分享您的解决方案,将不胜感激。:)
使用 NAudio(处理音频的 C# 的开源),我尝试将两个音频流与以下阶段进行比较:
读取 .wav 文件并以 16 位存储在 float[] 中:
audio = new AudioFileReader("test.wav"); _buffer = new float[wave.length]; audio.Read (_buffer, 0, _buffer.Length);
传递
float[]
toSmbPitchShifter()
,并设置PitchShift=1
(不改变音高),将 osamp 设置为跃点大小,并传递 _buffer。sps = new SmbPitchShifter(); sps.PitchShift(1, _buffer.Length, 2048, 32, 44100, _buffer);
最后,使用 DTW 算法比较两个 STFT float[]。
现在,我被困在第 2 阶段,并且有一些问题:
1. 我不完全知道我的 sampleRate 是多少,但默认设置为 44100...
2. 在上面的代码之后,我得到了一个新的 _buffer 浮点数[],
在 stage2 1之后使用 dater :https ://imgur.com/a/VLmHJ
因为我知道 STFT 之后的数据应该是 [-1.0, 1.0)。我错过了哪一步,或者我一开始就完全错了?
3.我不知道NAudio用的是什么窗口。NAudio.Dsp.SmbPitchShifter.CS from github
这些困扰了我很久。如您所知,我是音频分析的新手,非常感谢您的建议。祝你有美好的一天。