科大讯飞语音识别讲义PPT学习教案_第1页
科大讯飞语音识别讲义PPT学习教案_第2页
科大讯飞语音识别讲义PPT学习教案_第3页
科大讯飞语音识别讲义PPT学习教案_第4页
科大讯飞语音识别讲义PPT学习教案_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1科大讯飞语音识别讲义主要内容语音识别系统简介语音识别接口介绍基于讯飞语音识别系统SDK的开发第1页/共97页课程目的了解语音识别系统的组成及原理了解讯飞语音识别系统的组成了解讯飞语音识别系统的接口及参数掌握基于讯飞语音识别系统API的开发第2页/共97页名词和缩略语ISR讯飞语音识别引擎(iFLYSpeechRecognizer),其产品名称为InterReco,ISR是其内部名称。EP端点检测(end-pointerdetection)是将语音数据(speech)从背景噪声中分离出来的一项技术,主要应用于语音识别领域,可以很大程度地降低识别器的运算量,从而能有效地提高识别效率以及识别效果。ISREPAPI端点检测开发接口(ISRend-pointerdetectionAPI),识别引擎中与端点检测相关的开发接口。ISRRECAPI语音识别开发接口(ISRRecognizeAPI),识别引擎中与识别器相关的开发接口。第3页/共97页主要内容语音识别系统简介语音识别接口介绍基于讯飞语音识别系统SDK的开发第4页/共97页讯飞语音识别系统命令词识别系统路由导航系统POI系统第5页/共97页1命令词识别系统以语法的形式限定待识别的内容$Content=苹果|香蕉;识别效果与语法的规模息息相关第6页/共97页识别网络的构建将字、词转化为对应的发音序列增加静音节点,以适应语音前后的静音第7页/共97页命令词识别基本原理基本问题回忆HMM的解码问题如何从网络中寻找一条与语音最像的路径?第8页/共97页基于槽的命令词识别语法的定义,例如定票系统有目的地及出发地两个信息$Content=从$from到$to;$from=北京|上海;$to=广州|香港;第9页/共97页置信度置信度确认识别结果正确的可信度置信度要解决的问题解码算法只会寻找最大可能的路径,对集外词无拒识能力解码算法因模型及近似的原因,对集内词识别也不一定正确第10页/共97页置信度的应用优化用户交互界面高置信度直接默认识别准确中置信度有必要让用户再次确认低置信度默认识别错误,需要再次识别或者转人工坐席置信度门限的确认falseaccept、falserejectEER:equalerrorrate第11页/共97页命令词识别系统的评估假如在N句集内语音中有M1句得到正确识别结果有M2句得到错误识别结果剩下的没有识别结果评价参数正确识别率=?

(M1/N)第12页/共97页命令词识别系统的评估假如在N句集外语音中,有M句没有识别结果剩下的错误识别评价参数错误接受率=?1-(M/N)第13页/共97页2呼叫导航语音识别系统用户语音更加自由、开放Q:“我的银行卡丢了,该怎么办”A:“挂失办理”不再需要编写语法规则不仅需要将语音转化为文字,还需要从文字中理解意思第14页/共97页呼叫导航流程

识别后端

模型训练

识别前端采样量化端点检测特征提取模型训练吃过了吗?……声学模型语言模型语音识别解码识别结果置信度判决语义理解语义模型我/的/手机/丢/了手机挂失第15页/共97页语言模型语言模型包含的内容覆盖该领域的所有字、词,及其发音字、词出现的概率及其相互连接的概率P(手机)=0.3P(丢|手机)=0.4第16页/共97页解码网络以所有词的并列为解码网络,支持回跳循环循环跳回的时候,加入语言模型概率第17页/共97页语义模型描述了文字与语义的概率手机上网余额查询彩铃业务手机挂失我的手机丢了手机/丢0.250.250.250.250.70.050.20.050.80.050.050.1S(手机挂失)=0.8S(手机上网)=0.05第18页/共97页呼叫导航系统的评估识别性能假如“我/的/手机/丢/了”,识别为“我们/手机/丢/掉/了插入错误,如“掉”,标记为I删除错误,如“的”,标记为D替换错误,如“我们”,标记为S假如总词数为N,其中正确为M,则识别准确率为

