//----------------------------------------------------------------------------
//-- 该程序是特定人辨识的一个范例:
//--
//-- 在程序中我们通过三条语句的训练演示特定人连续音识别,其中第一条语句为触发命令。
//--
//-- 在程序一开始为训练名称,即触发命令,然后提示训练两条命令,训练完毕开始辨识当识别
//出触发名称后,发布命令则会听到应答,具体命令如下:
//****************训练******************************************
// 提示音 输入语音
//--------------------------------------------------------
//"请输入触发名称" "警卫"
//"请输入第一条命令" "开枪"
//"请输入第二条命令" "你在干什么?"
//"请再说一遍"(以上提示音每说完一遍出现此命令)
//"没有听到任何声音"(当没有检测到声音时出现此命令)
//"两次输入名称不相同"(当两次输入的名称不同时出现此命令)
//"两次输入命令不相同"(当两次输入的命令有差异时出现此命令)
//"准备就绪,请开始辨识"(以上三条语句全部训练成功时,进入识别)
//*****************识别*****************************************
// 发布命令 应答
//---------------------------------------------------------
//"警卫" "在"/"长官"
//"开枪" "枪声"
//"你在干什么?" "我在巡逻"/"我在休息"/"我在等人"
//注意:在每次提示音结束后2-3秒再输入命令或当上次应答结束2-3秒后再发布命令
#include "bsrsd.h"
#define NAME_ID 0x100
#define COMMAND_ONE_ID 0x101
#define COMMAND_TWO_ID 0x102
#define RSP_INTR 0
#define RSP_NAME 1
#define RSP_FIRE 2
#define RSP_GUARD 3
#define RSP_AGAIN 4
#define RSP_NOVOICE 5
#define RSP_NAMEDIFF 6
#define RSP_CMDDIFF 7
#define RSP_STAR 8
#define RSP_MASTER 9
#define RSP_HERE 10
#define RSP_GUNSHOT 0
#define RSP_PATROL 11
#define RSP_READY 12
#define RSP_COPY 13
#define RSP_NOISY 14
//..................全程变量....................
int gActivated = 0; //用于检测是否有触发命令,当有识别出语句为触发名称则该位置1
int gTriggerRespond[] = {RSP_MASTER, RSP_HERE, RSP_MASTER};//第一条命令应答
int gComm2Respond[] = {RSP_PATROL, RSP_READY, RSP_COPY};//第二条命令应答
extern void ClearWatchDog();
int PlayFlag = 0;
void PlayRespond2(int Result)//枪声放音子程序
{
BSR_StopRecognizer();
SACM_A2000_Initial(1);
SACM_A2000_Play(Result, 3, 3);
while((SACM_A2000_Status()&0x0001) != 0)
{
SACM_A2000_ServiceLoop();
ClearWatchDog();
}
SACM_A2000_Stop();
BSR_InitRecognizer(BSR_MIC);
BSR_EnableCPUIndicator();
}
void PlayRespond(int Result)//放音子程序
{
BSR_StopRecognizer();
SACM_S480_Initial(1);
SACM_S480_Play(Result, 3, 3);
while((SACM_S480_Status()&0x0001) != 0)
{
SACM_S480_ServiceLoop();
ClearWatchDog();
}
SACM_S480_Stop();
BSR_InitRecognizer(BSR_MIC);
BSR_EnableCPUIndicator();//启动实时监控
}
int TrainWord(int WordID, int RespondID)//命令训练
{
int res;
PlayRespond(RespondID);
while(1)
{
res = BSR_Train(WordID,BSR_TRAIN_TWICE);
if(res == 0) break;
switch(res)
{
case -1: //没有检测出声音
PlayRespond(5);
return -1;
case -2: //需要重新训练一遍
PlayRespond(4);
break;
case -3: //环境太吵
PlayRespond(14);
return -1;
case -4: //数据库满
return -1;
case -5: //检测出声音不同
if(WordID == NAME_ID) PlayRespond(6);//两次输入名称不同
else PlayRespond(7);//两次输入命令不同
return -1;
case -6: //序号错误
return -1;
}
}
return 0;
}
int main()
{
int res, timeCnt=0, random_no=0;
BSR_DeleteSDGroup(0); // 初始化存储器RAM
PlayRespond(0); //播放开始训练的提示音
//..........训练名称..............................
while(TrainWord(NAME_ID,1) != 0) ;
//..........训练第一条命令.......................
while(TrainWord(COMMAND_ONE_ID,2) != 0) ;
//..........训练第二条命令.......................
while(TrainWord(COMMAND_TWO_ID,3) != 0) ;
//..........开始识别命令.........................
BSR_InitRecognizer(BSR_MIC); //辨识器初始化
BSR_EnableCPUIndicator();
PlayRespond(8); // 播放开始辨识的提示音
while(1)
{
random_no ++;
if(random_no >= 3) random_no = 0;
res = BSR_GetResult();
if(res > 0) //识别出命令
{
if(gActivated)
{
timeCnt = 0;
switch(res)
{
case NAME_ID:
PlayRespond(9);
break;
case COMMAND_ONE_ID:
PlayFlag = 1;
PlayRespond2(0);
PlayFlag = 0;
gActivated = 0;
break;
case COMMAND_TWO_ID:
PlayRespond(11);
gActivated = 0;
}
}
else
{
if(res == NAME_ID)
{
PlayRespond(9);
gActivated = 1;
timeCnt = 0;
}
}
}
else if (gActivated)
{
if (++timeCnt > 450) //超出定时
{
PlayRespond(5); //在设定时间内没有检测出声音
gActivated = 0;
timeCnt = 0;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
61板非特定识别例子.zip (62个子文件)
www.pudn.com.txt 218B
BSR
BSR.lik 4KB
BSR.h 70B
a2000.inc 1KB
bsrSD.inc 3KB
sacmv26e.lib 238KB
BSR.opt 916B
Makefile 5KB
FIQ.asm 1KB
voice
3.48k 2KB
ready.48k 429B
6.48k 2KB
guard.48k 447B
novoicedetected.48k 753B
noisy.48k 591B
diffcmds.48k 987B
master.48k 393B
guardinit2.48k 753B
7.48k 2KB
11.48k 2KB
5.48k 2KB
40.48k 2KB
2.48k 2KB
10.48k 1KB
8.48k 3KB
18.48k 2KB
iamhere.48k 411B
standingby..48k 681B
onpatrol.48k 537B
1.48k 2KB
16.48k 2KB
13.48k 1KB
guardname.48k 843B
fire.48k 483B
12.48k 2KB
9.48k 1KB
14.48k 2KB
4.48k 2KB
different2.48k 915B
sayagain.48k 483B
17.48k 2KB
copy.48k 465B
S12.24K 3KB
15.48k 2KB
bsrSD.h 3KB
BSR.spj.bak 3KB
BSR.set 743B
BSR.env 534B
bsrv222SDL.lib 59KB
s480.inc 878B
BSR.spj 3KB
a2000.h 1KB
InitIO.asm 817B
Resource.inc 2KB
Device.env 2KB
hardware.inc 10KB
s480.h 603B
BSR.rc 2KB
main.c 5KB
Debug
Resource.asm 4KB
hardware.asm 28KB
hardware.h 6KB
共 62 条
- 1
资源评论
ben_ben77
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功