用于对相似度进行评级的语音比较算法

信息处理 声音的 mfcc
2021-12-22 19:08:12

我正在尝试比较 2 个语音样本并根据相似性对它们进行评分。想想有人试图重复一个短语,然后比较这两个音频文件。

我首先实现了 MFCC (http://en.wikipedia.org/wiki/Mel-frequency_cepstrum) 算法。我计算了两个音频样本的 MFCC,这给了我大约 500 帧音频(每帧 10 毫秒,与前一个有 30% 的重叠),具有 14 个左右的 MFCC 系数。所以每个音频信号都有一个 500x14 的矩阵。

然后我做了简单地区分矩阵的简单方法。这并没有给出非常有希望的结果。当我比较完全不同的音频样本(说出不同的短语)时,有一半的时间,我得到差异比比较我尝试重复相同短语的音频要小!这显然是倒退的,不能给我一个好的评分算法。

我该如何改进呢?我认为 MFCC 是语音处理中非常重要的一部分,但显然我需要用它做更多的事情。

1个回答

首先,您必须纠正时间上的差异。例如,如果一个话语是“--heeellooooo---”而另一个是“hellooooooo----”(- 表示沉默),则 MFCC 帧的直接成对比较将显示差异,因为这两个样本没有对齐。您可以使用动态时间扭曲来找到两个特征向量序列之间的最佳对齐 - 并计算相应的距离。

第二个问题是,如果两个录音不是来自同一个扬声器,您将不得不补偿音色上的差异。女性说“aaa”的 MFCC 与男性说话者说相同音素的 MFCC 不一样!解释语音音色变化的一个相对简单的模型是假设存在一个线性变换 ,它将一个说话者的 MFCC 映射到另一个说话者的 MFCC 上(公平地说,这些变换中只有一小部分是准确的模拟年龄、性别等参数如何“改变”MFCC)。一旦两个记录已经对齐,即使是粗略的,您可以使用最小二乘程序来估计此过程称为说话人归一化或说话人自适应。ΓΓ

因此,您的比较过程将包括以下步骤。是您的原始 MFCC 序列。AB

  • 使用 DTW 对齐两个话语。这会产生,一个矩阵,其中来自的观察值被扭曲/移位以与中的观察值对齐。来自同一个扬声器,您可以在此停止。AABAB
  • 估计之间差异ΓΓAB
  • 之间的距离作为度量。ΓAB

我想到的最后一件事是,您必须丢弃第一个 MFCC 系数(粗略地表示信号响度)以提高系统的能力,以匹配在不同音量/录音级别下发音的话语。