理论教育 实现双足步行机器人语音控制平台

实现双足步行机器人语音控制平台

时间:2023-06-29 理论教育 版权反馈
【摘要】:双足步行机器人上位机语音识别程序框架:在程序的开始,首先要利用语音SDK提供的Asr SetSystemDir()函数设置识别引擎工作的系统目录,主要是指定声学模型所在的目录,然后利用AsrSysInit()初始化语音识别系统。端点检测到语音大于系统设置的起始话音音量并进行录音,当语音小于设置的结束音量停止录音。语音识别系统对语音进行识别,通过回调函数得到回调通知,利用AsrGetNBe-stResult()获得识别结果。

实现双足步行机器人语音控制平台

双足步行机器人上位机语音识别程序框架:

在程序的开始,首先要利用语音(Software Devlopment Kit)SDK提供的Asr SetSystemDir

()函数设置识别引擎工作的系统目录,主要是指定声学模型所在的目录,然后利用Asr

SysInit()初始化语音识别系统。

如果语音识别系统初始化成功,则可以利用As rLineInit(ResultProc)函数来创建一个

识别引擎hLine,并指定该引擎识别结果出来时的回调函数以及用户定义数据。

在本文中我们回调函数的定义为

DWORD ResultProc(HASRLINE hLine,constPASRNOTIFY pNotify,DWORD dwUserDa-ta);

其中pNotify是回调通知,它的结构体如下:

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

NOTIFYRESULT 1 //识别结果

NOTIFYVOICELEVEL 2 //声音大小

NOTIFYUTTBEGIN 3 //一句话开始

NOTIFYUTTEND 4 //一句话结束

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

dwReserve:保留,无意义。

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

我们可以使用该结构来设置、切换、关闭识别引擎对应的语法规则。其中:

nNum是语法规则的数量。

szRuleName是语法规则的名字,一个语音识别引擎可以设置多个语法规则。

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

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

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

安装语音合成软件InterPhonicCNRev1.0版,安装iFlyTTS_SDK,安装加密狗配置程序(在安装盘中)。

数据源:在系统DSN里注册数据源。

驱动:Microsoft access driver(∗.mdb)。

数据库:WuKongdb.mdb。

在系统DSN中注册数据源,打开控制面板→管理工具→数据源(ODBC)→系统DSN→添加→选择Microsoft access driver(∗.mdb)点击“完成”后→在数据源名里输入dashendb同时在数据库(选择)中选择相应路径下WuKongdb.mdb即可。

串口1和无线发射器连接起来。

把Mandarin_8KHz3.0、asrapi.dll、ASRAPI.h、asrapi.lib、Dashen.grm文件复制到当前目录下,在vc++link库中加入asrapi.lib,在工程中加入ASRAPI.h文件。

编写语法规则:新建一个记事本命名为Dashen.grm,在里面写入:

$talk=(∗∗∗|...)<0->$talks(∗∗∗|...)<0->;

$talks=

你好|

你会唱歌吗|

你多大了;

Dashen.grm文件增加语法的规则:“$ talks=”后面增加要识别的语句需顶行开始,以“|”结尾,文件的最后一条语句以“;”结尾。否则不能进行识别!

#include"stdio.h"

#include"iostream.h"

#include"asrapi.h"

#include"windows.h"

#defineONLINETEST

语音控制平台中的重要函数编写如下:

//∗∗∗∗∗∗∗∗∗∗∗∗在数据集中查找所提问题的答案∗∗∗∗∗∗∗∗∗∗∗∗∗∗

//∗∗∗∗∗∗∗∗∗∗∗∗在数据集中查找所提问题的答案∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

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

我要反馈