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

【语音识别】基于隐马尔可夫链HMM实现0~9数字语音识别含Matlab源码

来源:互联网 收集:自由互联 发布时间:2022-06-18
1 简介 ​ 进入21世纪以来,多媒体信息技术飞跃发展,其中的一个热点就是语音识别技术,实现人机对话及交流一直是人类梦寐以求的.古典《天方夜谭》中的"芝麻开门"就是一种语音识别

1 简介

进入21世纪以来,多媒体信息技术飞跃发展,其中的一个热点就是语音识别技术,实现人机对话及交流一直是人类梦寐以求的.古典《天方夜谭》中的"芝麻开门"就是一种语音识别.语音识别(AutomaticSpeechRecognition)就是让机器能听懂人说的话并按照人的意图去执行相应任务,是一门涉及到信信号处理,神经心理学,人工智能,计算机,语言学,通信等学科的涉及面非常宽的交叉学科.近年来,在工业,军事,交通,医学等诸多方面都有着广泛的应用.进入21世纪以来,多媒体信息技术飞跃发展,其中的一个热点就是语音识别技术,实现人机对话及交流一直是人类梦寐以求的.古典《天方夜谭》中的"芝麻开门"就是一种语音识别.语音识别(AutomaticSpeechRecognition)就是让机器能听懂人说的话并按照人的意图去执行相应任务,是一门涉及到信信号处理,神经心理学,人工智能,计算机,语言学,通信等学科的涉及面非常宽的交叉学科.近年来,在工业,军事,交通,医学等诸多方面都有着广泛的应用.

【语音识别】基于隐马尔可夫链HMM实现0~9数字语音识别含Matlab源码_人工智能


2 部分代码

function [hmm,pout] = train(samples,M)
%输入:
% samples--样本结构
% M--为每个状态知道pdf个数,如【3 3 3 3】
%输出:
% hmm--训练完成后的hmm
K = length(samples);
%计算语音参数
disp('正在计算语音参数……')
for k=1:K
if isfield(samples(k),'data')&~isempty(samples(k).data)
continue;
else
samples(k).data = mfcc(samples(k).wave);
end
end
hmm = inithmm(samples,M);
for loop =1:20
fprintf('\n第%d遍训练\n\n',loop)
hmm = baum(hmm,samples);
%计算总输出概率
pout(loop) = 0;
for k=1:K
pout(loop) = pout(loop)+viterbi(hmm,samples(k).data);
end
fprintf('总和输出概率(log)=%d\n',pout(loop));
%比较两个HMM的距离
if loop>1
if abs((pout(loop)-pout(loop-1))/pout(loop))<5e-6;
fprintf('收敛\n');
end
end
end
disp('迭代20次仍不收敛,退出');

3 仿真结果

【语音识别】基于隐马尔可夫链HMM实现0~9数字语音识别含Matlab源码_信号处理_02

【语音识别】基于隐马尔可夫链HMM实现0~9数字语音识别含Matlab源码_信号处理_03

【语音识别】基于隐马尔可夫链HMM实现0~9数字语音识别含Matlab源码_人工智能_04

4 参考文献

[1]靳双燕. 基于隐马尔可夫模型的语音识别技术研究[D]. 郑州大学, 2013.

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

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


【语音识别】基于隐马尔可夫链HMM实现0~9数字语音识别含Matlab源码_信号处理_05

网友评论