使用 MFCC 进行元音检测

信息处理 算法 语音识别 mfcc
2022-02-17 11:42:55

有人知道从 MFCC 中识别元音的简单方法吗?(不是单词,只是音素:a,e,i,o,u)。

我听说这是 DSP 中一个广为人知的问题,有多种解决方案,如 SVM、GMM 和余弦距离。我使用一个好的音频处理库和一个有代表性的训练集尝试了最后一种方法,但似乎我的分类工作没有给出好的结果。

简而言之,我正在做的是:给定一组属于同一个音素的录音,我取所有录音的帧的平均值来创建一个包含 13 个条目的特征向量。稍后我将使用测试向量应用归一化点积来找到余弦距离。

我也读过这个线程,但他们强调通过 DTW 识别音素序列的问题,而不是前一个向量的分类问题。

LPC 是更好的方法吗?我的意思是,共振峰位置是先验的...

提前致谢!


好吧,我换个问题。该方法本质上有效(实施后),当我说A,E,I,O,U时它会识别。问题是它不能识别音素何时不是元音(例如辅音、瞬态噪音)。有没有一种方法可以区分元音和其他声音?也许 MFCC 是好的,因为它们获得了音色特性,但余弦分类器并不是最好的解决方案。任何人?

2个回答

您可以只实现一个 VAD(语音活动检测器),其参数足够高以过滤出浊辅音。一个总是让我惊讶的 VAD 是零交叉率,因为它实现起来非常简单,但在数学上建模却非常困难。

我建议您查看CMU 的开源语音识别库 Sphinx4运行 Transcriber 示例,您可以看到它正在执行一些基本的语音识别,将所有检测到的音素写入控制台。您可以在此时过滤掉非元音音素,或者实施语法外拒绝规则,其中语法外指的是非元音音素。