首页 > 行业资讯 > 【说话人识别】基MFCC特征最近邻说话人识别系统含Matlab源码

【说话人识别】基MFCC特征最近邻说话人识别系统含Matlab源码

时间:2023-01-09 来源: 浏览:

【说话人识别】基MFCC特征最近邻说话人识别系统含Matlab源码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #信号处理应用matlab源码 329个

1 简介

说话人识别又称声纹识别,是由计算机利用语音勃兴中所包含的反映特定说话人生理和行为特征的语音特征参数来自动识别说话人身份的技术.Mel频率倒谱系数(MFCC)分析着眼于人耳的听觉特性,依据听觉试验结果来分析语音得倒谱,获取较高的识别率和较好的噪声鲁棒性.本文通过对MFCC特征参数的提取过程的介绍,提出了一种基于MFCC的说话人识别算法.

2 部分代码

function [x1,x2]=vad1( x ,framelen,framelnc) % 幅度归一化[- 11 ] 1 x =double( x ); x = x /max( abs ( x )); %常数设置 %framelen= 256 ; %framelnc= 100 ; amp1= 10 ; amp2= 2 ; zcr1= 10 ; zcr2= 5 ; maxsilence= 3 ;%3* 10 ms= 30 ms minlen= 15 ; %15* 10 ms= 150 ms status= 0 ; count= 0 ; silence= 0 ; %计算过零率 tmp1=enframe( x ( 1 : length ( x )- 1 ),framelen,framelnc); tmp2=enframe( x ( 2 : length ( x )),framelen,framelnc); signs=(tmp1.*tmp2)< 0 ; diffs=(tmp1-tmp2)> 0 . 02 ; zcr=sum(signs.*diffs, 2 ); %size(tmp1) %计算短时能量 amp=sum( abs (enframe(filter([ 1 - 0 . 9375 ], 1 , x ),framelen,framelnc)), 2 ); %size(amp) %调整能量门限 amp1=min(amp1,max(amp)/ 4 ); amp2=min(amp2,max(amp)/ 8 ); %开始端点检测 x1= 0 ; x2= 0 ; for n= 1 : length (zcr) goto = 0 ; switch status case { 0 , 1 } if amp(n)>amp1 %确信进入语音段 x1=max(n-count- 1 , 1 ); status= 2 ; silence= 0 ; count=count+ 1 ; elseif amp(n)>amp2 | zcr(n)>zcr2 %可能处于语音段 status= 1 ; count=count+ 1 ; else status= 0 ; count= 0 ; end case 2 , %2=语音段 if amp(n)>amp2 | zcr(n)>zcr2 %保持在语音段 count=count+ 1 ; else silence=silence+ 1 ; if silence<maxsilence count=count+ 1 ; elseif count<minlen status= 0 ; silence= 0 ; count= 0 ; else status= 3 ; end end case 3 , break ; end end count=count-silence/ 2 ; x2=x1+count- 1 ; subplot( 3 , 1 , 1 ) plot( x ) axis([ 1 length ( x ) - 1 1 ]) line([x1*framelnc x1*framelnc],[- 1 1 ], ’color’ , ’red’ ); line([x2*framelnc x2*framelnc],[- 1 1 ], ’color’ , ’red’ ); ylabel( ’原始信号’ ) text(x1*framelnc, 0 . 5 , ’起始端点 ightarrow’ ,... ’HorizontalAlignment’ , ’right’ ) text(x2*framelnc, 0 . 5 , ’leftarrow 结束端点 ’ ,... ’HorizontalAlignment’ , ’left’ ) subplot( 3 , 1 , 2 ) plot(amp); axis([ 1 length (amp) 0 max(amp)]) line([x1 x1],[min(amp),max(amp)], ’color’ , ’red’ ); line([x2 x2],[min(amp),max(amp)], ’color’ , ’red’ ); ylabel( ’短时能量’ ) text(x1,max(amp)/ 2 , ’起始端点 ightarrow’ ,... ’HorizontalAlignment’ , ’right’ ) text(x2,max(amp)/ 2 , ’leftarrow 结束端点 ’ ,... ’HorizontalAlignment’ , ’left’ ) subplot( 3 , 1 , 3 ) plot(zcr) axis([ 1 length (zcr) 0 max(zcr)]) line([x1 x1],[min(zcr),max(zcr)], ’color’ , ’red’ ); line([x2 x2],[min(zcr),max(zcr)], ’color’ , ’red’ ); ylabel( ’过零率’ ) text(x1,max(zcr)/ 2 , ’起始端点 ightarrow’ ,... ’HorizontalAlignment’ , ’right’ ) text(x2,max(zcr)/ 2 , ’leftarrow 结束端点 ’ ,... ’HorizontalAlignment’ , ’left’ )

3 仿真结果

4 参考文献

[1]张晶, 董金明, 冯文全. 基于MFCC的说话人识别系统研究[C]// 全国dsp应用技术联合学术会议. 中国航空学会;中国电子学会, 2008.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