0

我正在使用自相关算法对单声道声音(嗡嗡声、口哨声)执行音高检测,并且我得到的结果足以满足我正在尝试做的事情。但是,如果我用GF# D#的音符吹出一段旋律并记录结果,我会得到以下序列:

2x F#
3x G
14x F#
54x G
14x G#
2x D
52x F#
6x G
14x F#
3x G
2x G
28x D#
2x D
33x D#
4x D
16x D#
2x E
2x D
2x D#

我们可以看到正确的音符被识别并且它们是重复次数更多的音符,我怎么知道它是真正的音符还是只是一个过渡?是否有任何类型的过滤器可以应用于该数组并仅获取真正的音符 GF# 和 D#?

我正在使用这个 javascript 代码:https ://github.com/cwilso/pitchdetect ://github.com/cwilso/pitchdetect来执行音高检测,我想知道是否有一些后处理算法可以应用于我的结果来过滤音符,或者如果我有增加自相关算法的窗口。

在关于信号处理的那个线程(https://dsp.stackexchange.com/questions/16753/how-to-get-the-melody-from-a-signal)中,接受的答案提到了应用模式的简单后处理过滤我的音高结果序列。这个模式过滤器是什么?

4

1 回答 1

0

模式过滤器是您查看哪些音符出现最多并丢弃其余音符的地方。例如,如果你要做一个简单的模式过滤器并丢弃任何值小于 20 的东西,那么你会得到 54x G、52x F#、28x D#、33x D#

但是,您必须计算要使用的模式值,因为它取决于音符的速度。

于 2015-05-10T21:37:23.730 回答