四、软件设计及使用说明
4.1. 主程序软件设计流程及说明
4.11. 语音识别函数
1)
【API格式】int BSR_DeleteSDGroup(0);
【功能说明】SRAM初始化。
【参 数】该参数是辨识的一个标识符,0代表选择SRAM,并初始化。
【返 回 值】当SRAM擦除成功返回0,否则,返回-1。
2)
【API格式】int BSR_Train (int CommandID, int TraindMode);
【功能说明】训练函数。
【参 数】
CommandID:命令序号,范围从0x100到0xFFF,并且对于每组训练语句
都是唯一的。
TraindMode:训练次数,要求使用者在应用之前训练一或两遍:
BSR_TRAIN_ONCE:要求训练一次。
BSR_TRAIN_TWICE要求训练两次。
【返 回 值】训练成功,返回0;没有声音返回-1;训练需要更多的语音数据来训练,返回-2;当环境太吵时,返回-3;当数据库满,返回-4;当两次输入命令不同,返回-5;当序号超出范围,返回-6。
【备 注】
① 在调用训练程序之前,确保识别器正确的初始化。
② 训练次数是2时,则两次一定会有差异,所以一定要保证两次训练结果接近
③ 为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音
④ 调用函数后,等待2秒开始训练,每条命令只有1 .3秒,也就是说,当训练命令超出1.3秒时,只有前1.3秒命令有效。
4.12. 辨识部分
1)
【API格式】void BSR_InitRecognizer(int AudioSource)
【功能说明】辨识器初始化。
【参 数】定义语音输入来源。通过MIC语音输入还是LINE_IN电压模拟量输入。
【返 回 值】无。
2)
【API格式】int BSR_GetResult();
【功能说明】辨识中获取数据。
【参 数】 无。
【返回值】R1
当无命令识别出来时,返回0;
识别器停止未初始化或识别未激活返回-1;
当识别不合格时返回-2;
当识别出来时返回命令的序号。
【备 注】 该函数用于启动辨识,BSR_GetResult();
3)
【API格式】void BSR_StopRecognizer(void);
【功能说明】停止辨识。
【参 数】无。
【返 回 值】 无。
【备 注】该函数是用于停止识别,当调用此函数时,FIQ_TMA中断将关闭。
中断部分:
【API格式】 _BSR_InitRecognizer
【功能说明】 在中断中调用,并通过中断将语音信号送DAC通道播放。
【参 数】 无。
【返 回 值】 无。
【备 注】
① 该函数在中断FIQ_TMA中调用
② 当主程序调用BSR_InitRecognizer时,辨识器便打开8K采样率的FIQ_TMA中
断并开始将采样的语音数据填入辨识器的数据队列中。
③ 应用程序需要设置一下程序段在FIQ_TMA中:
4.2.
程序变量说明
4.21.全局变量
1)gActivated
【功能】该变量用于检测是否有触发命令,当有识别出语句为触发名称则该位置1
【应用】用户无法对该变量进行处理
2)gTriggerRespond
【功能】该变量为一三元素数组,用于保存触发命令语音序号。
【应用】用户在自定义触发命令时,可以修改该数组元素。
3)gComm2Respond
【功能】该变量为一三元素数组,用于保存命令语音序号。
【应用】用户在自定义触发命令时,可以修改该数组元素。
4)PlayFlag
【功能】该变量为1时,表示播放A2000格式语音,0,播放S480格式语音。
【应用】用户使用时,注意判断是使用A2000还是S480。
4.22.局部变量
1) res
【功能】该变量用于保存int BSR_Train (int CommandID, int TraindMode)
返回值:
返回0,训练成功;
返回-1,没有声音;
返回-2,训练需要更多的语音数据来训练;
返回-3,环境太吵;返回-4,当数据库满;
返回-5,当两次输入命令不同;
返回-6,当序号超出范围。
【应用】用户通过对该变量的判断了解辨识的结果
2)timeCnt
【功能】用于命令定时使用,在1.5秒内,识别成功,将其清零,否则语音提示,
“没有听到任何声音”
【应用】用户使用时,只要将此值进行清零即可。
3)random_no
【功能】在gTriggerRespond[3] 与 gComm2Respond[3]中,选择两数组中的元素。
表示语音播放的序号。
【应用】用户使用时,通过设置此变量选择命令和识别的语音响应。
4.3.程序使用说明
**************************训练********************************
提示音
输入语音
---------------------------------------------------------------------------------------------
"请输入触发名称"
"警卫"
"请输入第一条命令"
"红灯亮"
"请输入第二条命令"
"红灯灭"
"请输入第三条命令"
"绿灯亮"
"请输入第四条命令"
"绿灯灭"
"请再说一遍"(以上提示音每说完一遍出现此命令)
"没有听到任何声音" (当没有检测到声音时出现此命令)
"两次输入名称不相同"(当两次输入的名称不同时出现此命令)
"两次输入命令不相同"(当两次输入的命令有差异时出现此命令)
"准备就绪,请开始辨识"(以上五条语句全部训练成功时,进入识别)
***************************识别*******************************
发布命令
应答
---------------------------------------------------------------------------------------------
"警卫"
"在"
"红灯亮"
IOB0口灯被点亮
"红灯灭"
IOB0口灯被熄灭
"绿灯亮"
IOB1口灯被点亮
"绿灯灭"
IOB1口灯被熄灭
注意: 在每次提示音结束后2-3秒再输入命令或当上次应答结束2-3秒后
再发布命令
4.4. 主程序流程图及说明
|