(N-I-D-S)/N导航性能假如总音频数为N,其中导航正确的为M,则导航正确率为 M/N第19页/共97页3POI识别系统PointofInterest用户可说出感兴趣的条目的片段支持顺序、跳序、逆序如“安徽省合肥中国科学技术大学”“安徽省合肥中国科学技术大学”“中国科学技术大学”“科学技术大学”“中国科学技术大学合肥”第20页/共97页POI识别系统流程

识别后端

模型训练

识别前端采样量化端点检测特征提取模型训练吃过了吗?……声学模型语言模型语音识别解码识别结果置信度判决检索Ke1/da4/中国科大/北方科大资源制作检索资源第21页/共97页POI识别系统的语言模型定义了音节及音节之间的概率Unigram,P(zhong1),Bigram,P(ji4|ke1)Trigram,P(ji4|zhong1,ke1)…第22页/共97页POI检索-投票机制中国科学技术大学安徽大学北京科技大学科大讯飞ke1ji4da4xue2通过投票机制,评价每个条目的得分,综合未出现音的影响,可以提供检索结果的候选,并可忽略顺序的影响第23页/共97页POI检索-编辑距离动态规划可以有效避免识别过程中的插入删除错误,但是其包含时间信息,不能解决倒序的问题,可以作为投票机制的补充。中国科学技术大学安徽大学北京科技大学科大讯飞Ke1ji4da4xue2第24页/共97页三种技术的比较命令词呼叫路由POI语言模型否支持支持用户语音自由度不自由自由较自由语法是否否语义理解否是是其它资源否语义模型检索资源解码结果命令词词串拼音串应用举例交互查询客服中心菜单扁平化地图搜索第25页/共97页主要内容语音识别系统简介语音识别接口介绍基于讯飞语音识别系统SDK的开发第26页/共97页语音识别接口介绍InterReco简介InterReco接口简介InterReco标准接口API及参数第27页/共97页InterReco简介InterReco是一款与说话人无关语音识别系统能够完成电话应用、移动互联网等应用环境下的语音识别功能,为需要开发自助语音服务的厂商提供基本的引擎支持具备优秀的识别率,提供全面的开发支持,具备大型应用的性能,符合电信应用的稳定性要求使用InterReco开发的语音识别应用能够丰富服务的内容,降低用户使用的难度,极大降低人工坐席的成本,可以很大程度上提高电话语音服务的质量,提高用户满意度第28页/共97页语音识别接口介绍InterReco简介InterReco接口简介InterReco标准接口API及参数第29页/共97页InterReco接口简介标准开发接口端点检测开发接口识别器开发接口语音录入开发接口语音识别应用开发接口语音识别快速开发接口第30页/共97页InterReco接口关系第31页/共97页InterRecoAPI调用流程初始化逆初始化会话开始会话结束识别开始识别结束启动端点检测停止端点检测发送语音到识别器并识别获取识别结果ISRrecInitializeISRepOpenISRepCloseISRrecUninitializeISRrecSessionBeginISRrecRecognizerCreateISRrecGrammarLoadISRrecGrammarActivateISRrecGrammarDeactivateISRrecGrammarFreeISRrecRecognizerDestroyISRrecSessionEndISRrecRecognizerStartISRrecRecognizerStopISRepSessionBeginISRepDetectorCreateISRepStartISRepPromptDoneISRepStopISRepDetectorDestroyISRepSessionEndISRepWriteISRepReadISRrecAudioWriteISRrecGetXMLResult第32页/共97页InterReco标准开发接口端点检测开发接口支持对音频数据检测语音开始点及结束点的功能,并提供端点检测的参数设置、读取功能。识别器开发接口通过激活语法,对语音进行语音识别并获取识别结果。同时为满足一般IVR的需要,提供DTMF(双音多频)解析、返回用户语音等功能。语音录入开发接口提供语音录入的相关功能,需要和端点检测、识别器接口配合使用。第33页/共97页InterReco应用开发接口是标准接口的封装,使用起来更为简单通过激活语法,实现在线的语音识别功能,并提供DTMF语法解析、返回用户语音等功能应用开发接口开发较为便捷,功能也较为完备,可以满足一般的识别应用第34页/共97页InterReco快速开发接口是对应用开发接口的封装,提供最为快速的开发能力通过激活语法,实现在线的语音识别功能的同时,提供了对语音文件的识别功能与简单开发接口相比,不提供DTMF语法解析及返回用户语音功能第35页/共97页标准开发接口之端点检测开发接口函数名称功能简介ISRepOpen初始化端点检测系统ISRepClose逆初始化端点检测系统ISRepDetectorCreate创建一路端点检测实例ISRepDetectorDestroy销毁一路端点检测实例ISRepSetParameter设置端点检测器参数ISRepGetParameter获取端点检测器参数ISRepSessionBegin开始一路会话ISRepSessionEnd结束一路会话ISRepPromptDone通知端点检测器提示音播放结束ISRepStart开始端点检测ISRepStop结束端点检测第36页/共97页标准开发接口之端点检测开发接口(续)函数名称功能简介ISRepWrite向端点检测器写入原始语音数据ISRepRead从端点检测器读取端点检测后数据ISRepStateReset重置端点检测器声学状态ISRepStateQuerySize获取端点检测器声学状态长度ISRepStateLoad加载端点检测器声学状态ISRepStateSave保存端点检测器声学状态第37页/共97页标准开发接口之识别器开发接口函数名称功能简介ISRrecInitialize进程范围初始化语音识别引擎ISRrecUninitialize进程范围逆初始化,关闭识别引擎ISRrecRecognizerCreate创建一个语音识别实例ISRrecRecognizerDestroy销毁一个语音识别实例ISRrecGrammarLoad加载一个语音识别语法到识别引擎ISRrecGrammarCompile编译指定的语法到内存缓冲区ISRrecGrammarActivate激活一个语法供后续的识别过程使用ISRrecGrammarDeactivate解除激活一个已经加载的语法ISRrecGrammarFree从识别引擎释放一个语法ISRrecRecognizerSetParameter设置识别参数ISRrecRecognizerGetParameter获取识别参数ISRrecSessionBegin开始一个识别会话,设置通道名称ISRrecSessionEnd结束一个识别会话第38页/共97页标准开发接口之识别器开发接口(续)函数名称功能简介ISRrecRecognizerStart使用当前激活的语法开始进行识别ISRrecAudioWrite在识别过程中向识别器发送音频数据ISRrecRecognizerCompute计算当前识别结果ISRrecGetWaveform获取最后一次识别对话的语音数据ISRrecGetXMLResult获取一个识别结果的XML形式的表示ISRrecParseDTMFResults使用当前活动语法解析一个DTMF字符串ISRrecLogEvent向CallLog中写入一个事件或者相关信息ISRrecRecognizerStop停止当前识别ISRrecAcousticStateLoad从内存缓冲区中加载声学状态信息ISRrecAcousticStateSave把实例的声学状态信息写入指定的内存缓冲区ISRrecAcousticStateReset重置实例的声学状态信息ISRrecAcousticStateQuerySize获得声学状态信息的大小第39页/共97页标准开发接口之语音录入开发接口函数名称功能简介ISRveBegin开始一个语音录入实例ISRveEnd结束一个语音录入实例ISRvePrepare在语音录入会话中,准备一次语音录入识别,生成所需语法ISRveProcess在一次语音录入会话中处理识别的结果,并生成语音录入结果语音录入应用程序一般会为每一个用户维护一个已经录入的词语列表,每一个录入的条目对应一个由语音录入过程产生的发音。典型的语音录入过程如下:1)

