//-----------------This is the main program of Snoopy project---------------------------
//--Copyright(C) 2001, Cyberon Corp.
//该程序是非特定人语音识别程序,原来在SPCE500A下运行,能识别并应答16个命令,存储空间为128K字节。
//我们将其进行了修改,使其能在SPCE061A下运行,由于存储空间为32K字,只能识别并应答9个命令。
//在这个例程当中,我们示范了如何使用语音识别引擎对8个已经经过训练的命令进行识别。
//第一个命令 "Snoopy",可以作为使能命令,也就是说使用者只能在该命令之后发出其他命令。
//例如,用户只有在发出 "Snoopy"命令并且听到响应"Snoopy here"之后才能继续下达其他命令
//如"How are you", "I love you",等等。
//当"Snoopy"命令响应之后,程序将等待8秒钟,如果没有其他命令发出,
//系统将跳回到第0组,并且再次等待触发命令"Snoopy"。当用户的命令无法被识别时,
//程序将响应为"Execuse me?", "I can't hear you!"或 "Say again!"这时用户可以再一次下达语音命令。
// Snoopy Group Response phrase
// ------------------------------------------------------------------------
// Snoopy Snoopy here
// How are you I'm fine!
// I love you I love you too!
// Goto sleep ZZZzzzzz....(Snore)
// Let's play Snoopy loves to play!t4
// Sing a song lala..la...
// Merry Christmas Merry Christmas!
// Happy new year Happy New Year!
#include "bsr.h"
//...............available commands.........................
#define SNOOPY 1
#define WHAT 0
#define EXCUSEME 9
void PlayRespond(int Result)
{
BSR_StopRecognizer();//停止识别,进入响应部分
SACM_A2000_Initial();//初始化语音播放
if (Result>5) Result-=1;//跳过第5个命令(该命令训练失效
if (Result>9) Result=9;//当反应的结果数超过所知结果时,停止在提问状态。
SACM_A2000_Play(Result);//播放对应的语音响应
while(SACM_A2000_Status() != 0)
{
SACM_A2000_ServiceLoop();
}
SACM_A2000_Stop();//停止播放
BSR_InitRecognizer();//启动语音识别
}
int gActivated = 0;
//这个变量用来确定系统是否已经被触发,当被触发时,该变量为1.
int gWhatCount = 0;
//用来计量系统已经存在几个"What?" 响应.如果响应多于3个,系统将对"What?" 响应
//进行屏蔽,直到有一个系统能够识别的命令为止.这可以防止噪音的干扰.
extern void InitIO(void);
int main()
{
int res,score,unknown=0;
int TimeCount = 0;
InitIO();
BSR_SelectGroup(0); //找到第一个语音命令组
BSR_InitRecognizer(); //初始化语音识别器
PlayRespond(1); //播放"Snoopy is here"
BSR_EnableCPUIndicator(); //启动实时监控
while(1)
{
res = BSR_GetResult();//获得识别结果
if(res!=0 && res!=-1)
{
if(res == -2)
{ //当语音被拒绝识别时,res为-2.通过获得识别码判断是否为一个命令.
score = BSR_GetRecognizerScore();
if(score >= -60)
{
//判断已经出现几个不可识别的命令
if(gWhatCount < 3)
{
gWhatCount ++;
PlayRespond(EXCUSEME);
unknown ++;
if(unknown >= 3) unknown = 0;
TimeCount = 0; // Reset TimeCount
}
}
}
else
{
gWhatCount = 0;//清除无法识别命令记数器
if(gActivated)
{
PlayRespond(res);
}
else
{
if(res == SNOOPY)//触发命令,激活系统
{
PlayRespond(res);
gActivated = 1;
}
}
TimeCount = 0; // Reset TimeCount
}
}
else if (gActivated)
{
if (++TimeCount > 500) //如果在触发命令之后8秒之内并没有一个
//有效命令出现,则进入休眠状态
{
PlayRespond(WHAT);
TimeCount = 0;
gActivated = 0;
}
}
}
}
hy7607
- 粉丝: 0
- 资源: 3
最新资源
- CC2530无线zigbee裸机代码实现液晶LCD显示.zip
- CC2530无线zigbee裸机代码实现中断唤醒系统.zip
- 车辆、飞机、船检测24-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 基于51单片机的火灾烟雾红外人体检测声光报警系统(protues仿真)-毕业设计
- 高仿抖音滑动H5随机短视频源码带打赏带后台 网站引流必备源码
- 车辆、飞机、船检测25-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 四足机器人示例代码pupper-example-master.zip
- Python人工智能基于深度学习的农作物病虫害识别项目源码.zip
- 基于MIT mini-cheetah 的四足机器人控制quadruped-robot-master.zip
- 菠萝狗四足机器人py-apple-bldc-quadruped-robot-main.zip
- 基于51单片机的篮球足球球类比赛计分器设计(protues仿真)-毕业设计
- 第3天实训任务--电子22级.pdf
- 基于FPGA 的4位密码锁矩阵键盘 数码管显示 报警仿真
- 车辆、飞机、船检测5-YOLO(v5至v11)、COCO、CreateML、Paligemma、VOC数据集合集.rar
- 河南大学(软工免浪费时间)
- NOIP-学习建议-C++
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论2