一、高斯混合模型简介

GMM基本框架

类似的还有GMM-UBM(Universal background model)算法,其与GMM的区别在于:对L类整体样本训练一个大的GMM,而不像GMM对每一类训练一个GMM模型。SVM的话MFCC作为特征,每一帧作为一个样本,可以借助VAD删除无效音频段,直接训练分类。近年来也有利用稀疏表达的方法:

二、部分源代码

% ====== Load wave data and do feature extraction
clc,clear
waveDir='trainning\';
speakerData = dir(waveDir);
%Matlab使用dir函数获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中.
% dir函数可以有调用方式
% dir('.') 列出当前目录下所有子文件夹和文件
% dir('G:\Matlab') 列出指定目录下所有子文件夹和文件
% dir('*.m') 列出当前目录下符合正则表达式的文件夹和文件
% 得到的为结构体数组每个元素都是如下形式的结构体
%         name    -- filename
%         date    -- modification date
%         bytes   -- number of bytes allocated to the file
%         isdir   -- 1 if name is a directory and 0 if not
%         datenum -- modification date as a MATLAB serial date number
% 分别为文件名,修改日期,大小,是否为目录,Matlab特定的修改日期
% 可以提取出文件名以作读取和保存用.
speakerData(1:2) = [];
speakerNum=length(speakerData);%speakerNum:人数;% ====== Feature extraction
fprintf('\n读取语音文件并进行特征提取...       ');
% cd('D:\MATLAB7\toolbox\dcpr\');
for i=1:speakerNumfprintf('\n正在提取第%d个人%s的特征\n', i, speakerData(i,1).name(1:end-4));[y, fs, nbits]=wavread(['trainning\' speakerData(i,1).name]);epInSampleIndex = epdByVol(y, fs);       % endpoint detection端点检测y=y(epInSampleIndex(1):epInSampleIndex(2));    % silence is not used去除静音speakerData(i).mfcc=wave2mfcc(y, fs);fprintf('  完成!!');
endsave speakerData speakerData;        % Since feature extraction is slow, you can save the data for future use if the features are not changed.
graph_MFCC;                                 %由于特征提取速度慢,如果功能没有改变,可以保存供日后使用的数据,
fprintf('\n');
clear all;
fprintf('特征参数提取完成! \n\n请点击任意键继续...');pause;% ====== GMM training
fprintf('\n训练每个语者的高斯混合模型...\n\n');
load speakerData.mat
gaussianNum=12;                    % No. of gaussians in a GMM高斯混合模型中的高斯个数
speakerNum=length(speakerData);for i=1:speakerNumfprintf('\n为第%d个语者%s训练GMM……\n', i,speakerData(i).name(1:end-4));[speakerGmm(i).mu, speakerGmm(i).sigm,speakerGmm(i).c] = gmm_estimate(speakerData(i).mfcc,gaussianNum);fprintf('  完成!!');
endfprintf('\n');
save speakerGmm speakerGmm;
pause(10);
clear all;
fprintf('高斯混合模型训练结束! \n\n请点击任意键继续...');pause;% ====== recognition
fprintf('\n识别中...\n\n');
load speakerData;
load speakerGmm;[filename, pathname] = uigetfile('*.wav','select a wave file to load');if pathname == 0errordlg('ERROR! No file selected!');return;end
wav_file = [pathname filename];
[testing_data, fs, nbits]=wavread(wav_file);pause(10);
match= MFCC_feature_compare(testing_data,speakerGmm);disp('待测模型匹配中,请等待10秒!')pause(10);
[max_1 index]=max(match);
if length(filename)>7fprintf('\n\n\n说话人是%s。',speakerData(index).name(1:end-4));
elsefprintf('\n\n\n说话人是%s。',filename(1:end-4));
end

三、运行结果










四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

【语音识别】基于matlab MFCC GMM语音识别【含Matlab源码 535期】相关推荐

  1. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  2. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  3. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  4. 【Matlab语音隐写】DCT+DWT音频数字水印嵌入提取【含GUI源码 836期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DCT+DWT音频数字水印嵌入提取[含GUI源码 836期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  5. 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  6. 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  7. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  8. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  9. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

最新文章

  1. vxworks gcc linux,针对VxWorks的GCC交叉编译器无法编译C++
  2. 收集的yum命令博文
  3. 青岛智能院助力智慧城市 打造智能产业“黄埔军校”
  4. 注解版poi操作工具
  5. 线性代数向量内积_向量的外积| 使用Python的线性代数
  6. 5m独享网站服务器,您真的需要独享5m云服务器吗?一文让您了解云服务器带宽计算方法,从此不再花冤枉钱...
  7. 图片尺寸判断等-我们到底能走多远系列(21)
  8. C语言基础:用快速排序实现输出最大数
  9. 一个前端UI资源共享网站
  10. 网络工程师考试-计算机网络笔记
  11. C10K 和 C1000K
  12. 高彩色显示图标(转)
  13. 解决github下载及访问不稳定问题
  14. wps计算机里wps云盘图标,我的电脑中的wps网盘图标怎么设置删除
  15. 计算机的工作原理(冯诺依曼体系)
  16. Intent直接跳转到Fragment
  17. GP工作室的项目计划书
  18. 阿里天池街景字符编码YOLO5方案
  19. 杭电2019多校第三场 HDU-6608 Fansblog
  20. Linux pip安装与使用

热门文章

  1. 20155302《网络对抗》Exp7 网络欺诈防范
  2. Mahout实战---编写自己的相似度计算方法
  3. 第一阶段 PHP基础.函数
  4. C++ eof()函数相关应用技巧分享
  5. tsinsen A1333
  6. labelImg安装小记
  7. learning opencv3: 四:Mat
  8. 20200728每日一句
  9. 20200517每日一句
  10. 20200102每日一句