理论教育 操作指令和ICD2调试器介绍

操作指令和ICD2调试器介绍

时间:2023-06-29 理论教育 版权反馈
【摘要】:2)位操作类指令。每条指令字长为14位,由于篇幅有限,仅在表7-1中列出了设计时所用到的字节操作指令、位操作指令和立即数操作与控制操作指令。表7-2是表7-1操作码字符的说明。ICD2的作用是让用户查看单片机内部的寄存器数据,帮助我们学习及发现程序问题。ICD2本身既是一个调试器,同时也是一个烧入器。

操作指令和ICD2调试器介绍

1.语音识别原理

语音识别分为预处理、特征提取、模式匹配三部分,如图7-132所示。

978-7-111-57208-4-Chapter07-179.jpg

图7-132 语音识别算法原理框图

不同的语音对应着不同的波形,预处理过程把声音转换成相应的波形,特征提取模块提取波形的波长,频率等特征,如“招手”和“下蹲”这两句话预处理完之后对应着完全不同的波形,根据提取的特征和模型库中的模型进行匹配,得到相应的文字,这样就完成了整个语音识别的过程。

2.双足机器人语音识别功能模块

双足机器人语音识别功能模块利用语音识别产品Pattek ASR SDK在Visual C++6.0环境下进行开发。

模式语音ASR是国内首屈一指的整套语音识别解决方案,具备中文、英文等多种语言的连续语音识别以及听写功能,适合于开发计算机、电话、嵌入式终端等各种设备上的语音应用程序。

依托中国科学院自动化研究所在语音识别研究上二十年的技术积累,Pattek ASR具有易用性强,识别率高的特点。用户无须进行训练,引擎的设计已经保证了非特定人这一重要特点;API提供的管理工具可以使得用户可以自如地定义自己所需的词表和语法,以便应付不同的应用需求。API就是应用程序编程接口。它是能用来操作组件、应用程序或者操作系统的一组函数。典型的情况下,API由一个或多个提供某种特殊功能的DLL组成。(Java中有所不同,但大同小异)。DLL是一个文件,其中包含了在Microsoft Windows下运行的任何应用程序都可调用的函数。运行时,DLL中的函数动态地链接到调用它的应用程序中。无论有多少应用程序调用DLL中的某个函数,在磁盘上只有一个文件包含该函数,且只在它调入内存时才创建该DLL。

双足机器人语音识别功能模块的程序流程图如图7-133所示。

978-7-111-57208-4-Chapter07-180.jpg

图7-133 语音识别模块流程图

3.双足机器人上位机语音识别程序框架

在程序的开始,首先要利用SDK提供的Asr_SetSystemDir()函数设置识别引擎工作的系统目录,主要是指定声学模型所在的目录,然后利用Asr_SysInit()初始化语音识别系统。

如果语音识别系统初始化成功,则可以利用Asr_LineInit(ResultProc)函数来创建一个识别引擎hLine,并指定该引擎将结果识别出来时的回调函数以及用户定义数据。

在本文中我们对语音识别回调函数定义为

DWORD ResultProc(HASRLINEhLine,const PASR_NOTIFY pNotify,DWORD dwUserDa-ta);

其中pNotify是回调通知,它的结构体如下:(www.daowen.com)

978-7-111-57208-4-Chapter07-181.jpg

这个结构在回调函数中返回与语音以及语音识别结果相关的数据,其中NotifyType为通知类型,包括:

NOTIFYRESULT 1 //识别结果

NOTIFYVOICELEVEL 2 //声音大小

NOTIFYUTTBEGIN 3 //一句话开始

NOTIFYUTTEND 4 //一句话结束

data:当NotifyType为NOTIFY_VOICE_LEVEL时,data表示当前录音的大小,Notify-Type为其他值时,data无意义。

dwReserve:保留,无意义。

然后我们创建录音回调函数,录音回调函数用来记录语音数据形成数据问件,供语音识别回调函数调用。录音回调函数如下:

978-7-111-57208-4-Chapter07-182.jpg

成功创建一个识别引擎后,利用Asr_GrammarLoad()函数来导入语法规则文件中的语法规则,并对语法规则进行设置。语法规则文件可以由用户按照语法规则的要求根据需要自己编写,语音识别所需要用到的语法规则,遵循ABNF范式(Augmented BNF),兼容W3C语法定义。语法规则的结构体如下所示:

978-7-111-57208-4-Chapter07-183.jpg

978-7-111-57208-4-Chapter07-184.jpg

我们可以使用该结构来设置、切换、关闭识别引擎对应的语法规则。其中:nNum是语法规则的数量;szRuleName是语法规则的名字,一个语音识别引擎可以设置多个语法规则。

成功导入语法规则后,我们利用AsrGrammarActivate()函数来激活语法规则,设置AsrRecSetAutoWork(true)函数由引擎内部自动采集语音数据,然后调用Asr_SetParam()函数设置录音以及引擎相关的参数,最后调用函数Asr_RecStartX(hLine)开始自动识别。

端点检测到语音大于系统设置的起始话音音量并进行录音,当语音小于设置的结束音量停止录音。语音识别系统对语音进行识别,通过回调函数得到回调通知,利用Asr_GetNBe-stResult()函数获得识别结果。

如果不再需要语音识别,利用Asr_RecStopX(hLine)函数停止由Asr_RecStartX函数开启的识别任务,利用Asr_LineRelease(hLine)函数关闭hLine语音识别引擎,并且释放其相关的资源,利用Asr_SysRelease()函数退出系统,清除识别系统申请的资源。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