天天看点

基于GMM的语音识别python实现

以下是github 库的README, 原理的话很多csdn大佬已经清楚了,这里只给出实现代码:

地址:GMM-miaogen

课程的多媒体作业,填坑

题目描述:

用录音宝录下3到5个人的谱音每一个,每个人10s到20s,建立GMM声纹识别模板,设置场景–声纹模板内的所有人交替讨论一个话题,大约2分钟,用GMM模型分割识别讲话人的身份。并统计时间。

思路:通过提取音频原本的语音特征形成一个集(聚类)以后,对后来的数据进行概率判断,类似于之前的大作业使用的annoy库中kmeans实现,kmeans利用的是距离,而GMM这里使用的是概率,前者中的K和GMM中Ncomponent也是类似的。

程序流程如下图所示:

基于GMM的语音识别python实现

程序结果:

基于GMM的语音识别python实现

USAGE:

在sapmle文件夹中放入样本文件,修改main 中的files对应的文件名和对应的name(上一行), 并且在文件夹下 放入被测试文件,修改beTestFile文件,就可以运行了

总结:在这个实验过程中,训练的时间占比并不是很大,占大头的是GMM 的打分过程,这个过程中,需要对每一段音频,都分别打分并比较,是一个O(n2)的过程,这个过程应该可以进行优化形成log(n)的比较过程,思路与annoy建树类似,通过对产生的GMM模型进行聚类,然后输入被测试数据的GMM,进行比较。

在测试的过程中,发现录音的环境还是很重要的,其中有两个录音样本的质量不好,导致判别出错。一个录音样本,离麦克风比较远,声音比较小,另一个就是第一个测试结果出错的那个样本,环境音很杂。

有点不足的地方:这次的实验样本有点少,并不能充分的说明程序的正确性。

欢迎star/拍砖