【问题标题】:Comparing the "Tone" of musical instruments in MATLAB [closed]比较 MATLAB 中乐器的“音调”[关闭]
【发布时间】:2014-07-21 23:47:19
【问题描述】:

我正在尝试找到一种方法来比较使用 MATLAB 在不同乐器上演奏的相同音符的短 500 毫秒录音的相似度。

详细介绍这个特定主题:我是一名音乐专业的学生,​​我的任务是客观地确定各种现代低音铜管乐器的音调,以确定应该用什么乐器来代替过时的“ophicleide”或低音键管号。我首先使用了它的光谱仪和其他 6 种仪器的视觉比较,但这种方法过于主观。

我使用相同的麦克风、设备、增益级别和相同的音符录制了所有乐器。出于这个原因,我相信信号足够相似,可以使用 MATLAB 工具。

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

>> corr(abs(fft(eu)),abs(fft(eu2)))
ans = 0.9963

这是朝着正确方向迈出的一步,但是当我比较不同的信号时,我似乎得到了相反的结果:(上低音号和 ophicleide 听起来几乎相同)

>> corr(abs(fft(eu)),abs(fft(ophi)))  
ans =   0.5242

上低音号和低音单簧管听起来完全不同,但这表明相关性更高

>> 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

上低音号和低音单簧管 (basscl) 具有完全不同的声音和完全不同的谐波系列,但这些公式显示出比上低音号和 Ophicleide 更紧密的相关性,它们的频段看起来几乎是相同的匹配。

我担心这些相关性显示了真实音高的相关性(我在所有这些乐器上演奏相同的音符,但 Ophicleide 可能失调高达 1 Hz)它也可能是相位的原因,甚至是总振幅。

有谁知道比较这些复杂波形的谐波比例的更好的清晰方法?

还是我找错树了?

【问题讨论】:

  • 有趣的问题!正如你所说,如果音符走调,我认为这会扭曲相关数据。您也许可以将一系列音高变化应用于其中一个信号(通过在时域中重新采样),从 -2 Hz 到 2 Hz(对于特定演奏的音符),然后选择与另一个信号具有最高相关性的移位音频文件。这样您就可以纠正可能缺少调优的情况
  • 问题解决了吗?我很想知道你是如何解决这个问题的?您是否使用 z-chirp 变换之类的方法来获得缩放的 fft 频谱来确定音高?

标签: matlab signal-processing fft pitch-tracking


【解决方案1】:

我不是这方面的专家,但我知道有几个音频功能可以帮助解决此类问题:线性预测编码 (LPC) 和梅尔频率倒谱系数 (MFCC)。

快速搜索会发现大量信息。作为一个例子,我发现了this onethis one(没有阅读它们,但它们看起来很相关)。

这应该让你开始。根据您的兴趣,您可以深入研究这个主题。例如,一件事是比较不同乐器演奏的音符的稳态,但我的理解是瞬态(起音)在感知上是极其相关的。

祝你好运!

【讨论】:

    【解决方案2】:

    关于您的具体问题,您计算的数量本质上是光谱相干函数的最大值。问题在于,如果信号在统计上是平稳的,那么频谱相干性只是衡量两个信号之间相关性的良好指标。也就是说,如果信号中频率的概率分布不随时间变化。

    不幸的是,乐器的音符信号不太可能是静止的,因为在区分同一音符在不同乐器上对人耳“发声”的方式之间的差异最重要的特征是由于谐波和调制更多可能会随着音符的持续时间而变化。

    因此,您需要一个频域或时频域度量来更好地捕捉频谱的非平稳部分之间的相似性,而不是使用频谱相干性。 注意光谱。

    此时,选择哪些 MATLAB 函数已不再是问题(尽管如果您有该工具箱,请查看 Signal Processing Toolbox 文档中的 this example 可能会帮助您入门)。更多的是研究信号处理和特征分类技术的问题。在这里,您确实必须阅读有关音乐声学的文献。这是just one abstract link - 我无权访问 ACM,但如果您是学生,您可以通过您的大学访问。

    祝你好运!听起来很有趣的问题!

    【讨论】:

    • 您的观察是正确的,攻击、释放和颤音是其他显着特征。铜管乐器上的颤音“据说”在这段时间内不会被使用,这是由演奏者修改创建的。 ophicleide 的起音时间是现代阀门乐器的三倍(大约 35 毫秒),我在本章中包含了这些信息。我拥有的样本是固定的,因为我只讨论“音调”或乐器的频谱。但是你链接到的文章......!!!质心平均值到目前为止有效!我会更新
    • 质心平均值通过感知“亮度”对声音进行排序,这是我发现的音质的最佳客观衡量标准。
    猜你喜欢
    • 2011-02-18
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2010-10-10
    相关资源
    最近更新 更多