语音识别在微机器人控制系统中的应用

发布者:导航灯最新更新时间:2007-06-14 来源: 电子技术应用关键字:算法  模型  函数  在线 手机看文章 扫描二维码
随时随地手机看文章
本文基于毫米级全方位无回转半径移动机器人课题。微系统配置示意图如图1所示。主要由主机Host(配有图像采集卡)、两个CCD摄像头(其中一个为显微摄像头)、微移动装配平台、微机器人本体和系统控制电路板等组成。计算机和摄像机组用于观察微机器人的方位,控制系统控制微机器人的移动。

本文在系统控制电路中嵌入式实现语音识别算法,通过语音控制微机器人。

微机器人控制系统的资源有限,控制方法比较复杂,并且需要有较高的实时性,因此本文采用的语音识别算法必须简单、识别率高、占用系统资源少。

HMM(隐马尔可夫模型)的适应性强、识别率高,是当前语音识别的主流算法。使用基于HMM非特定人的语音识别算法虽然借助模板匹配减小了识别所需的资源,但是前期的模板储存工作需要大量的计算和存储空间,因此移植到嵌入式系统还有一定的难度,所以很多嵌入式应用平台的训练部分仍在PC机上实现。

为了使训练和识别都在嵌入式系统上实现,本文给出了一种基于K均值分段HMM模型的实时学习语音识别算法,不仅解决了上述问题,而且做到了智能化,实现了真正意义上的自动语音识别。

1 增量K均值分段HMM的算法及实现

由于语音识别过程中非特定的因素较多,为了提高识别的准确率,针对本系统的特点,采用动态改变识别参数的方法提高系统的识别率。

训练算法是HMM中运算量最大、最复杂的部分,训练算法的输出是即将存储的模型。目前的语音识别系统大都使用贝斯曼参数的HMM模型,采取最大似然度算法。这些算法通常是批处理函数,所有的训练数据要在识别之前训练好并存储。因此很多嵌入式系统因为资源有限不能达到高识别率和实时输出。

本系统采用了自适应增量K均值分段算法。在每次输入新的语句时都连续地计算而不对前面的数据进行存储,这可以节约大量的时间和成本。输入语句时由系统的识别结果判断输入语句的序号,并对此语句的参数动态地修改,真正做到了实时学习。

K均值分段算法是基于最佳状态序列的理论,因此可以采用Viterbi算法得到最佳状态序列,从而方便地在线修改系统参数,使训练的速度大大提高。

为了达到本系统所需要的功能,对通常的K均值算法作了一定的改进。在系统无人监管的情况下,Viterbi解码计算出最大相似度的语音模型,根据这个假设计算分段K均值算法的输入参数,对此模型进行参数重估。首先按照HMM模型的状态数进行等间隔分段,每个间隔的数据段作为某一状态的训练数据,计算模型的初始参数λ=f(a,A,B)。采用Viterbi的最佳状态序列搜索,得到当前最佳状态序列参数和重估参数θ,其中概率密度函数P(X,S|θ)代替了最大似然度算法中的P(X,θ),在不同的马尔科夫状态和重估之间跳转。基于K均值算法的参数重估流程如下:

 
为了使参数能更快地收敛,在每帧观察语音最佳状态序列的计算结束后,加入一个重估过程,以求更快地响应速度。


可以看到,增量K均值算法的特点为:在每次计算完观察值最佳状态序列后,插入一个重估过程。随时调整参数以识别下一个句子。

由于采用混合高斯密度函数作为输出概率分布可以达到较好的识别效果,因此本文采用M的混合度对数据进行训练。

对λ重估,并比较收敛性,最终得到HMM模型参数训练结果。

可见,用K均值法在线修改时,一次数据输入会有多次重估过程,这使系统使用最近的模型估计后续语句的最佳状态序列成为可能。但是对于在线修改参数要求,快速收敛是很重要的。为了得到更好的Viterbi序列,最佳状态序列使用了渐增的算法模型,即快速收敛算法。

