2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【语音识别】基于matlab MFCC GMM语音识别【含Matlab源码 535期】

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

时间:2021-08-22 17:55:46

相关推荐

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

一、高斯混合模型简介

GMM基本框架

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

二、部分源代码

% ====== Load wave data and do feature extractionclc,clearwaveDir='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 extractionfprintf('\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 trainingfprintf('\n训练每个语者的高斯混合模型...\n\n');load speakerData.matgaussianNum=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;% ====== recognitionfprintf('\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版本

a

2 参考文献

[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,.

[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。