新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于片上系统SoC的孤立词语音识别算法设计

基于片上系统SoC的孤立词语音识别算法设计

作者:时间:2012-04-01来源:网络收藏

3.3.3 应用中提高算法效率的改进方法

在计算传统DTW算法过程中,如果限定动态规整的计算范围,可以大大减小计算量,提高程序的性能。

采用平行四边形限制动态规整范围,如图3,菱形之外的节点对应的帧匹配距离是不需要计算的,也没有必要保存所有帧匹配距离矩阵和累积距离矩阵,以 ADTW的局部约束路径为例,每一列各节点上的匹配计算只用到了前两列的几个节点。充分利用这两个特点可以减少计算量和存储空间的需求。把实际的动态规整分为三段,(1,Xa),(Xa+1,Xb)和(Xb+1,N),

由于X轴上每前进一帧,只用到前两列的累积距离,所以只需要三个列矢量A、B和C分别保存连续三列的累积距离,而不需保存整个距离矩阵。每前进一帧都对A、B、C进行更新,即用A和B的值求出C,再根据B和C的值求出下一列的累积矩阵放入A中,由此可以反复利用这三个矢量,一直前进到X轴上最后一列,最后一个求出矢量的第M个元素即为两个模板动态规整的匹配距离。

高效DTW对识别的区域进行了限制,整个平面区域大小为M×N,匹配区域的大小为

9.jpg公式(12)

若M=N=150,则限定区域内的计算量只是传统DTW算法计算量的24%;同时算法节省了空间,由原来的2个N×M矩阵,减少为3个M矢量,大大减少了需要的存储空间,解决了普通DTW算法在存储空间有限的嵌入式系统中难以实现的问题。

4. MATLAB实验与分析

为了对算法的识别效果进行测试,设计了用于数字家庭控制系统的识别命令集,并基于Matlab构建了孤立词系统,对识别算法进行实验和分析。该命令集包括语音命令100条,分别是如下几类:
l 语音通话控制命令,例如,“拨打电话”,数字,人名;
l 音乐控制类,“打开音乐”、“减小音量”等;
l 门窗控制类,“关闭百叶窗”、“打开大门”等;
l 家庭电器控制类,“打开空调”、“打开收音机”等。

该系统使用设计的端点检测技术、特征提取和模板匹配技术。语音采用频率为8KHz,16位量化精度,预加重系数a=0.95,语音帧每帧 30ms,240点为一帧,帧移为80,窗函数采用Hamming 窗。LPC参数为10阶,LPCC参数为16阶。实验人员为三名同学,两男一女,分别用甲乙丙代表,实验环境为办公室环境。实验平台为Windows XP,Matlab 7.0,进行的各项实验和数据分别如下:

(1)改进端点检测实验

针对于设计的端点检测算法,得到改进前和改进后率的变化,数据见表1。其中,改进前和改进后所用的参考模板和测试模板数据相同。实验的过程是,Matlab程序自动把50个测试模板逐个和100个参考模板进行匹配,找到测试模板所对应的语音命令。

表1 改进端点检测前后的识别率
Table 1. the recognition ratio of before and after ameliorate endpointing detection
11.gif

从数据可以看出,对端点检测进行改进后,平均识别率从74%提高到82%,这是因为改进后的端点检测能够有效地区分噪音和语音,严格的把语音段提取出来。

(2)使用冗余参考模板实验

对每个语音命令建立四个参考模板,其他同实验(1),实验数据见表2。

表2 使用冗余参考模板前后的识别率
Table 2. the recognition ratio of before and after use redundancy reference template
12.gif

从实验数据看出,使用冗余模板后,平均识别率由87.5%提高到95%,平均误识率由12.5%下降到5%。所以,使用冗余参考模板有效的提高了识别性能。



评论


相关推荐

技术专区

关闭