语音识别的具体实现过程为:数字语音信号通过预处理和特征向量的提取,用户通过按键选择学习或者识别模式;如果程序进入训练过程,即用户选择进行新词条的学习,则用分段K均值法对数据进行训练得到模板;如果进入识别模式,则从Flash中调出声音特征向量,进行HMM算法识别。在识别出结果后,立即将识别结果作为正确结果与前一次的状态做比较,得到本词条更好的模板,同时通过LED数字显示和语音输出结果。系统软件流程如图2所示。

对采集到的语音进行16kHz、12位量化,并对数字语音信号进行预加重:


L选择为320个点,用短时平均能量和平均过零率判断起始点,去除不必要的信息。

对数据进行FFT运算,得到能量谱,通过24通道的带通滤波输出X(k),然后再通过DCT运算,提取12个MFCC系数和一阶二阶对数能量,提取38个参数可以使系统识别率得到提高。

为了进行连接词识别,需要由训练数据得到单个词条的模型。方法为:首先从连接词中分离出每个孤立的词条,然后再进行孤立词条的模型训练。对于本系统不定长词条的情况,每个词条需要有一套初始的模型参数,然后按照分层构筑的HMM算法将所有词串分成孤立的词条。对每个词条进行参数的重估,判断是否收敛。如果差异小于某个域值就判断为收敛;否则将得到的参数作为新的初始参数再进行重估,直到收敛。

2 实验结果

实验采用30个人(15男,15女)的声音模型进行识别。首先由10人(5男,5女)对5个命令词(前进、后退、左移、右移、快速)分别进行初始数据训练,每人每词训练10次,得到训练模板。然后再由这30人随机进行非特定人语音识别。采用6状态的HMM模型,高斯混合度选为14,得到图3的实验结果。

由图3可以看出,由于本系统实时学习的特点,系统的识别率随着训练数据的增加而逐步上升(误识率下降)。但是当实验数据继续增多时,系统的识别率和实时性都有下降趋势。这是由于系统处于无人监管状态,根据判断结果进行参数重估。如果判断结果错误,势必将错误带人参数重估步骤中。

逐步增加高斯混合度数目,可以得到图4的实验结果。可见高斯混合度在18的时候达到较好的识别效果,混合度太高识别率反而会有所下降,这是由于嵌入式系统的资源有限,运算复杂度的增长超过了嵌入式设备的限制所造成的。

为了使微机器人能够正确地执行人的声音指令,本文将语音识别的过程嵌入微机器人的控制系统中,根据微机器人控制系统资源有限、对实时性要求高的特点,使用增量K均值分段HMM的算法,简化计算节省了所需的硬件资源,实现了实时学习的语音识别,能方便地对微机器人进行控制。

本系统的识别率达到了较高的标准,又由于加入了智能化的用户选择部分,用户可随时选择学习新的语句,使其有更广阔的应用前景。

由于嵌入式平台受到处理速度、存储空间的限制,所以能够对微机器人发出的指令十分有限,识别率还有待提高。因此,研究语音识别算法,比较各种算法的优缺点,进而在嵌入式微机器人控制系统上实现大词汇量非特定人的语音识别,实现真正意义上的人机交流是今后进一步的工作。

关键字:算法  模型  函数  在线 引用地址:语音识别在微机器人控制系统中的应用

上一篇:以单片机为核心的温室智能控制系统
下一篇:基于LIN总线的车灯控制系统设计

推荐阅读最新更新时间:2024-03-30 21:23