调用ISRveBegin创建一个VE实例;2)

调用ISRvePrepare获得语音录入语法ID和权重,同时获得混淆语法、冲突语法的权重。3)

使用第2步返回的结果激活语音录入语法;4)

使用第2步返回的结果激活混淆语法和冲突语法,这些语法里面包含所有应用程序不想被录入的词条和那些已经被录入的词条;5)

进行一次识别;6)

调用ISRveProcess函数处理ISRrecGetXMLResult返回的XML结果;7)

如果ISRveProcess返回的结果说明还需要重复录入的话,跳转到第2步;8)

如果ISRveProcess返回的结果说明已经重复多次还没有形成一致的录入结果,那么跳转到第11步;9)

否则,将有以下情况之一:一个词条已经成功录入、录入的词条和混淆语法里面的某个词条发音接近、录入的词条和冲突语法里面的某个词条发音接近。如果一个词条成功录入,添加到已录入列表;如果一个词条混淆或者冲突,提示用户用另外的发音录入,重新从第1步开始。10)

解除激活所有的语法;11)

调用ISRveEnd结束录入,清除所有临时数据。第40页/共97页语音识别应用开发接口函数名称功能简介ISRInitialize进程范围初始化语音识别引擎ISRUninitialize进程范围逆初始化,关闭识别引擎ISRRecognizerCreate创建一个语音识别实例ISRRecognizerDestroy销毁一个语音识别实例ISRGrammarActivate激活一个语法供后续的识别过程使用ISRGrammarDeactivate解除激活一个已经加载的语法ISRSetParameter设置识别参数ISRGetParameter获取识别参数ISRRecognizerStart使用当前激活的语法开始进行识别ISRAudioWrite在识别过程中向识别器发送音频数据ISRRecognizerCompute计算当前识别结果第41页/共97页语音识别应用开发接口(续)函数名称功能简介ISRGetWaveform获取最后一次识别对话的语音数据ISRGetXMLResult获取一个识别结果的XML形式的表示ISRParseDTMFResults使用当前活动语法解析一个DTMF字符串ISRLogEvent向CallLog中写入一个事件或者相关信息ISRRecognizerStop停止当前识别ISRPromptDone说明当前提示音播放完毕第42页/共97页语音识别快速开发接口函数名称功能简介*QISRInit进程范围初始化语音识别引擎QISRFini进程范围逆初始化,关闭识别引擎*QISRSessionBegin创建一路识别*QISRGrammarActivate激活指定的语法,设置语法的权重*QISRAudioWrite向识别器送入音频数据,返回端点检测和识别状态*QISRGetXMLResult获得XML格式的识别结果*QISRSessionEnd逆初始化,释放资源,结束本次识别*QISRWaveformRecog完成一次识别操作,返回识别结果该接口有宽字符版本,名称为后缀“W”。

