您的位置:首页 > 理论基础 > 计算机网络

具有语音识别功能的ZigBee传感器网络设计

2015-05-18 00:00 330 查看
1 语音识别

具有语音识别技术的无线网络化测控技术是目前研究的一个方向,将语音识别、无线网络和测控技术融合,实现无线网络化语音控制系统,具有良好的实用价值和广阔的应用前景。语音识别的过程可归结为模式识别和匹配,通过对语音信号进行预处理和分析计算,抽取出所需的语音特征,并以此建立语音识别所需的模板。当对语音进行识别时,需要将系统中存放的语音模板与输入的语音信号的特征进行比较,并根据一定的算法和策略找出一系列最优的与输入的语音匹配的模板,最后输出识别结果。语音识别系统采用的是模式匹配的原理,系统的一般结构如图1 所示。



图1 语音识别系统的一般结构
2 系统硬件设计

系统硬件结构可分为语音识别模块、ZigBee模块、继电器控制模块三部分。图2 为总体硬件结构图。



图2 系统总体硬件结构
2.1 语音识别模块
语音识别模块由凌阳SPCE061A 语音处理芯片以及语音输入电路、语音输出电路、电源电路等模块组成。语音识别模块实现对语音命令的识别,并将识别结果发送至ZigBee数传模块。语音输入与输出电路如图3、图4 所示。



图3 语音输入模块电路



图4 语音输出模块电路
语音识别电路输出的语音资源需要事先在PC 机上录制成WAV 文件格式或者由TTS 软件生成,该WAV格式的文件必须在单通道、8 KB/s、16 位的条件下录制,然后把生成的WAV 文件经过压缩编码后添加到程序中,并随程序一起下载到SPCE061A 单片机内存中。根据语音识别过程的需要,有选择性地输出不同的语音。需要输出的语音资源经D/A 转换后,由SPY0030(语音集成放大器)放大信号,最后通过喇叭输出(J3 处外接喇叭)。通过调节电位器R1 的大小可以控制输出语音的音量。
2.2 ZigBee模块
ZigBee无线模块由CC2430 芯片、供电电路、天线、数据下载口组成,具体电路如图5 所示。



图5 ZigBee 通信模块电路
CC2430 芯片具有完整的压控振荡器,并把许多电路功能都直接集中到了芯片中,所以整个ZigBee模块电路非常简单,只需晶振、天线及少量的外围电路就可以使ZigBee无线模块正常工作,减少外围电路可以使无线系统工作的更加稳定。
3 系统软件

设计采用模块化设计思想在μnSP IDE 和IAR 编译器环境下,完成语音芯片SPCE061A 和射频芯片CC2430 的软件编译和调试,进而实现语音识别功能以及无线通信功能,并使SPCE061A 和射频芯片CC2430 可以协同工作。语音识别就是要对发音者发出的语音与语音模板中的模板进行匹配,确定发音者发出的语音指令,并根据所识别的命令作出相应的命令。对于本系统而言,需要识别的是特定人的语音识别,所以本系统没有把语音模板写入程序中,需要发音者自行对语音模块进行语音训练。语音识别的C 语言实现代码部分如下:

 

Loop:
BSR_InitRecognizer(BSR_MIC); //初始化识别器
while(1){*
(unsigned int *)0x7012 = 1; //喂狗
uiRes = BSR_GetResult(); //取得识别结果
if(uiRes > 0){
if(uiActivated){
uiTimerCount = 0;
switch(uiRes){
case NAME_ID:
switch(uiBS_Team){
case 0: //第一组的第一个命令
PlaySnd(WELCOME);
//播放“欢迎进入系统"
break;
case 1:
//第二组的第一个命令
break;
case 2: //第三组的第一个命令
break;
}b
reak;
case Command_One_ID:
switch(uiBS_Team){
case 0: //第一组的第二个命令
*P_IOB_Data = *P_IOB_Data |
0x0002 ; //控制灯亮
PlaySnd(D25);
//播放语音灯已打开
*P_UART_Data ='1;
//通过串口将识别结果发送至FFD
break;
case 1: //第二组的第二个命令
break;
case 2: //第三组的第二个命令
break;
}
*(unsigned int *)0x7012 = 1;
uiActivated = 0; break;
case Command_Two_ID:
switch(uiBS_Team){
case 0://第一组的第三个命令(准备)
*P_IOB_Data = *P_IOB_Data &
0xfffd; //控制灯关闭
PlaySnd(D26);
//播放语音提示“灯已关闭”
*P_UART_Data =′2′;
//通过串口将识别结果发送至FFD
break;
case 1: //第二组的第三个命令
break;
case 2: //第三组的第三个命令
break;
}
*(unsigned int *)0x7012 = 1;
uiActivated = 0;
break;
}
4 结 语

本文提出基于ZigBee 数传模块和SPCE061A 单片机语音识别系统的设计方案,采用ZigBee数传模块作为通信处理器,并完成了两大模块的相关硬件和软件的设计。经测试,本系统语音识别率达到98%以上,具有较高的应用价值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: