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