如:QISRInit的宽字符版本接口为QISRInitW。第43页/共97页语音识别接口介绍InterReco简介InterReco接口简介InterReco标准接口API及参数第44页/共97页音频接口IVR平台授权管理端点检测

接口识别器

接口控制音频数据状态信息控制音频数据状态信息识别结果应用集成架构示意第45页/共97页端点检测开发接口及参数第46页/共97页ISRepOpen函数原型int

ISRAPIISRepOpen(constwchar_t*ep,void*reserved);

功能全局初始化端点检测系统,把需要使用的一些全局数据装载到系统内存中。参数ep[in]传入需要初始化的引擎名称,可以为NULL,系统将自动查找需要初始化的引擎reserved[in/out]保留,必须为NULL。第47页/共97页ISRepClose函数原型intISRAPIISRepClose();

功能全局逆初始化端点检测系统,从系统内存中移出所有资源。

参数无。第48页/共97页ISRepDetectorCreate函数原型intISRAPIISRepDetectorCreate(ISR_EP_INST*ep,constwchar_t*params);

功能创建一路端点检测实例。

参数ep

[out]创建成功时返回的端点检测实例句柄;params

[in]创建句柄可以携带的参数信息,格式为“param1=value1,param2=value2”,在句柄创建后会使用这里指定的参数初始化句柄。

在网络应用环境下,需要通过serverAddr参数指定需要连接的语音服务器地址,格式如“serverAddr=192.168.70.45:13606”,端口号可以省略,系统会使用缺省的端口号连接语音服务器,如果不指定该参数或地址指定为“0.0.0.0”,则使用负载均衡,自动选择负载最轻的服务器连接。

另外,这里的参数也可以指定引擎的过滤条件,例如引擎名称过滤,格式“ename=isr30”,说明必须使用isr30引擎,其中isr30为InterReco3.0的缩写。第49页/共97页ISRepDetectorDestroy函数原型intISRAPIISRepDetectorDestroy(ISR_EP_INSTep);

功能销毁一路不再使用的端点检测实例。

参数instance[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄。第50页/共97页ISRepStateReset函数原型intISRAPIISRepStateReset(ISR_EP_INSTep);

功能重置端点检测器的声学状态信息。

参数ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄。第51页/共97页ISRepStateQuerySize函数原型intISRAPIISRepStateQuerySize(ISR_EP_INSTep,unsignedint*size);

功能返回端点检测器的声学状态信息长度。

参数ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄。size[out]返回的端点检测器声学状态信息长度(bytes)。第52页/共97页ISRepStateLoad函数原型intISRAPIISRepStateLoad(ISR_EP_INSTep,void*buffer,constintlen);

功能加载端点检测器的声学状态信息。

参数

ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄。

buffer[in]用以加载的声学状态信息。

len[in]声学状态信息长度(字节数)。第53页/共97页ISRepStateSave函数原型intISRAPIISRepStateSave(ISR_EP_INSTep,void*buffer,unsignedintmaxlen);

功能保存端点检测器的声学状态信息。

参数

ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄。

buffer[in]用以保存声学状态信息的内存。

maxlen[in]保存声学状态信息的最大长度(字节数)。第54页/共97页ISRepSetParameter函数原型intISRAPIISRSetParameter(ISR_EP_INSTep,constwchar_t*name,constwchar_t*value);

功能设置端点检测实例参数。

参数ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄;

name[in]指定设置的参数类型;

value[in]指向设置参数值缓冲区的指针。端点检测参数参数意义isr_ep_mode工作模式,默认为begin_endisr_ep_waveform_logging是否log端点检测后的wav数据,默认为falseisr_ep_magic_word_max_msec设置magicword最大长度(ms),默认为2000,最小为1,最大为INT_MAXisr_ep_magic_word_min_msec设置magicword最小长度(ms),默认为200,最小为1,最大为INT_MAXisr_ep_bos_backoff设置bos向前移动的长度(ms),默认为200,最小为0isr_ep_eos_backoff设置eos向后移动的长度(ms),默认为200,最小为0isr_ep_min_speech_length设置最小语音长度,默认为250(ms),最小为100,最大为300isr_ep_gmm_win_size设置模型判决窗长,默认500(ms),最小300,最大600timeout设置提示音结束后等待bos的长度(ms),默认为7000,最小为-1,-1表示没有限制,最大为INT_MAXincompletetimeout设置语音间隔(ms),默认为750,最小为0,最大为INT_MAX第55页/共97页ISRepGetParameter函数原型intISRAPIISRepGetParameter(ISR_EP_INStep,constwchar_t*name,wchar_t*value,unsignedint*len);

功能获取端点检测实例的参数。

参数

ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄;

name[in]指定获取的参数类型;

value[out]指向返回参数值的指针;

len[in/out]调用时传入value指向的参数缓冲区大小(字节),返回时填入该参数实际的大小(字节数)。第56页/共97页ISRepSessionBegin函数原型intISRAPIISRepSessionBegin(ISR_EP_INSTep,constwchar_t*channelName,constwchar_t*params);

功能开始一次会话。

参数ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄;

channelName[in]指向会话通道的指针;

params[out]保留,必须为NULL。第57页/共97页ISRepSessionEnd函数原型intISRAPIISRepSessionEnd(ISR_EP_INSTep);

功能结束一路会话。

参数

ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄。第58页/共97页ISRepPromptDone函数原型intISRAPIISRepPromptDone(ISR_EP_INSTep);

功能通知端点检测器外部提示音结束,端点检测器内部开始超时计时。

参数

ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄。第59页/共97页ISRepStart函数原型intISRAPIISRepStart(ISR_EP_INSTep);

功能开始端点检测。

参数

ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄。第60页/共97页ISRepStop函数原型intISRAPIISRepStop(ISR_EP_INSTep,ISRepStopCodecode,constwchar_t*hints);

功能停止端点检测。

参数

ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄;

code[in]停止端点检测的原因类型;

hints[in]保留,必须为NULL。第61页/共97页ISRepWrite函数原型intISRAPIISRepWrite(ISR_EP_INSTep,ISRAudioSamples*samples,ISRepState*state,int*bos,int*eos);

功能向端点检测器发送原始语音数据,返回当前端点检测器所处的状态信息。

参数ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄;

samples[in]输入的原始语音数据结构体指针;

state[out]当前端点检测器所处的状态信息;

bos[out]检测到的语音起始点,相对语音起始位置的偏移量,单位为ms;eos[out]检测到的语音结束点,相对语音起始位置的偏移量,单位为ms。typedefstructISRAudioSamples{

void*

samples;

unsignedint

len;

constwchar_t*

type;

int

status;}

ISRAudioSamples;其中:samples

[in]指向音频数据的缓冲区指针;len

[in]音频数据的长度,字节为单位。type[in]指明samples指向的音频格式信息,可以的取值有:

“audio/basic”

格式为8-bit8KHzu-law

[unsignedchar*]

"audio/x-alaw-basic"

格式为8-bit8KHzA-law

[unsignedchar*]

"audio/L16;rate=8000"

格式为16-bit8KHzlinear

[short*]status

[in]当前音频的状态,即第一个缓冲区ISR_AUDIO_SAMPLE_FIRST、中间缓冲区ISR_AUDIO_SAMPLE_CONTINUE、最后一个缓冲区ISR_AUDIO_SAMPLE_LAST。ISRepState指明端点检测器所处的状态,取值如下:1)ISR_EP_LOOKING_FOR_SPEECH,尚未检测到前端点;2)ISR_EP_IN_SPEECH,已经检测到语音;3)ISR_EP_AFTER_SPEECH,已经检测到后端点;4)ISR_EP_TIME_OUT,处于等待超时状态;5)ISR_EP_ERROR,端点检测器内部出现错误;6)ISR_EP_MAX_SPEECH,检测到的语音长度超过门限,处于最大语音状态。第62页/共97页ISRepRead函数原型intISRAPIISRepRead(ISR_EP_INSTep,ISRAudioSamples*samples,ISRepState*state,unsignedintmax_len);

功能读取端点检测之后的数据并返回当前端点检测器所处的状态信息。

参数

ep[in]先前调用ISRepDetectorCreate得到的端点检测服务实例句柄;

samples[out]输出的语音数据结构体指针;

state[out]当前端点检测器所处的状态信息;

max_len[in]读取语音数据的最大长度(字节数);第63页/共97页识别器开发接口及参数第64页/共97页识别过程第65页/共97页ISRrecInitialize函数原型intISRAPIISRrecInitialize(constwchar_t*engine,void*reserved);

功能进程级的初始化语音识别引擎,初始化全局信息。

参数

engine[in]传入需要初始化的引擎名称,可以为NULL,系统将自动查找需要初始化的引擎。

Reserved保留,必须为NULL。第66页/共97页ISRrecUninitialize函数原型intISRAPIISRrecUninitialize(void);

功能逆初始化并关闭语音识别引擎,释放全局资源。

参数无。第67页/共97页ISRrecRecognizerCreate函数原型intISRAPIISRrecRecognizerCreate(ISR_REC_INST*rec,constwchar_t*params);

功能创建一个语音识别实例。

参数

rec[out]

传入识别实例句柄的地址,返回新创建的识别实例句柄。

params[in]

创建句柄可以携带的参数信息,格式为“param1=value1,param2=value2”,在句柄创建后会使用这里指定的参数初始化句柄。

在网络应用环境下,需要通过serverAddr参数指定需要连接的语音服务器地址,格式如“serverAddr=192.168.70.45:13606”,端口号可以省略,系统会使用缺省的端口号连接语音服务器,如果不指定该参数或地址指定为“0.0.0.0”,则使用负载均衡,自动选择负载最轻的服务器连接。

另外,这里的参数也可以指定引擎的过滤条件,例如引擎名称过滤,格式“ename=isr20”,说明必须使用isr20引擎。ISR_REC_INSTrec=NULL;intret=ISRrecRecognizerCreate(&rec,“serverAddr=192.168.70.25”);if(ret!=ISR_SUCCESS)

printf(”Cannotcreaterecognizerinstance,errorcode=%d.”,ret);第68页/共97页ISRrecRecognizerDestroy函数原型intISRAPIISRrecRecognizerDestroy(ISR_REC_INSTrec);

功能销毁一个语音识别实例。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄;第69页/共97页语法相关接口第70页/共97页ISRrecGrammarLoad函数原型intISRAPIISRrecGrammarLoad(ISR_REC_INSTrec,constISRrecGrammarData*grammar);

功能加载一个URI或者字符串类型的语音识别语法到识别引擎。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄;

grammar[in]需要加载的语法信息,一个结构体,用于描述需要加载的语法URI或字符串信息,还可能包含一些获取参数。typedefstructISRrecGrammarData{

constwchar_t*

type;

constwchar_t*

data;

constwchar_t*

media_type;

void*

binary_data;

unsignedint

binary_length;

void*

reserved;}

ISRrecGrammarData;其中:type

[in]语法的类型,可以为"string/3.0"、"uri/3.0"、"string"或"uri"类型。其中”string/3.0”和”string”意义相同,”string”为了兼容而保留,同样”uri/3.0”和”uri”相同;data

[in]字符串类型的语法内容或者URI。这里的URI可以是相对的,例如“../test.abnf”。media_type

[in]这个字段的取值请参考下面的表格。当type字段取值为”uri/3.0”时,这个域提供了备选描述信息。binary_data

[in]未使用,必须为NULL。binary_length

[in]未使用,必须为NULL。ISRrecGrammarDatagrdata;memset(&grdata,0,sizeofgrdata);grdata.data=L”d:\\test.abnf”;grdata.type=L”uri”;intret=ISRrecGrammarLoad(&rec,&grdata);if(ret!=ISR_SUCCESS)

printf(”Cannotloadgrammar,errorcode=%d.”,ret);第71页/共97页ISRrecGrammarCompile函数原型intISRAPIISRrecGrammarCompile(ISR_REC_INSTrec,constISRrecGrammarData*grammar,

void*buffer,unsignedint*len);

功能编译指定的语法到内存缓冲区。实际不常使用。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄。

grammar[in]需要编译的语法信息,参考上一章节的描述。

buffer[out]存放编译后二进制语法的缓冲区,注意这个缓冲区的内存由用户自己分配和释放。

len[in/out]输入缓冲区的以长度(单位:字节),返回二进制语法实际的长度。第72页/共97页ISRrecGrammarActivate函数原型intISRAPIISRrecGrammarActivate(ISR_REC_INSTrec,constISRrecGrammarData*grammar,unsignedintweight,constchar*grammarID);

功能激活一个语法供后续的识别过程使用。

参数

rec[in]

由ISRrecRecognizerCreate函数创建的实例句柄;

grammar[in]

需要激活的语法信息,参考上一章节的描述。

weight[in]

一个整型值,用于指定这个语法和其他激活语法之间的相对权重,可以用这个值向识别器表明需要优先处理的语法的识别结果。

这个参数的取值范围是1–32767之间,值越大表明该语法的权重越大,在多个激活的语法中属于该语法识别结果的置信度越高。

grammarID[in]

指定该语法的ID,这个ID将在返回的识别结果中体现,如果用户激活了多个语法,最终的识别结果中的每个项都会指明该识别结果的来源语法ID。第73页/共97页ISRrecGrammarDeactivate函数原型intISRAPIISRrecGrammarDeactivate(ISR_REC_INSTrec,constISRrecGrammarData*grammar);

功能解除激活一个已经加载的语法,后续的识别将不使用该语法。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄;

grammar[in]需要解除激活的语法信息,参考上一章节的描述。第74页/共97页ISRrecGrammarFree函数原型intISRAPIISRrecGrammarFree(ISR_REC_INSTrec,constISRrecGrammarData*grammar);

功能从识别引擎释放一个语法,识别器将不再使用这个语法。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄。

grammar[in]需要释放的语法信息,参考上一章节的描述。第75页/共97页ISRrecRecognizerSetParameter函数原型intISRAPIISRrecRecognizerSetParameter(ISR_REC_INSTrec,constwchar_t*param,constwchar_t*value);

功能设置识别参数。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄。

param[in]需要获取的参数名称,支持的参数列表参考说明部分。

value[in]输入设置的参数值。参数名称意义maxspeechtimeout允许输入的最大音频时间,单位毫秒。缺省为15000,如果取值-1则表明没有限制。注意,如果该值设置过大,可能导致识别系统耗用大量的内存。isr_rec_best_result_count识别引擎输出的最优结果的数目,默认为3,最大值10,最小值1。isr_rec_confidence_threshold系统默认的识别结果的置信度输出门限,默认为350,可以设置1-1000的所有整数值。只有识别置信度高于这个门限的识别结果才可以输出。isr_rec_confidence_output_enabled是否进行置信度输出,缺省为“true”isr_rec_return_waveform是否返回识别的语音数据,缺省为“false”。如果需要使用函数ISRrecGetWaveform函数获取音频数据,那么这个参数必须设置为“true”。第76页/共97页ISRrecRecognizerGetParameter函数原型intISRAPIISRrecRecognizerGetParameter(ISR_REC_INSTrec,constwchar_t*param,wchar_t

*value,unsignedint*len);

