当前位置:首页 > 基于LIN总线的语音控制智能家居系统毕业论文
图 10液晶电路设计
七、 系统软件设计
1 语音训练与识别
语音识别方式有两种,一种是特定人识别(SD),特定人识别之前需要进行
语音训练;另一种是非特定人识别(SI),非特定人识别不需进行语音训练。本系统采用的是前一种识别模式。 特定人识别的原理如下图所示:
图 11 特定人识别原理
9
SPCE061A内部只有2K字的RAM,其只能支持5个语音命令,而在进行识
别之前要进行语音模板训练,模板的数据也是放在内部的RAM中。这些资源对于一个庞大的系统来说是远远不够的,于是我们将语音命令进行分层,并外扩了flash,也就是上文中提到的SPR4096模组。4096具有512K字的flash空间。由于每条语音命令模板占用100字的flash空间,所以4096除了存储语音模板,其他剩余的空间还可以用来存储提示音数据。
图 12是语音分层示意图,每一层具有5条命令,总共有4层,第一层作为
家庭成员入口层,第二层为家里各个重点地点层,第三层为电器层,第四层为电器操作层。使用了分层后,扩展了语音命令,使得家庭的每个成员都能进行语音识别,此外,识别结构也变得非常清晰。除第一层外,其余每一层都有一个返回命令,用户可以通过该命令返回上一层的识别。
图 12 语音分层识别
在没外扩flash之前,由于语音模板是存在SPCE061A内部的RAM中,一掉
电就丢失,所以每次系统复位或者重新上电就必须重新训练,这在实际中使用非常不方便。于是,我们在外部FLASH中分配一个存储空间,专门用来存储训练后的语音模板,在程序中设一个标志位,查看4096相应的地址单元否有数据,从而判断是否已经训练过,如果训练过,则只需把flash中的语音模板装载到SPCE061A中,从而避免每次复位和上电需要训练的麻烦。图 13是系统的语音系统总体流程图。
10
开始读取外部FLASH标志已训练?Y识别用户N进行语音训练用户1用户2用户3用户4用户5识别地点识别电器识别操作结束图 13 语音系统总流程
系统在第一次使用时需要经过一次训练,为了用户训练方便,我们给出了一
个语音训练命令表,用户可以参照该表的命令进行训练,也可以用个性化的命令自行定义命令。但是语音命令应该遵从简约、容记、容易分辨的原则,以提高系统的识别能力。表1的语音命令经过我们的验证,系统能够很好地识别,准确识别率达98%以上,偶尔的无法识别是因为话筒接受不到语音命令或者是用户发出的语音命令与训练时相差太大等而引起的。传统的语音训练设计,采用的是顺序训练的方式,则不管前后命令是否重复,都需要从头至尾逐个训练。由于家庭内
11
的不同地方往往大部分电器都是相同的,比如“卧室”与“客厅”、“厨房”等都有“灯管”,因此我们对训练进程进行了优化处理,只需要训练一次“灯管”语音命令,系统会自动将该“灯管”语模板存储到“卧室”、“客厅”、“厨房”、“阳台”对应的FLASH存储区域,识别时系统从不同的FLASH区域调用该语音模板,从而识别不同地方的电器。由于考虑到一个家庭的用户所住的卧室不同,我们假设用户一“小明”在“卧室1”,用户二和用户三“爸爸”“妈妈”在“卧室2”,用户四和用户五“爷爷”“奶奶”在“卧室3”。在训练里只要选择了是哪个用户,系统会将该用户训练的语音模板存储而不同的FLASH空间,在识别时会自动识别出该用户对应的“卧室”。系统训练流程图如
开始Y是否已经训练?N训练用户名并储存训练地点并储存训练各地点对应电器名称并储存训练各电器对应操作并储存Y是否训练下一用户?N结束
图 14所示。
表1 语音训练命令表
用户 地点 电器 操作1 操作2 操作3 操作4 12
共分享92篇相关文档