找到声音信号的相似性

信息处理 fft 信号分析 声音
2022-02-03 21:05:31

所以我正在开发一个程序来比较一个单词的发音之间的相似性,首先我得到了音频文件,我在它上面使用 FFT 来获得频率阵列上的幅度,然后我只是将所有东西平方得到能量谱密度其中。可以从我自己说的同一个单词的 4 个样本的频率中得出的图表看起来非常相似,如我在此处包含的图片所示。所有 4 个样本都有 2000 个值,代表从 0 到 ~800Hz 的频率。

但是因为即使是我说这个词 4 次,这个词的频率也不能每次我说那个词时都一样,这些图表看起来很相似,但它们之间有一些不同的样本,比如第二个最高点第一张图在数值 1150 处,第二张图在 1124 处,第三张在 1132 处,第四张在 1160 处,第一个峰值发生同样的事情。

所以我的问题是:我如何实际比较这 4 个图表以显示它们有多相似?因为我第一次被建议做的是使用均方误差,但由于各地略有不同,它们效果不佳。

4 样品图

1个回答

为了比较单个单词的多个发音之间的相似性,您计算的频谱功率是一个过于笼统的特征,并没有捕捉到发音变化可能来自的声道形状的细节。

我建议您计算梅尔频率倒谱系数 (MFCC),它广泛用于语音识别系统,因为它捕获了声道短时功率谱的包络。您可以在FFT代码上进行构建,但也有许多不错的工具包可用。

一旦你有了每个发音的 MFCC 序列,你就可以使用动态时间扭曲来计算它们之间相应的“距离”或“相似性”。