功能获取识别参数。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄;

param[in]需要获取的参数名称,支持的参数列表参考说明部分。

value[in/out]输入缓冲区指针,返回获取的参数值。

len[in/out]输入缓冲区长度(单位:字符),返回实际的参数值长度。第77页/共97页ISRrecSessionBegin函数原型intISRAPIISRrecSessionBegin(ISR_REC_INSTrec,constwchar_t*channelName,constwchar_t*params);

功能开始一个识别会话,设置通道名称,表明一个呼叫的开始。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄。

channelName[in]当前会话的通道名称。

params[in]当前会话的参数串,可以为NULL。第78页/共97页ISRrecSessionEnd函数原型intISRAPIISRrecSessionEnd(ISR_REC_INSTrec);

功能结束一个识别会话,标志一次呼叫的结束。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄。

第79页/共97页ISRrecRecognizerStart函数原型intISRAPIISRrecRecognizerStart(ISR_REC_INSTrec);

功能使用当前激活的语法开始进行识别。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄。第80页/共97页ISRrecAudioWrite函数原型intISRAPIISRrecAudioWrite(ISR_REC_INSTrec,ISRAudioSamples*samples);

功能在识别过程中向识别器发送音频数据。

参数

rec[in]由ISRrecRecognizerCreate函数创建的实例句柄;

samples[in]音频数据信息。一个结构体,用于描述音频数据及格式信息。第81页/共97页ISRrecRecognizerCompute函数原型intISRAPIISRrecRecognizerCompute(ISR_REC_INSTrec,intmaxComputeTime,ISRrecRecognizerStatus*status,ISRrecResultType*type,ISR_REC_RESULT*resultData);

功能计算当前识别结果。

参数

rec[in]

由ISRrecRecognizerCreate函数创建的实例句柄;

maxComputeTime[in]

本次识别结果计算的最长CPU时间,单位毫秒。该值不能为0;

status[out]

返回当前识别状态,具体的取值参考下面的说明;

type[out]

指明识别结果的类型。resultData[out]

返回指向当前识别结果数据的指针,这个识别结果可以调用ISRrecGetXmlResult函数生成XML格式的识别结果。第82页/共97页ISRrecGetWaveform函数原型intISRAPIISRrecGetWaveform(ISR_REC_RESULTresultData,constwchar_t*type,

void**waveform,unsignedint*len);

功能获取最后一次识别对话的语音数据。

参数

resultData[in]指向识别结果信息的数据句柄,识别结果包含识别串、置信度等信息。

type[in]指定获取的音频格式,如果传入NULL,使用缺省的ulaw格式。

waveform[out]返回指向音频数据缓冲区的指针,缓冲区的内存由识别器内部分配和释放。

len[out]返回音频数据的字节长度。一般而言,这个函数在下列情况下可以使用:1)

获取当前识别器的音频用于分析识别效果;2)

存档语音数据;3)

为电话呼叫者回放音频;4)

用于说话者身份校验系统;几个type字符串的例子:1)

"silence_suppression=interword+end+begin;audio/basic;rate=8000",使用缺省的音频格式,去除前、后和单词中间的静音段;2)

silence_suppression=begin+end3)

audio/basic;silence_suppression=begin+interword+end第83页/共97页ISRrecGetXMLResult函数原型intISRAPIISRrecGetXMLResult(ISR_REC_RESULTresultData,constwchar_t*format,

constwchar_t**xmlResult);

功能获取一个识别结果的XML形式的表示。

参数

resultData[in]指向识别结果信息的数据句柄,识别结果包含识别串、置信度等信息。

format[in]指明期望获得的识别结果的格式。

xmlResult[out]返回指向XML格式识别结果的缓冲区指针。该缓冲区由识别系统自动管理,用户无需分配和释放。<?xmlversion="1.0"encoding="UTF-16"standalone="no"?><result>

<interpretationconfidence="72.50"grammar="1">

<instance>

<city>北京</city>

</instance>

<inputmode="speech">北京</input>

</interpretation>

</result>#ABNF1.0GB2312;

languagezh-CN;root$city;meta"author"is"iFLYTEK";

public$city=$citie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论