Halcom 发表于 2017-2-3 18:46:55

基于DTW模型的语音识别

   语音识别(Speech Recognition)是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术。
   文中,通过采用DTW(Dynamic time warping, 动态时间伸缩)算法,对实现孤立词的识别进行了初步探讨和研究,实现了在MATLAB软件环境下孤立词语的语音识别,并针对DTW的主要特点及不足做出了总结。
   DTW算法基于动态规划(DP)的思想,解决了孤立词发音长短不一的模板匹配问题。文中还针对动态规划的不足提出了改进。


clc,close all,clear all;
warning off
%% 选择训练样本
% geshi = { '*.wav','wav video (*.wav)';...
%      '*.bmp','Bitmap image (*.bmp)';...
%      '*.*','All Files (*.*)'};
% = uigetfile(geshi,'导入外部数据',...
% '*.wav','MultiSelect','on');% 选中所有的音频文件
% % 如果选择了音频文件,生成图片文件的完整路径,否则退出程序,不再运行后面命令
% if ~isequal(,);
%   FileFullName = strcat(FilePath,FileName);
% else
%   return;
% end
% number_wavs = length(FileFullName);% 选择的音频文件个数 ,全选
% save FileFullName.mat FileFullName number_wavs
load('FileFullName.mat')
disp('正在计算参考模板的参数...')
for i=1:number_wavs
        fname = audioread(FileFullName{i});
        x=fname;
        = vad(x);
        m = mfcc(x);
        m = m(x1-2:x2-2,:);
        ref(i).mfcc = m;
   % soundview(x);
end

%% 选择测试样本
= uigetfile( { '*.wav', '选择语音文件'} ) ;
filename = strcat( pname, fname ) ;
% = audioread(filename) ;% 获取采样频率
disp('正在计算测试模板的参数...')
x=audioread(filename);
= vad(x);
m = mfcc(x);
m = m(x1-2:x2-2,:);
test.mfcc = m;

disp('正在进行模板匹配...')
dist = zeros(1,number_wavs);
for j=1:number_wavs
    dist(1,j) = dtw(test.mfcc, ref(j).mfcc);
end

disp('正在计算匹配结果...')
for i=1:1
        = min(dist(i,:));
        fprintf('测试模板 %d 的识别结果为:%d\n', i, j-1);
end




参考链接:**** Hidden Message *****


xiaotaomink 发表于 2017-12-14 13:30:15

谢谢楼主,学习了

bluewjg 发表于 2019-4-12 10:37:12

找了很久的东西,谢谢分賞

ganxiong 发表于 2020-7-27 12:52:04

谢谢楼主,DTW学习了

LJN 发表于 2020-8-21 22:46:01

终于找到了我要的资料,谢谢楼主
页: [1]
查看完整版本: 基于DTW模型的语音识别