利用汇编语言实现DES加密算法
目前在金融界及非金融界的保密通信中,越来越多地用到了DES算法。DES(Data Encryption Standard)即数据加密算法,是IBM公司于 1977年研究成功并公开发表的。随着我国三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)中被广泛应用,以此来实现关键数据的保密。如信用卡持卡人的PIN的加密传输、IC卡与POS间的双向认证、金融交易中的密码键盘等,均用到DES算法。由于密码键盘不可能使用高级语言,所以用汇编语言实现DES就非常实用。 1 DES算法的简单原理   DES是一种分组密码。假定明文m是由0和1组成的长度为64位的符号串,密钥k也是64位的0、1符号串。 设:M=m
[单片机]
单片机C语言C51的语句
1. if语句 if语句是C51中的一个基本条件选择语句,它通常有三种格式: (1)if (表达式) {语句;} (2)if (表达式) {语句1;} else {语句2;} (3)if (表达式1) {语句1;} else if (表达式2) (语句2;) else if (表达式3) (语句3;) …… else if (表达式n-1) (语句n-1;) else {语句n} 【例】 if语句的用法。 (1)if (x!=y) printf(“x=%d,y=%dn”,x,y); 执行上面语句时,如果x不等于y,则输出x的值和y的值。 (2)if (x y) max=x;
[单片机]
51单片机PID的算法实现程序C语言
/* 用整型变量来实现PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了, 关于系数和采样电压全部是放大10倍处理的.所以精度不是很高. 但是也不是那么低,大部分的场合都够了. 实在觉得精度不够, 可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分. 当偏差 10度全速加热,偏差在10度以内为PID计算输出. 具体的参考代码参见下面: */ //================================================================ // pid.H // Operation abou
[单片机]
KEA128 内核M0+的中断优先级NVIC的配置函数
KEA128 的中断优先级NVIC的配置函数为: 以上,仅供参考。 下面补充代码实例: #include headfile.h #include core_cm0plus.h int i=0,j=0; void main(void) { pit_init_ms(PIT_CHANNEL0,1000);//初始化使能定时器PIT0,中断时间是1S; NVIC_SetPriority(PIT_CH0_IRQn,0); pit_init_ms(PIT_CHANNEL1,1000);//初始化使能定时器PIT1,中断时间是1S; NVIC_SetPriority(PIT_CH1_IRQ
[单片机]
KEA128 内核M0+的中断优先级NVIC的配置<font color='red'>函数</font>
stm32f103 RCC_MCOConfig函数
STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出. 操作流程: 1)、设置PA.8为复用Push-Pull模式。 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); 2)、选择输出时钟源。 时钟的选择由时钟配置寄存器(RCC_CFGR)中的MCO 位控制。 RCC_M
[单片机]
电网谐波在线监测系统解决方案
一.概述 随着现代化的进程,非线性、冲击性和不对称性负荷大量接入电网,供电质量日趋严重。由于对生活质量和工作效率的高要求,现在人们比以往任何时候更加关注电能质量问题。 电能质量包含多个方面,如电网电压偏差、电压谐波、电压波动与闪变、三相电压不平衡度等,但电压谐波是电能质量中最重要的一种。谐波主要是由用户中的非线性用电负荷(如:整流装置、冶炼炉、电气化机车等)引起的,一个用户引起的谐波不仅影响到自身,而且污染电网并影响到该电网中的其它电力用户。 然而,由于电网的广泛性和谐波的普遍性,广大电力用户、电力生产厂和供电公司希望随时随地了解电网谐波情况,因此通过对电网各点谐波的监测,并对谐波进行分析处理,以推进谐波的治理,提高电网的电能质量
[工业控制]
Keil的调试命令、在线汇编与断点设置等调试方法介绍
三、断点设置 程序调试时,一些程序行必须满足一定的条件才能被执行到(如程序中某变量达到一定的值、按键被按下、串口接收到数据、有中断产生等),这些条件往往是异步发生或难以预先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一种非常重要的方法——断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug- Insert/Remove BreakPoint 设置或移除断点(也可以用鼠标在该行双击实现同样的功能);Debug- En
[单片机]
Keil的调试命令、<font color='red'>在线</font>汇编与断点设置等调试方法介绍
基于定点DSP的MP3间频编码算法研究
  MP3是MPEG-1国际标准中音频压缩层3的简称,单声道比特率一般取64kbps,在采样率44.1kHz的情况下,其压缩比可达12倍以上,被广泛应用于互联网等许多场合。由于解码比编码过程简单很多,MP3播放机或随身听已随处可见,但MP3编码在单片机定点DSP上实现,并要保证音质,则鲜有耳闻。考虑到心理声学模型在整个MP3音频编码算法中所占比例巨大,笔者从简化该模型入手,采用快速算法减少了带编码的运算量和数据量,尽可能少量化编码的迭代循环次数,从而在一片美国德州仪器公司的TMS320C549芯片上实现了MP3的实时压缩,用标准解码软件回放,主观评定,对于通常的音频能达到接近CD的音质。   1 MP3编码算法及处理   图
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved