摘要:本文阐述了基于DTW的非特定人语音识别的基本原理与实现方法。该语音识别系统预先建立标准语音模板库与三名待测者的语音模板的方法,然后结合MATLAB中自带voicebox语音工具箱及相应语音处理函数的编写,成功的实现了数字1-10的孤立词的语音识别,识别成功率统计达到90%以上。

关键词:语音识别 端点检测 特征参数 DTW算法

中图分类号:TN912 文献标识码:A 文章编号:1007-9416(2011)12-0184-02

1、语音识别系统概述

语音信号是一种典型的非平稳信号,并且在录音过程中不免受到电噪音,呼吸产生的气流噪音以及录音环境下的突发噪音的影响,所以语音信号要经过预滤波、采样量化、分帧、加窗、预加重、端点检测等预处理过程后才可以进行下一步的特征征参数提取等工作。在接下来的语音训练阶段,我们将那些信号状态良好,携带噪声小且特征参数稳定的语音信号作为指定词条的模板,进而为每个词条创建一个模板并保存为模板库。在识别阶段,语音信号经过相同的通道生成测试模板,用相同的方法计算测试模板的特征参数后,将其与模板库模板的特征参数进行匹配,配分数最高的参考模板作为识别结果。

2、语音信号的录入

语音信号的采集方法有很多,鉴于该系统是在MATLAB上实现,且MATLAB本身提供了一定的音频处理函数,因此我们完全可以采用在MATLAB中先完成录音函数的编写,然后再结合windows自带的录音设备进行录音。录音得到的wav文件即是经过预滤波采样和量化的语音。利用soundview读所录入的文件时,会弹出一个GUI界面,并可以通过输出设备对所录语音进行回访,该GUI界面如图1所示。单击Play Again按钮可可回放,单击Done按钮可关闭界面。

3、语音信号的预加重

我们知道,对语音识别更有用的是语音的高频部分,而对于语音信号的频谱,通常是频率越高幅值越低。因此我们必须对语音的高频进行加重处理。处理方法是将语音信号通过一个一阶高通滤波器,即预加重滤波器,它不仅能滤除低频提升高频,还能很好的抑制50Hz到60Hz的工频干扰。尤其在短点检测之前进行预加重还可起到消除直流漂移、抑制随机噪声和提升清音部分能量的效果。预加重在Matlab中可由语句x=filter([1-0.9375],1,x)实现。

4、语音信号的分帧和加窗

经过数字化的语音信号实际上是一个时变信号,为了能用传统的方法对语音信号进行分析,应假设语音信号在10ms-30ms内是短时平稳的。为了得到短时的语音信号,要对语音信号进行加窗操作。窗函数平滑地在语音信号上滑动,将语音信号进行分帧,帧与帧的交叠为帧移,一般为窗长的一半。

语音信号的分帧采用enframe函数,其语法为f=enframe(x,len,inc);其中X为输入的语音信号,len为制定的帧长,inc为指定帧移。函数将返回一个n×len的一个矩阵,每行都是一帧数据。在本系统中帧长取240,帧移取80。在Matlab中要实现加窗即将分帧后的语音信号乘上窗函数,本文加汉明窗,即为x=x.*hamming(N)。

5、端点检测

在语音识别系统中,训练阶段和建模阶段都比较重要的环节都是要先通过端点检测找到语音的起点和终点,这样,我们就可以只对有效语音进行处理,这对于识别的准确率和识别效率至关重要。本论文在短点检测环节采用双门限端点检测法,即采用短时能量检测和短时过零率检测双重指标约束。结合实际,我们将整个语音端点检测分为四个段落,即:无声段、等待段、语音段、结束段,再为短时能量和短时过零率各设置一个高门限和一个低门限:EHigh、ELow和ZHigh、ZLow。结合MATLAB中所编程序,可以较准确的确定语音的各个部分。图2所示为语音“1”的处理结果。

6、特征参数的提取

经过预处理的语音数据就可以进行特征参数提取,特征参数的好坏将直接影响系统的性能和效率。本文将梅尔倒谱系数(MFCC)和一阶MFCC系数的差分结合起来,将其合并为一个矢量作为一帧语音信号的参数,这样,不仅描述了语音的静态特性,由于加入了差分倒谱参数,语音的动态特性得到了更好的体现。梅尔倒谱参数的计算流程为:先将预处理过的语音信号进行快速傅立叶变换,将时域信号变换成为信号的功率谱。 再用一组Mel频标上线性分布的三角窗滤波器(本文采用24个三角窗滤波器)对信号的功率谱滤波,每一个三角窗滤波器覆盖的范围都近似于人耳的一个临界带宽,以此来模拟人耳的掩蔽效应。然后对三角窗滤波器组的输出求取对数,可以得到近似于同态变换的结果。最后去除各维信号之间的相关性,将信号映射到低维空间。 梅尔倒谱系数的计算差分参数的计算采用下面的公式:

7、模式匹配

本语音识别系统的模式匹配算法采用动态时间弯折(Dynamic Time Warping,DTW)算法,该算法基于动态规划的思想,解决了发音长短不一的模板匹配问题。DTW是语音识别中出现较早,较为经典的一种算法。与HMM算法相比而言,DTW算法具有计算量小,识别效率高的特点。模式匹配的过程其实就是根据一定的规则,计算输入矢量特征与库存模式之间的相似度,判断出输入语音的语意信息。本文中,失真测度采用下式所示的欧式距离:

其中,l=1,2,…M;i=1,2,…I;k=1,2,…K.是待测矢量之间的距离,是第i个码本的第l个码字矢量的第k个分量。I为说话者的数量,M为码本的大小,K为参数矢量的总维数。由上式得出该语音相对于该命令词的最短距离,然后取最短距离最小的命令词作为该段语音的首先识别结果。结合MATLAB程序,得到数字1-10的匹配距离矩阵:

图3即为针对数字1-10的待测模板和模板库模板匹配距离的现实,由该距离矩阵,我们可以很清楚的看到,左上角到右下角的对角线上的距离匹配值在该值所在的行和列都是最小的。即距离最短的命令词为识别结果。

8、结语

该论文阐述了基于DTW的语音识别系统在MATLAB上实现的基本过程,在实验室录音情况下,该识别系统的识别率可以达到百分之九十以上,效果良好。

参考文献

[1]赵力.语音信号处理[M].北京:机械工业出版社,2003.

[2]何强,何英. MATLAB扩展编程[M].清华大学出版社,2002-06.

[3]李景川,董慧颖.一种改进的基于短时能量的端点检测算法[J].沈阳理工大学学报,2008.

[4]沈宏余,李英.语音端点检测方法的研究[J].科学技术与工程,2008,(08).

[5]吴晓平,崔光照,路康.基于DTW算法的语音识别系统实现[J].电子工程师,2004,(07).

基金项目

辽宁省科技厅工业攻关项目(2007217003)。

