//======================================================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//========================================================================================
// 工程名称: Guard_SD.spj
// 功能描述: 该程序是特定人辨识的一个范例:
// 在程序中我们通过三条语句的训练演示特定人连续音识别,其中第一条语句为触发命令。
// 在程序一开始为训练名称,即触发命令,然后提示训练两条命令,训练完毕开始辨识当识别
// 出触发名称后,发布命令则会听到应答,具体命令如下:
//****************训练******************************************
// 提示音 输入语音
//--------------------------------------------------------
// "请输入触发名称" "警卫"
// "请输入第一条命令" "开枪"
// "请输入第二条命令" "你在干什么?"
// "请再说一遍"(以上提示音每说完一遍出现此命令)
// "没有听到任何声音"(当没有检测到声音时出现此命令)
// "两次输入名称不相同"(当两次输入的名称不同时出现此命令)
// "两次输入命令不相同"(当两次输入的命令有差异时出现此命令)
// "准备就绪,请开始辨识"(以上三条语句全部训练成功时,进入识别)
//*****************识别*****************************************
// 发布命令 应答
//---------------------------------------------------------
// "警卫" "在"/"长官"
// "开枪" "枪声"
// "你在干什么?" "我在巡逻"/"我在休息"/"我在等人"
// 注意:在每次提示音结束后2-3秒再输入命令或当上次应答结束2-3秒后再发布命令
// 文件来源: 《SPCE061单片机原理及应用技术》第七章 凌阳音频压缩算法,第307页
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.0(or later)
//
// 涉及的库: CMacro.lib/sacmv25.lib/bsrv222SDL.lib
//
// 组成文件: main.c
// FIQ.asm/hardware.asm/key.asm/InitIO.asm
// hardware.inc
//
// 日期: 2002-6-12
//===========================================================================================
#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(RSP_NOVOICE);
return -1;
case -2: //需要重新训练一遍
PlayRespond(RSP_AGAIN);
break;
case -3: //环境太吵
PlayRespond(RSP_NOISY);
return -1;
case -4: //数据库满
return -1;
case -5: //检测出声音不同
if(WordID == NAME_ID) PlayRespond(RSP_NAMEDIFF);//两次输入名称不同
else PlayRespond(RSP_CMDDIFF);//两次输入命令不同
return -1;
case -6: //序号错误
return -1;
}
}
return 0;
}
int main()
{
int res, timeCnt=0, random_no=0;
BSR_DeleteSDGroup(0); // 初始化存储器RAM
PlayRespond(RSP_INTR); //播放开始训练的提示音
//..........训练名称..............................
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(RSP_STAR); // 播放开始辨识的提示音
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(gTriggerRespond[random_no]);
break;
case COMMAND_ONE_ID:
PlayFlag = 1;
PlayRespond2(RSP_GUNSHOT);
PlayFlag = 0;
gActivated = 0;
break;
case COMMAND_TWO_ID:
PlayRespond(gComm2Respond[random_no]);
gActivated = 0;
}
}
else
{
if(res == NAME_ID)
{
PlayRespond(gTriggerRespond[random_no]);
gActivated = 1;
timeCnt = 0;
}
}
}
else if (gActivated)
{
if (++timeCnt > 450) //超出定时
{
PlayRespond(RSP_NOVOICE); //在设定时间内没有检测出声音
gActivated = 0;
timeCnt = 0;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
yuyinshibie.zip_61_61趣味语音_语音识别C
共64个文件
48k:34个
inc:5个
asm:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 148 浏览量
2022-09-14
21:44:33
上传
评论
收藏 196KB ZIP 举报
温馨提示
用于凌阳61单片机的趣味语音识别的全部程序和子程序,内涵中文说明
资源推荐
资源详情
资源评论
收起资源包目录
yuyinshibie.zip (64个子文件)
趣味语音识别程序5
Guard.c 5KB
FIQ.asm 1KB
Guard_SD.env 725B
hardware.asm 28KB
InitIO.asm 826B
Resource.inc 2KB
isr.asm 1KB
Guard_SD.scs 1KB
main.c 6KB
a2000.h 1KB
bsrSD.h 3KB
a2000.inc 1KB
Guard_SD.h 80B
hardware.inc 10KB
Guard_SD.lik 4KB
sacmv26e.lib 238KB
Device.env 3KB
Guard_SD.set 766B
Guard_SD.spj 3KB
hardware.h 6KB
bsrSD.inc 3KB
bsrv222SDL.lib 59KB
voice
4.48k 2KB
17.48k 2KB
3.48k 2KB
13.48k 1KB
sayagain.48k 483B
15.48k 2KB
ready.48k 429B
9.48k 1KB
14.48k 2KB
copy.48k 465B
18.48k 2KB
6.48k 2KB
guardname.48k 843B
7.48k 2KB
noisy.48k 591B
guard.48k 447B
novoicedetected.48k 753B
8.48k 3KB
different2.48k 915B
fire.48k 483B
40.48k 2KB
16.48k 2KB
11.48k 2KB
diffcmds.48k 987B
guardinit2.48k 753B
2.48k 2KB
iamhere.48k 411B
master.48k 393B
onpatrol.48k 537B
5.48k 2KB
standingby..48k 681B
12.48k 2KB
1.48k 2KB
S12.24K 3KB
10.48k 1KB
Makefile 6KB
Resource.asm 4KB
Guard_SD.opt 612B
Guard_SD.RC 2KB
PWM.WAV 44B
s480.inc 878B
s480.h 603B
共 64 条
- 1
资源评论
我虽横行却不霸道
- 粉丝: 75
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功