如何从wav文件中检索帧编号和帧大小

时间:2012-01-18 11:41:37

标签: c# audio sound-recognition hamming-window

我目前正在做一篇关于使用EPCP作为输入的EPCP进行和弦识别的论文,但现在我仍然坚持确定单个wav文件的帧数和帧大小。我需要这些数据作为NAudio库中汉明窗函数的参数

public static double HammingWindow(int n, int frameSize)

我已经检索了所有可用的wav标头,但我不知道如何获得帧数和帧大小。 我可以从给定的标题数据中计算它吗?或者还有另一种方式吗?

3 个答案:

答案 0 :(得分:2)

如果你知道汉明窗是什么,你就不会问这样的问题。 维基百科文章告诉你关于它的一切。

我自己不是DSP方面的专家,但我在业余时间一直在使用它几个月。 我可以告诉你的一切是,这是一个绝对复杂的领域! 在一周左右的时间内你无法掌握任何东西。 学生在高中的几个学期接受这一领域的教育。 就像旁注一样。

所以,关于你的问题:

您可以选择块大小,这通常是从您的音频硬件预先确定的。 它总是有2的基数,所以128,256 ....典型的是1024。 这是你的框架尺寸。

使用WAV文件时,您可以根据需要选择framesize。 它应该符合上述标准。

此上下文中的一个窗口是一个“曲线”,它在时间0开始时带有一些值,并以frameSize-1结束并带有一些值。

函数的参数“n”是此窗口中的位置。 该函数返回0到1之间的值,表示“n”处的值。

答案 1 :(得分:1)

NAudio有一个WPF演示,其中SampleAggregator.cs使用HammingWindow函数。您是否检查过该样本并了解其使用方法?

答案 2 :(得分:1)

我没有使用过HammingWindow。根据{{​​3}}的框架是 像样本一样,但对于多通道格式“特定数据点上所有通道的快照”。

您可以使用标题中的this来获取样本大小,如果这实际上是您想要的。