当前位置 : 主页 > 编程语言 > python >

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 设计了基于隐马尔可夫模型(HiddenMarkovModel,HMM)的非特定人汉语语音识别系统,主要由录音、训练和识别三大模块构成.“录音模块”首先录制一


 1 简介

设计了基于隐马尔可夫模型(HiddenMarkovModel,HMM)的非特定人汉语语音识别系统,主要 由 录 音、 训练和识别三大模块构成.“录音模块”首先录制一段指定长度的语音信号,然后通过对语音信号的短时能量和

过零率进行门限检测,标志出有效语音段并保存.“训 练 模 块”利 用 Baum-Welch算法计算语音样本的 MFCC (MelFrequencyCepstrumCoefficient)参数生成识别用的语音模板.“识 别 模 块”利 用 HMM 识别算法比较语音信号和语音模板的相似概率,找到最大值输出,完成语音识别功能.最 后,在 MATLAB中实现了该语音识别系统.实验结果表明,系统的识别率为90%以上,若结合足够的训练,识别率可以更高.

HMM 是语音信号处理中的一种统计模型,是 由 Markov链演变来的,所以 它 是 基 于 参 数 模 型 的统计识别方法.由于其模式库是通过反复训练形成的与训练输出信号吻合概率最大的最佳模型参数而不是预先储存好的模式样本,且其识别过程中运用待识别语 音 序 列 与 HMM 参数 之 间 的 似 然 概 率达到最大值所对应的最佳状态序列作为识别输出,因此 HMM 是较理想的语音识别模型.

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_语音信号

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_语音信号_02编辑


【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_差分_03

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_差分_04编辑


【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_语音识别_05

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_语音识别_06编辑


2 部分代码

function ccc = mfcc(x)% 归一化mel滤波器组系数%对输入的语音序列x进行MFCC参数的提取,返回MFCC参数和一阶%差分MFCC参数,Mel滤波器的阶数为24%fft变换的长度为256,采样频率为8000Hz,对x 256点分为一帧bank=melbankm(24,256,8000,0,0.5,'m');%24:滤波器个数 256: length of fft 8000:采样频率%size(bank);bank=full(bank);bank=bank/max(bank(:));% DCT系数,12*24for k=1:12 n=0:23; dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));end% 归一化倒谱提升窗口w = 1 + 6 * sin(pi * [1:12] ./ 12);w = w/max(w);% 预加重滤波器xx=double(x);xx=filter([1 -0.9375],1,xx); %y(n)=x(n)-0.9375x(n-1);% 语音信号分帧xx=enframe(xx,256,80);% 计算每帧的MFCC参数for i=1:size(xx,1) %size(xx,1)返回xx的行数 249*256 y = xx(i,:); s = y' .* hamming(256); %乘窗 x.*y是对应位置的元素相乘 t = abs(fft(s)); t = t.^2; %计算能量%功率谱 c1=dctcoef * log(bank * t(1:129)); %这里选择的帧长为256点,然后FFT的点数也为256,由于是对称的, %所以只取前面一半的点计算频谱。然后加入到三角滤波器中。 c2 = c1.*w'; % w为归一化倒谱提升窗口 m(i,:)=c2'; end%差分系数dtm = zeros(size(m));for i=3:size(m,1)-2 dtm(i,:) = -2*m(i-2,:) - m(i-1,:) + m(i+1,:) + 2*m(i+2,:);enddtm = dtm / 3;%合并mfcc参数和一阶差分mfcc参数ccc = [m dtm];%去除首尾两帧,因为这两帧的一阶差分参数为0ccc = ccc(3:size(m,1)-2,:);

3 仿真结果

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_语音识别_07

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_语音信号_08编辑


4 参考文献

[1]李荣松. 基于HMM的非特定人孤立词语音识别[D]. 中国民航大学, 2011.

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

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

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_语音识别_09

【说话人识别】基于HMM实现非特定人孤立词语音识别附MATLAB代码_差分_10编辑




网友评论