有人可以在matlab中给我一个关于这个问题的想法吗?
我有 4 个包含鸟鸣的 .wav 文件。每个 .wav 文件代表不同的鸟。给定一个输入 .wav 文件,我需要确定它是哪只鸟。我知道我必须进行频谱比较才能找到解决方案。但不太清楚我应该如何使用频谱图来帮助我到达那里。
PS我知道频谱图是怎么做的,并且已经用它绘制了很多.wav文件
有人可以在matlab中给我一个关于这个问题的想法吗?
我有 4 个包含鸟鸣的 .wav 文件。每个 .wav 文件代表不同的鸟。给定一个输入 .wav 文件,我需要确定它是哪只鸟。我知道我必须进行频谱比较才能找到解决方案。但不太清楚我应该如何使用频谱图来帮助我到达那里。
PS我知道频谱图是怎么做的,并且已经用它绘制了很多.wav文件
有几种方法可以解决模式识别问题,就像您正在谈论的那样。
您可以将 FFT 之类的频率分析与 matlab 函数一起使用
S = SPECTROGRAM(X,WINDOW,NOVERLAP)
您需要在SPECTROGRAM
变量中定义要分析的信号的时间窗口WINDOW
。WINDOW = [1 1 1 1 1 1 1 ... 1]
您可以使用值数等于所需长度的矩形窗口(示例)。有很多窗口可以使用:hanning、hamming、blackman。您应该使用对您的问题更好的一种。这NOVERLAP
是您的窗口一步移动的点数。
除了这种方法,小波变换也是解决问题的好技术。Matlab 也有一个很好的工具箱来应用离散和连续小波。
这可能被证明是一个复杂的问题。作为一个起点,我建议您将每条记录分成一些固定长度的帧,例如 20ms 和 10ms 重叠,然后提取这些帧的 fft 并获得一些最大能量频率。每个帧的值。作为最后一步,将帧频率相互比较,并通过选择最大相关性来确定结果