matlab - 在MATLAB中比较乐器"音调"的信号处理

  显示原文与译文双语对照的内容

我试图找一种方法比较比较短的500毫秒记录使用相同音符的MATLAB在不同仪器。

关于这里特定主题的详细内容: 我是一个音乐学生,以客观的方式确定各种现代低黄铜仪器的音调来确定过时的"ophicleide"。 我首先使用了它的他仪器和 6种仪器的视觉比较,但这种方法太主观了。

我用同样的麦克风,设备,增益等级记录了所有的仪器。 由于这个原因,我相信信号是足够类似于使用MATLAB工具。

我认为比较 fft 将是最精确的计算。 我首先尝试了频域相关性,并测试了同一音调的不同段( eueu2 变量) 。


>> corr(abs(fft(eu)),abs(fft(eu2)))


ans = 0.9963



这是正确方向的一步,但我比较不同的信号时,我看到了相反的结果: ( euphonium和ophicleide声音几乎相同)


>> corr(abs(fft(eu)),abs(fft(ophi))) 


ans = 0.5242



euphonium和低音单簧管完全不同,但这显示出更高的相关性


>> corr(abs(fft(eu)),abs(fft(basscl))) 


ans = 0.8506



我尝试了一个归一化最大交叉相关震级公式,但我在网上得到了同样的结果


>> norm_max_xcorr_mag = @(x,y)(max(abs(xcorr(x,y)))/(norm(x,2)*norm(y,2))); x =eu2; y = eu; norm_max_xcorr_mag(x,y)


ans = 0.9638



在比较其他示例时,我得到了类似的结果


>> norm_max_xcorr_mag = @(x,y)(max(abs(xcorr(x,y)))/(norm(x,2)*norm(y,2))); x = eu; y = basscl; 


ans = 0.6825




>> norm_max_xcorr_mag = @(x,y)(max(abs(xcorr(x,y)))/(norm(x,2)*norm(y,2))); x = eu; y = ophi; norm_max_xcorr_mag(x,y)


ans = 0.3519



Euphonium和Ophicleide完全不同的是,这些公式与和有着完全不同的关系,但这些公式的频率带看起来几乎是相同的匹配。

我担心这些相关性显示了 true的相关性,它也可以是相位的会计,甚至总幅度。

有谁知道在比较这些复杂波形的谐波泛音比例时是否有更好的切割方法?

还是我barking错误的树?

时间: 原作者:

关于你的具体问题,你所计算的数量实际上是光谱相干函数的最大值。 问题是,当信号统计稳定时,光谱相干度只是两个信号相关性的一个很好的测量。 也就是说,如果信号中频率的概率分布不随时间变化。

不幸的是,音乐音符信号不可以能是固定的,因为在不同的音符上分类"声音"是不可以能的。

所以,你需要一个频域或者时频域度量,更好地捕获不稳定部分的不稳定部分。

这里时,( 尽管我们将从信号处理工具箱文档中查看 ,但是如果你有该工具箱,那么它可能会帮助你开始。) 函数选择的问题更少。 这更是研究信号处理和特征分类技术的一个。 在这里你必须去音乐声学的文学。 这里只有一个抽象链接- 我没有你的访问权限,但是你可以通过你的大学,如果你是一个学生。

祝你听起来像一个有趣的问题 !

原作者:
...