1 简介
语种识别系统通常采用支持向量机(support vectormachine,SVM)一对多分类加Gauss后端分类器的方法进行分类.传统的SVM一对一分类在进行线性鉴别性分析(linear discriminant analysis,LDA)时特征值矩阵往往为奇异的,识别性能很低.该文提出一种改进的一对一分类方法,对SVM一对一分类得分重新建模,识别性能明显提高.在美国国家标准技术署(National Institute of Standardsand Technology,NIST)2011年语种识别评测(languagerecognition evaluation,LRE)30s数据集上的实验结果表明:在采用SVM的全变化量因子分析(total variability,iVector)和支持向量机-Gaussn超向量(support vectormachine-Gaussian super vector,SVM-GSV)语种识别系统上,该方法比SVM一对多分类方法性能更好,并且两种方法线性融合可明显提升识别性能,在iVector系统上各指标相对提升7.7%~15.9%,在SVM-GSV系统上各指标相对提升11.2%~33.9%.
2 部分代码
%提取基音周期,得到1*N维的特征向量function PCH=framepitches(x,fs,zchang,zyi)[nrows,ncols]=size(x); if nrows>1 x=x';enddata=enframe(x,zchang,zyi);[nframe,flen]=size(data);for ij=1:nframe, R=zeros(1,flen); %基音周期(n)多次分析数组 for k=1:flen-1 %求自相关序列 for jj=1:flen-k R(k)=R(k)+data(ij,jj)*data(ij,jj+k); end end zer=find(R==0); %找第一个零点如果存在 jiaocha=0; %找第一近零点 ii=1; while (jiaocha<=0) if(R(ii)>0 && R(ii+1)<0 && (ii+1)<length(R)) jiaocha=ii; end ii=ii+1; if ii==length(R) %没有找到符合要求的点 jiaocha=1; end end if length(zer)>0 %检查是否存在零点 if zer(1)<jiaocha %存在,则和jiaocha比较大小,用于祛除前点的对基音周期的查找带来的影响 jiaocha=zer(1); end end R(1:jiaocha)=0; %祛除影响 maxn=max(R); %找最大值 temp=find(R==maxn);%返回第一个最大值 nmax=temp(1); pitch=fs/nmax; PCH(1,ij)=pitch; end
3 仿真结果
4 参考文献
[1]王宪亮, 吴志刚, 杨金超,等. 基于SVM一对一分类的语种识别方法[J]. 清华大学学报:自然科学版, 2013(6):5.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。