基于MFCC和gmm特征实现语音识别附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

采用能够反映人对语音的感知特性的Mel频率倒谱系数(MFCC)作为特征参数,以及为避免时间规整问题采用矢量量化技术开发的说话人识别系统.MFCC主要的是模拟人耳的听觉过程,相对于其它参数它对语音波形的变化不敏感,更加稳定,系统取得很好的识别结果,实验表明系统训练和识别的计算量和存储量都比较低.

⛄ 部分代码

function c=melcepst(s,fs)

%mel 倒谱计算,仿照的是voicebox的写法简化了

if nargin<2 fs=8000; end

w='M';         %汉明窗

 nc=12;        %mfcc维数

 p=floor(3*log(fs));   %滤波器个数

 n=pow2(floor(log2(0.03*fs)));  %n是一帧FFT后数据的长度

   fh=0.5;       %最高频率已经归一化处理了 fs/2  

   fl=0;         %一般都是0

   inc=floor(n/2);  %帧移

if length(w)==0   %如果没有设计窗函数,默认汉明窗

   w='M';

end

   z=enframe(s,hamming(n),inc);   %分帧处理,汉明窗加窗

f=rfft(z.');                      %实数的快速傅里叶变换

[m,a,b]=melbankm(p,n,fs,fl,fh,w); %     m为滤波器的频域响应

                                  %mn   the lowest fft bin with a non-zero coefficient

                                  %mx  the highest fft bin with a non-zero coefficient

pw=f(a:b,:).*conj(f(a:b,:));   %计算帧能量

pth=max(pw(:))*1E-6;           %最大帧能量*10^-6 

ath=sqrt(pth);

   y=log(max(m*abs(f(a:b,:)),ath));  %求出filters act in the absolute magnitude domain (default)

c=rdct(y).';          %实数的离散余弦变换

nf=size(c,1);       

nc=nc+1;              %得到13维系数

if p>nc

   c(:,nc+1:end)=[];  % 当滤波器个数比所需维数多的时候,就将后面滤波器获得的参数删去

elseif p<nc

   c=[c zeros(nf,nc-p)]; %滤波器个数少的时候,用0补齐

end

%得到 mel cepstrum output: one frame per row

%例如用了Rec语音检测,得到c 337*13维;将语音分成337帧,每一行得到13个特征向量表示这一帧

⛄ 运行结果

⛄ 参考文献

[1]王伟, and 邓辉文. "基于MFCC参数和VQ的说话人识别系统." 第四届全国信息获取与处理学术会议 0.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值