我正在录制像17k这样的频率,并尝试使用Goertzel滤镜对其进行解码。
我认为NAdio正在过滤一些高频率,尽管我的程序中根本没有过滤器。
我用Audacity录制了相同的声音文件并看到了精细的光谱。
现在,我用我的c#程序用这种录制声音的代码做同样的事情:
void myWaveIn_DataAvailable(object sender, WaveInEventArgs e)
{
myMemoryStream.Write(e.Buffer, 0, e.BytesRecorded);//this is for playing the myMemoryStream
for (int index = 0; index < e.BytesRecorded; index += 2)//Here I convert in a loop the stream into floating number samples
{
short sample = (short)((e.Buffer[index + 1] << 8) |
e.Buffer[index + 0]);
samples32Extended.Add(sample);
samples32.Add(sample / 32768f);//IEEE 32 floating number
}
}
然后,我生成一个二进制文件,以便在MATLAB中读取它以查看它的光谱:
float[] samples32array = samples32.ToArray();
using(BinaryWriter writer = new BinaryWriter(File.Open("C:/Users/alon/Desktop/myRecordings/myRecordBin.bin", FileMode.Create)))
{
foreach (var value in samples32array)
{
writer.Write(value);
}
}
然后,matlab的光谱是这样的:
我不知道发生了什么......必须得到你的帮助..谢谢