DTW语音识别.doc_第1页
DTW语音识别.doc_第2页
DTW语音识别.doc_第3页
DTW语音识别.doc_第4页
DTW语音识别.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录 摘摘 要要 1 1 第一章第一章 引言引言 2 2 1 1 语音识别的概况 2 1 2 语音识别系统的基本构成 2 第二章第二章 方案比较及选择方案比较及选择 4 4 第三章第三章 MATLABMATLAB 简介简介 5 5 第四章第四章 模块设计模块设计 6 6 4 1 语音信号预处理 6 4 1 1 语音信号采集 6 4 1 2 预加重 7 4 1 3 分帧 7 4 1 4 加窗 7 4 2 端点检测 8 4 2 1 短时能量 8 4 2 2 短时平均过零率 9 4 2 3 双门限端点检测 9 4 3 MFCC 参数提取 10 4 4 DTW 算法 12 4 5 程序运行流程 12 4 6 运行结果 13 第五章第五章 设计中的问题设计中的问题 1414 5 1 方案的选择 14 5 2 语音格式的选择 14 第六章第六章 参考文献参考文献 1515 第七章第七章 致谢致谢 1616 第八章第八章 附录附录 1717 计算机课程设计 1 摘摘 要要 语音识别 Speech Recognition 是让机器通过识别和理解过程把语音信 号转变为相应的文本或命令的技术 本文以一个能识别数字 0 9 的语音识别系 统的实现过程为例 阐述了基于 DTW 算法的特定人孤立词语音识别的基本原理 和关键技术 其中包括对语音端点检测方法 特征参数计算方法和 DTW 算法实 现的详细讨论 最后给出了在 Matlab 下的编程方法和实验结果 关键字关键字 语音识别语音识别 端点检测端点检测 MFCC 系数系数 DTW 算法算法 计算机课程设计 2 特征提取模式匹配 模型库 语音输入 识别结果 图 1 语音识别流程图 第一章第一章 引言引言 1 11 1 语音识别的概况语音识别的概况 自计算机诞生以来 通过语音与计算机交互一直是人类的梦想 随着计算 机软硬件和信息技术的飞速发展 人们对语音识别功能的需求也更加明显和迫 切 语音识别技术就是让机器通过识别和理解过程把人类的语音信号转变为相 应的文本或命令的技术 属于多维模式识别和智能计算机接口的范畴 传统的 键盘 鼠标等输入设备的存在大大妨碍了系统的小型化 而成熟的语音识别技 术可以辅助甚至取代这些设备 在 PDA 智能手机 智能家电 工业现场 智 能机器人等方面语音识别技术都有着广阔的前景 语音识别 语音识别 Speech Recognition 重要是指让机器听懂人说的话 即在各种情况下 准确的识别语音的内容 从而根据其信息 执行人的各种意 图或执行特定的任务 语音识别以语音为研究对象 它是语音信号处理的一个重要研究方向 是 模式识别的一个分支 涉及到生理学 心理学 语言学 计算机科学以及信号 处理等诸多领域 甚至还涉及到人的体态语言 如人在说话时的表情 手势等 行为动作可帮助对方理解 其最终目标是实现人与机器进行自然语言通信 1 21 2 语音识别系统的基本构成语音识别系统的基本构成 语音识别的典型方案如图 1 所示 输入的模拟语音信号首先要经过预处理 包括预滤波 采样和量化 加窗 端点检测 预加重等 语音信号经预处理后 接下来重要的一环就是特征参数提取 对特征参数的要求是 1 提取的特征参数能有效的代表语音特征 具有很好的区分性 2 各阶参数之间有良好的独立性 3 特征参数要计算方便 具有高效的计算方法 以保证语音识别的实时实 现 将特征参数进行一定的处理后 为每个词条得到一个模型 保存为模板库 计算机课程设计 3 在识别阶段 语音信号经过相同的通道得到语音参数 生成测试模板 与参考 模板进行匹配 将匹配分数最高的参考模板作为识别结果 同时还可以在很多 先验知识的帮助下 提高识别的准确率 计算机课程设计 4 第二章第二章 方案比较及选择方案比较及选择 常见的语音识别方法有动态时间归整技术 DTW 矢量量化技术 VQ 隐马 尔可夫模型 HMM 基于段长分布的非齐次隐马尔可夫模型 DDBHMM 和人工神经 元网络 ANN 方案一方案一 主要是基于 HMM 模型 隐马尔可夫模型 该算法通过对大量 语音数据进行数据统计 建立识别词条的统计模型 然后从待识别语音信号中 提取特征 与这些模型进行匹配 通过比较匹配分数以获得识别结果 方案二方案二 DTW 是较早的一种模式匹配和模型训练技术 它应用动态规划 的思想成功解决了语音信号特征参数序列比较时时长不等的难题 在孤立词语 音识别中获得了良好性能 虽然 HMM 模型在连续语音大词汇量语音识别系统 优于 DTW 但由于 DTW 算法计算量较少 无需前期的长期训练 故其在孤 立词语音识别系统中仍然得到了广泛的应用 特征参数提取 说话人模板1 说话人模板N 阈值Ti 特征参数提取 判决 说话人1 说话人N 训练语音 测试语音识别结果 本次选择方案二 将通过能识别数字 0 9 的语音识别系统的实现过程详细 阐述基于 DTW 算法的特定人孤立词识别的相关原理和关键技术 计算机课程设计 5 第三章第三章 MatlabMatlab 简介简介 MATLAB 是矩阵实验室 Matrix Laboratory 之意 除具备卓越的数值 计算能力外 它还提供了专业水平的符号计算 文字处理 可视化建模仿真和 实时控制等功能 Matlab 是一种解释性执行语言 具有强大的计算 仿真 绘 图等功能 而且使用简单 扩充方便 同时因为有丰富的函数库 工具箱 所 以计算的功能实现也很简单 Matlab 和其他高级语言也具有良好的接口 可以 方便的实现与其他语言的混合编程 其主要特点在于 语言简洁紧凑 使用方便灵活 库函数丰富 运算符丰富 MATLAB 既具 有结构化的控制语句 如 for 循环 while 循环 break 语句和 if 语句 又有面 向对象编程的特性 程序限制不严格 程序设计自由度大 程序的可移植性好 MATLAB 的图形功能强大 MATLAB 的缺点是 它和其他高级程序相比 程 序的执行速度较慢 拥有功能强大的工具箱 源程序的开放性 计算机课程设计 6 第四章第四章 模块设计模块设计 4 14 1 语音信号预处理语音信号预处理 预处理模块一般包括预滤波 采样和量化 分帧 加窗 预加重 端点检 测等 4 1 14 1 1 语音信号采集语音信号采集 在 Matlab 环境中语音信号的采集可使用 wavrecord n fs ch dtype 函数录制 也可使用 Windows 的 录音机 程序录制成 wav 文件然后使用 wavread file 函数读入 为了进行批量的的训练和识别处理 本系统的训练语音和识别语音 全部使用 录音机 程序预先录制 如图 4 1 所示为数字 0 的训练语音 00 wav 的信号波形图 第 I 幅图为完整的语音波形 第 II III 幅图分别为语音的起 始部分和结束部分的放大波形图 00 10 20 30 40 50 60 70 8 0 5 0 0 5 1 I 00 wav 信 信 信 信 信 信 Time s Amplitude normalized 0 20 210 220 230 240 250 260 270 280 290 3 0 5 0 0 5 1 II 00 wav 信 信 信 信 信 信 信 信 信 信 Time s Amplitude normalized 0 40 410 420 430 440 450 460 470 480 490 5 0 5 0 0 5 1 III 00 wav 信 信 信 信 信 信 信 信 信 信 Time s Amplitude normalized 计算机课程设计 7 图 4 1 语音 00 wav 的信号波形图 4 1 24 1 2 预加重预加重 一般是将语音信号通过一个一阶高通滤波器 1 0 9375z 1 即为预加重滤波 器 其目的是滤除低频干扰 预加重滤波器在 Matlab 中可由语句 x filter 1 0 9375 1 x 实现 4 1 34 1 3 分帧分帧 分帧小能清楚地描绘语音信号的时变特征但计算量大 分帧大能减少计算 量但相邻帧间变化不大 容易丢失信号特征 一般取帧长 20ms 帧移为帧长的 1 3 1 2 在 Matlab 环境中的分帧最常用的方法是使用函数 enframe x len inc 其中 x 为语音信号 len 为帧长 inc 为帧移 在本系统中帧长取 240 帧移取 80 enfname 源程序见附录 4 1 44 1 4 加窗加窗 为了保持语音信号的短时平稳性 利用窗函数来减少由截断处理导致的 Gibbs 效应 用的最多的三种为矩形窗 汉明窗 Hamming 和汉宁窗 Hanning 其窗函数如下 式中的 N 为窗长 一般等于帧长 矩形窗 汉明窗 Hamming 汉宁窗 Hanning WR 1 0 n N 1 0 Other WHM 0 5 0 46cos 2 n N 1 0 n N 1 0 Other WHN 0 5 0 5cos 2 n N 1 0 n N 1 0 Other 本系统中的端点检测采用时域方法故加矩形窗 而在语音的频域处理方法 中 如计算 MFCC 系数时加汉明窗 在 Matlab 中要实现加窗即将分帧后的语 音信号乘上窗函数 如加汉明窗即为 x x hamming N 计算机课程设计 8 4 24 2 端点检测端点检测 4 2 14 2 1 短时能量短时能量 语音和噪声的主要区别在它们的能量上 如图 4 2 III 和图 4 3 III 所示 语 音段的能量比噪声段的大 语音段的能量是噪声段能量叠加语音声波能量的和 本系统中窗函数为 WR 见式 2 1 N 为 240 图 4 2 I 和图 4 3 I 分别为数 字 0 的训练语音 00 wav 和数字 4 的训练语音 40 wav 的波形 图 4 2 III 和图 4 3 III 分别为它们的短时能量 00 10 20 30 40 50 60 70 8 0 5 0 0 5 1 I 00 wav 信 信 信 信 信 信 Time s Amplitude normalized 050100150200 0 5 10 II 信 信 信 信 信 Frame Zcr 050100150200 0 5 10 III 信 信 信 信 Frame Energy 图 4 2 语音 00 wav 的时域分析参数 计算机课程设计 9 00 10 20 30 40 50 6 0 5 0 0 5 1 I 40 wav 信 信 信 信 信 信 Time s Amplitude normalized 020406080100120140160180 0 50 100 II 信 信 信 信 信 Frame Zcr 020406080100120140160180 0 20 40 III 信 信 信 信 Frame Energy 图 4 3 语音 40 wav 的时域分析参数 程序 amp sum abs enframe filter 1 0 9375 1 x FrameLen FrameInc 2 4 4 2 2 2 2 短时平均过零率短时平均过零率 当离散时间信号相邻两个样点的正负号异号时 我们称为 过零率 短时平均过零率可以粗略估计语音的频谱特性 高频率对应着高过零率 低频率对应着低过零率 图 4 2 II 和图 4 3 II 分别为数字 0 的训练语音 00 wav 和数字 4 的训练语音 40 wav 的短时过零率 从图中可以看到清音 s 的过零率明显高于其后的 i 音 有声段过零率明显高于无声段 但在鼻音阶段过零率迅速滑落到无声 水平而能量值则是缓慢下滑 tmp1 enframe x 1 end 1 FrameLen FrameInc tmp2 enframe x 2 end FrameLen FrameInc signs tmp1 tmp2 0 02 zcr sum signs diffs 2 4 2 34 2 3 双门限端点检测双门限端点检测 双门限端点检测顾名思义需要两级检测 即短时能量检测和短时过零率检 测 在开始检测之前需要设定4个门限 即分别为短时能量和短时过零率各设置 一个高门限和一个低门限 EHigh ELow和ZHigh ZLow 整个语音端点检测分为 四部分 静音段 过度段 语音段 结束段 图4 4和图4 5分别是数字0的训练 计算机课程设计 10 语音00 wav和数字4的训练语音40 wav的端点检测结果 红线之间的部分为检测 出的语音有声段 20004000600080001000012000140001600018000 0 5 0 0 5 1 I 00 wav 信 信 信 信 Sample Speech 20406080100120140160180200220 0 5 10 II 信 信 信 信 信 Frame ZCR 20406080100120140160180200220 0 5 10 III 信 信 信 信 Frame Energy 图 4 4 语音 00 wav 的端点检测结果 2000400060008000100001200014000 0 5 0 0 5 1 I 40 wav 信 信 信 信 Sample Speech 20406080100120140160180 0 50 100 II 信 信 信 信 信 Frame ZCR 20406080100120140160180 0 20 40 III 信 信 信 信 Frame Energy 图 4 5 语音 40 wav 的端点检测结果 本次所采用的语音端点检测的源程序见附录 vad x 4 34 3 MFCCMFCC 参数提取参数提取 计算机课程设计 11 预处理FFT 2Mel滤波器组LogDCT 语音 信号 MFCC 系数 图 4 6 MFCC 系数计算流程图 1 预处理 确定每一帧语音采样序列的长度 如 N 256 并对每帧序列 s n 进 行预加重 分帧和加窗处理 2 计算离散功率谱 对预处理的每帧进行离散 FFT 变换得到其频谱 再取 模的平方作为离散功率谱 S n 3 将功率谱通过滤波器组 计算 S n 通过 M 个 Hm n 后所得的功率值 即 计算 S n 和 Hm n 在各离散频率点上的乘积之和 得到 M 个参数 Pm m 0 1 M 1 4 取对数 计算 Pm的自然对数 得到 Lm m 0 1 M 1 5 离散余弦变换 对 Lm计算其离散余弦变换 得到 D m m 0 1 M 1 舍去代表直流成份的 D0 取 D1 D2 Dk作为 MFCC 参数 在 Matlab 环境中计算 M 个滤波器的系数可以调用函数 melbankm m n fs 来实现 其中 m 为滤波器的个数 n 为语音帧长 fs 为采 样频率 melbankm 函数源代码见附录 附录 附录 mfcc mmfcc m function ccc mfcc x 归一化 mel 滤波器组系数 bank melbankm 24 256 8000 0 0 5 m bank full bank bank bank max bank DCT 系数 12 24 for 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 语音信号分帧 xx enframe xx 256 80 计算每帧的 MFCC 参数 for i 1 size xx 1 y xx i s y hamming 256 t abs fft s t t 2 计算机课程设计 12 c1 dctcoef log bank t 1 129 c2 c1 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 end dtm dtm 3 合并 mfcc 参数和一阶差分 mfcc 参数 ccc m dtm 去除首尾两帧 因为这两帧的一阶差分参数为 0 ccc ccc 3 size m 1 2 4 44 4 DTWDTW 算法算法 首先申请两个的矩阵 D 和 d 分别为累计距离和帧匹配距离 这里 n n m 和 m 为测试模板与参考模板的帧数 然后通过一个循环计算两个模板的帧匹配 距离矩阵 d 接下来进行动态规划 为每个格点都计算其三个可能的前续 i j 格点的累积距离 和 考虑到边界问题 有些前续格点可能不存在 1D2D3D 因此要加用一些判断条件 最后利用最小值函数 找到三个前续格点的累min 积距离的最小值作为累积距离 与当前帧的匹配距离相加 作为当前格 d i j 点的累积距离 该计算过程一直达到格点 并将输出 作为模板 n m D n m 匹配的结果 2 DTW 算法的主体函数 dtw m 和 dtw2 m 代码详见附件 4 54 5 程序运行流程程序运行流程 程序运行后 首先读入 wav 文件 用 vad 函数对其进行端点检测 用 mfcc 函数获得其 MFCC 参数 并保存语音部分的 MFCC 参数到参考模板的结构数组 中或测试模板的结构数组中 ref i mfcc test i mfcc 在模板匹配阶段 计算所有测试模板和参考模板之间的距离 保存到矩阵 dist 中 将最后的匹配分数用 min 函数找到最小值对应的模板 DTW 算法的测试程序 testdtw m 代码详见附件 计算机课程设计 13 4 64 6 运行结果运行结果 图为 4 组语音的识别测试结果图 数字 0 9 的训练语音 test 中包含若干测试语音 都分别以相应数字作为 文件名的首数字 从而得到本语音识别系统正确识别率 数字01234567890 9 正确 数 424434334233 错误 数 02001011027 正确 率 1 000 501 001 000 751 000 750 751 000 500 825 计算机课程设计 14 第五章第五章 设计中的问题设计中的问题 5 15 1 方案的选择方案的选择 目前 用语音语音识别的方法有基于动态时轴规整 DTW 技术的模板匹配 方法 基于概率统计的 HMM 法和基于人工神经网络 ANN 的最优搜索法 因为本设计要求简单 又由于 DTW 算法本身既简单又有效 在训练中几乎 不需要额为的运算 所以我们选择了 DTW 算法 5 25 2 语音格式的选择语音格式的选择 因为 MATLAB 环境只识别 WAV 格式的语音信号 而笔记本自带的录音机是 wma 格式 由于调试之前没有了解 所以在语音信号处理时遇到不少问题 多 次犯错 且经过查阅资料才得知结论 并且语音信号要求是无损压缩的 WAV 格 式 而且很多格式转换器不支持有损转无损 通过在网上查询资料得知 Cool Edit Pro2 1 软件对语音信号处理后可得到满足条件的语音信号 计算机课程设计 15 第六章第六章 参考文献参考文献 1 易克初 田斌 付强 语音信号处理 北京 国防工业出版社 2000 2 张雪音 数字语音处理及 MATLAB 仿真 北京 电子工业出版社 2010 3 刘幺和 宋庭新 语音识别与控制应用技术 北京 科学出版社 2008 计算机课程设计 16 第七章第七章 致谢致谢 本次课程设计共用时四个周 主要涉及到语音处理 matlab 的知识 由于 本次课程设计者水平有限 所以要特别感谢指导敖波老师在设计过程中指点与 帮助 感谢其在百忙之中抽出时间给设计者讲解有关本次课程设计方面的知识 并帮助调试程序 得出了试验结果 计算机课程设计 17 第八章第八章 附录附录 附录一 附录一 vadvad function x1 x2 vad x 幅度归一化到 1 1 x double x x x max abs x 常数设置 FrameLen 240 FrameInc 80 amp1 10 amp2 2 zcr1 10 zcr2 5 maxsilence 8 6 10ms 30ms minlen 15 15 10ms 150ms status 0 count 0 silence 0 计算过零率 tmp1 enframe x 1 end 1 FrameLen FrameInc tmp2 enframe x 2 end FrameLen FrameInc signs tmp1 tmp2 0 02 zcr sum signs diffs 2 计算短时能量 amp sum abs enframe filter 1 0 9375 1 x FrameLen FrameInc 2 调整能量门限 amp1 min amp1 max amp 4 amp2 min amp2 max amp 8 开始端点检测 x1 0 x2 0 计算机课程设计 18 for n 1 length zcr goto 0 switch status case 0 1 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 计算机课程设计 19 附录二 附录二 enfname menfname m function f enframe x win inc nx length x nwin length win if nwin 1 len win else len nwin end if nargin 1 w win f f w ones nf 1 end 附录三附录三 melbank mmelbank m function x mn mx melbankm p n fs fl fh w if nargin 6 w tz if nargin 5 fh 0 5 if nargin 1 x sparse r c v else x sparse r c mn 1 v p 1 fn2 end 附录四 附录四 DTWDTW 算法算法 function dist dtw t r n size t 1 m size r 1 帧匹配距离矩阵 d zeros n m for i 1 n for j 1 m 计算机课程设计 21 d i j sum t i r j 2 end end 累积距离矩阵 D ones n m realmax D 1 1 d 1 1 动态规划 for i 2 n for j 1 m D1 D i 1 j if j 1 D2 D i 1 j 1 else D2 realmax end if j 2 D3 D i 1 j 2 else D3 realmax end D i j d i j min D1 D2 D3 end end dist D n m dtw2 m function dist dtw2 test ref global x y min y max global t r global D d global m n t test r ref n size t 1 m size r 1 d zeros m 1 计算机课程设计 22 D ones m 1 realmax D 1 0 如果两个模板长度相差过多 匹配失败 if 2 m n 3 2 n mxa xb xa 按下面三个区域匹配 1 xa xa 1 xb xb 1 N for x 1 xa y max 2 x y min round 0 5 x warp end for x xa 1 xb y max round 0 5 x n m y min round 0 5 x warp end for x xb 1 n y max roun

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论