确定音频与人类语音的相似程度

信息处理 声音的 算法 语音识别
2021-12-29 08:48:19

在寻找这个问题的答案时,我发现了这个板,所以决定从 Stack Overflow交叉发布我的这个问题。


我正在寻找一种确定音频片段和人声之间相似度的方法,这种相似度用数字表示。

我已经搜索了很多,但到目前为止我发现的内容(如下详述)并不真正符合我的需要:

  • 一种方法是使用语音识别软件从音频片段中获取单词。但是,这种方法无法得出音频与人类语音“相似”的程度;它通常可以判断音频中是否有单词,但如果没有确定的单词,它就无法判断音频是否接近有这样的单词。
    示例:CMU 狮身人面像蜻蜓呼喊

  • 更有前途的方法被称为语音活动检测(VAD)。然而,这往往具有相同的问题:使用 VAD 的算法/程序往往只返回是否已达到活动阈值,并且在此阈值之前或之后没有“相似性”值。或者,许多人只是寻找音量,而不是与人类语音的相似性。
    示例:SpeexListenerFreeSWITCH


有任何想法吗?

1个回答

这类问题通常使用机器学习技术来解决。

将信号分解为 20 毫秒或 50 毫秒的帧序列。在每一帧上提取特征。MFCC 通常适用于这种应用,尽管有更具体的语音检测功能(4 Hz 调制能量 - 大致是人们说话的速率;过零率)。

然后,使用您手动标记为语音/非语音的音频训练集,在帧特征上训练分类器(高斯混合模型、SVM ...)。

这将允许您将未标记的帧分类为语音/非语音类。最后一步包括平滑决策(被分类为非语音的帧被数百个语音帧包围可能是分类错误),例如使用 HMM,或仅使用中值滤波器。

几个参考:

音频文档中的鲁棒语音/音乐分类 (Pinquier & al) 多媒体应用的语音/音乐辨别 (El- Maleh & al) 语音/音乐辨别 功能的比较 (Carey & al)

请注意,他们描述的特征和分类技术也与检测语音的 1 类问题相关(而不是区分语音与其他东西)。在这种情况下,您可以使用 1-class 建模技术,例如 1-class SVM,或者只是将在语音数据上训练的 GMM 中的似然分数作为“speechiness”度量。

另一方面,如果您的问题确实是区分语音和其他东西(比如音乐),您也可以很好地使用专注于检测相似音频内容之间的边界的无监督方法- 而不是识别此内容本身。