dtw算法 matlab,基于DTW的语音识别在MATLAB中的实现方法浅析相关推荐

  1. 贝叶斯网络结构学习之K2算法(基于FullBNT-1.0.4的MATLAB实现)

    题目:贝叶斯网络结构学习之K2算法(基于FullBNT-1.0.4的MATLAB实现) 有关贝叶斯网络结构学习的一基本概念可以参考:贝叶斯网络结构学习方法简介 有关函数输入输出参数的解释可以参考:贝叶 ...

  2. 时序分析:DTW算法(基于模板)

    对时序对象进行分析,使用KMP算法可以分析速率不变的模式,参考时序分析:欧式空间轨迹模式识别.使用基于模板匹配的方法,对于速率发生变化的模式,需要用新的对速率要求松散的方法,DTW方法为一种广泛使用的 ...

  3. 水声信号混响matlab,基于特征匹配的复杂水声信号仿真模型验证方法

    0引言由于实测目标回波.辐射噪声.海洋混响非常困难,在实验室重构这些复杂水声信号有着重要的意义.例如,在声自导鱼雷半实物仿真实验中,常采用目标回波.辐射噪声的仿真信号替代实测信号,由此产生了极大的军事 ...

  4. 西门子s7300 C MATLAB,卡尔曼滤波器在s7-300系列plc中的实现方法

    卡尔曼滤波器在s7-300系列plc中的实现方法 [专利摘要]本发明公开了一种卡尔曼滤波器在S7-300系列PLC中的实现方法.在S7-300系列PLC系统中定义16个数据块,其中的14个数据块和卡尔 ...

  5. stft isar成像 matlab,基于STFT和FRFT的运动目标雷达三维成像方法与流程

    本发明属于数字信号处理技术领域,特别涉及一种运动目标雷达三维成像方方法,可 用于对运动目标识别时,雷达ISAR对其三维成像. 背景技术: 逆合成孔径雷达ISAR是一种全天候.全天时的远程探测手段,具有 ...

  6. 车流量统计 matlab,基于视频的车流量统计——matlab代码

    数字图像处理实例,用matlab实现基于视频的车流量统计系统. y = step(hcsc, image); % 将彩色图像转换成灰度图像 % 采用自动白平衡算法去除灰度突变 y = y-mean(y ...

  7. 基于DTW和HMM算法的语音识别系统对比研究-毕业小结

    论文导读:别算法 (一)动态时间归整算法 发音具有随机性,同一个人在不同时间,不同场合对同一摘自:7彩论文网写毕业论文经典的网站http://www.7ctime.com个字的发音长度都不是完全一样的 ...

  8. 论文学习——基于优化DTW算法的水文要素时间序列数据相似性分析

    文章目录 1 摘要 2 结论 3 引言 4 水文时间序列数据相似性度量的相关研究 4.0 前人工作 4.1 提出问题 4.2 DTW动态时间弯曲距离算法 5 基于DTW的水文要素时间序列数据相似性度量 ...

  9. 【SVM分类】基于matlab鸽群算法优化支持向量机SVM分类【含Matlab源码 2242期】

    ⛄一.鸽群算法简介 基于鸽群在归巢过程中的特殊导航行为,Duan等提出了一种仿生群体智能优化算法---鸽群优化算法.在这个算法中,通过模仿鸽子在寻找目标的不同阶段使用不同导航工具这一机制,提出了2种不 ...

最新文章

  1. Postgresql相关数据库、表占用磁盘大小统计
  2. [jqpolt] formatString 日期格式化列表
  3. MATLAB实战系列(二十六)-matlab通过遗传算法求解车间调度问题
  4. Aizu 2224 Save your cats
  5. thinkPHP-空操作
  6. Web端H.265播放器研发解密
  7. spring+Quartz定时任务
  8. css图片的相关操作
  9. php执行另一个页面,从另一个PHP脚本执行PHP脚本
  10. python3带tkinter窗口的ftp服务器,并使用pyinstaller打包成exe
  11. python数据挖掘实验报告_Python数据挖掘实践—决策树
  12. 2022-2028年中国粮食物流行业市场发展调研及未来前景规划报告
  13. 《从0开始做运营[张亮]》——读书笔记
  14. python 流水作业调度_动态规划——流水作业调度问题
  15. Tkinter 组件详解(十):Scale
  16. 基于MATLAB的线性规划:linprog用法
  17. 【技术教程】RTSP视频流媒体智能分析平台EasyNVR中的H264及H265编码视频存储计算方法介绍
  18. Python 书籍 搜索
  19. Deepin Linux15 华为荣耀笔记本MagicBook2019使用-安装深度应用商店和应用软件
  20. 【智能流程自动化】德勤:自动化时代关于机器人自动化与智能自动化的行业领导者指南

热门文章

  1. 运维自动化之ansible,轻松实现企业级自动化运维
  2. 能让你更早下班的Python垃圾回收机制
  3. 线性表顺序存储结构的实现
  4. C语言数据结构线性表顺序存储结构(插入、删除、获取)
  5. 当前服务器注册人数已满 卡丁车,跑跑卡丁车手游:预约人数达1千多万,这游戏比想象中的还要火...
  6. zabbix监控方式
  7. 【重大通知】本博客已停止更新……
  8. 启用计算机时出现了,电脑开机总提示由于启动计算机时出现了页面文件配置问题怎么办?...
  9. OpenCV实现动态人脸识别(第三讲)
  10. 【204期】图文并茂,Spring Boot Starter 万字详解!还有谁不会?