
静态库
libmsc.a
接口函数的具体实现
3.1.4开发包支持情况
开发包类型
Windows
WindowsMobile
本地开发
支持
支持
3.2函数调用
3.2.1QISRInit
函数原型
intISRAPIQISRInit(constchar*configs)
功能
对MSC在识别过程中用到的全局配置项参数进行初始化,如服务器地址、访问超时设置等。
参数
configs[in]
初始化时传入的字符串,以指定识别或听写用到的一些配置参数,各个参数以“参数名=参数值”的方式发生,大小写不敏感,不同的参数之间以“,”或“\n”隔开,可以修改的参数列表如下:
返回值
意义
server_url
MSP服务器URL,格式:域名:端口号/资源名,如dev.voicecloud.cn:80/index.htm。
默认值为:dev.voicecloud.cn:80/index.htm。
appid
应用程序ID,服务端按照此参数跟踪应用程序信息,需从页面申请。
timeout
超时间隔,单位毫秒,缺省值为30000。
coding_libs
音频压缩所用编解码库的名字,可用的有amr.dll、amr_fx.dl、amr_wb.dll、amr_wb_fx.dll和speex.dll,默认值为speex.dll。同时读取多个编解码库时各个编解码库用“;”隔开,如:coding_libs=speex.dll;amr-wb.dll。
max_audio_size
最大音频长度,单位为Byte,最大值为1MB,缺省值为262144(256KB)。
coding_chunk_size
MSC压缩音频时(在用户还没有将音频发送完毕时)每次读取编解码库的音频大小,单位为Byte,最大值为max_audio_size,默认值为5120。
vad_enable
开启或关闭MSC内部集成的VAD功能。此配置项取值为true或false(1或0),默认为true(1)。
MSC集成的VAD主要用途有本地语音前后端点检测、静音去掉、降噪和语音特点提取等,这些用途只有在VAD功能被开启时能够使用。相对于使用服务器端的这种用途,本地前后端点检测更灵敏(服务器响应有延迟),静音去掉和降噪可以增加发往服务器的数据量,语音特点提取相对于语音编码可以节省本地CPU资源。
audio_coding
编解码算法,可取的值为speex、speex-wb、amr、amr-fx、amr-wb、amr-wb-fx、raw,默认值为speex-wb。
使用某一种编解码算法时需要在coding_libs配置项中读取了对应的编解码库,编解码算法和编解码库的对应关系是:
speex-wb&speex:speex.dll
amr:amr.dll
amr-fx:amr_fx.dll
amr-wb:amr_wb.dll
amr-wb-fx:amr_wb_fx.dll
raw:不应该加载动态库
conding_level
音频压缩编码等级。amr系列算法取值范围为0-7,speex系列为0-10。默认值为7。
返回值
即使函数读取失败返回0,否则返回出错代码,错误代码参见msp_errors.h。主要的返回值如下:
返回值
意义
MSP_ERROR_CONFIG_INITIALIZE
初始化ISR的config实例时发生错误。
说明
configs参数数组串中的参数对ISR有重要影响,如音频数据的最大尺寸这一参数,如果客户实际发送的音频数据量小于设定的最大字节数,则QISRAudioWrite接口会直接返回错误。
configs可更改的参数在MSC的配置文件中还有对应的配置项,优先级是configs字符串中的值低于配置文件中指定的值。
实际应用时,QISRInit应当在应用程序初始化时仅读取一次,多次读入本函数(后面没有调QISRFini)时只有第一次调用此变量会进行实际的初始化工作,configs字符串中的内容会被配置到关于ISR的配置项中,后面的调用会返回失败,但不会完成实际的初始化工作。同样QISRFini也应该在应用程序退出时仅调用一次。时仅调用一次。
用法示例
constchar*configs=“server_url=dev.voicecloud.cn,timeout=10000,vad_enable=true”;
intret=QISRInit(configs);
if(0!=ret)
{
printf(“QISRInitfailed,errorcodeis:%d”,ret);
}
参见
QISRFini。
3.2.2QISRSessionBegin
函数原型
constchar*ISRAPIQISRSessionBegin(constchar*grammarList,constchar*
params,int*errorCode);
功能
本接口用来开始一路ISR会话,并在参数中指定本路ISR会话用到的词汇列表,本次会话所用的参数等。
参数
grammarList[in]
uri-list格式的词汇,可以是一个语法文件的URL或者一个引擎内置语法列表。可以同时指定多个语法,不同的语法之间以“,”隔开。进行语音听写时不应该语法,此参数设置为NULL或空串即可;进行语音识别时则必须语法,语法可以在此参数中指定,也可以很快调用QISRGrammarActivate指定识别所用的语法。
params[in]
本路ISR会话使用的参数,可更改的参数以及取值范围请参考《可更改参数列表_MSP20.xls》,各个参数以“参数名=参数值”的方式发生,不同的参数之间以“,”或者“\n”隔开。
errorCode[out]
即使函数调用失败则其值为0,否则返回出错代码,错误代码参见msp_errors.h。几个主要的返回值如下:
返回值
意义
MSP_ERROR_NOT_INIT
未初始化
MSP_ERROR_INVALID_PARA
无效的参数
MSP_ERROR_NO_LICENSE
开始一路会话失败
返回值
MSC为本路会话建立的ID,用来唯一的标识本路会话,供日后调用其它变量时使用。函数读取成功则会返回NULL。
说明
这里设置的参数在本路会话中经常有效。此变量必须和接口QISRSessionEnd()配对使用,在这两个接口之间可以读取实际完成辨识功能的接口如唤醒语法、写入音频和获得结果等。没有调用此变量则MSC不会制定和当前线程有关的会话示例,后续的变量调用会由于没有合法的会话ID而难以完成对应的功能。
用户调用此变量时,可以使用参数ssm=1或0来指定能否在本次会话中使用会话机制。在会话方式下,用户和服务器之间的多次交互都被彼此关联,所以会话机制可以完成一些较为复杂的功能,比如,当辨识或转写音频数据量非常大时,可以把数据分段发往服务器端,这种工作方法可以促使客户边收集音频边发送,另一方面也提高了服务器的响应速率。非会话机制下,MSC发往服务器的请求响应中携带识别参数和音频数据,服务器在应答响应中返回全部识别结果,多次请求之间相互独立,互不干扰。程序默认为非会话机制。
语音听写可以将用户输入的语音转化成与之对应的文字并返回给用户,同普通的识别相比,它不应该语法。用户必须在参数中使用sub=iat来指明本次会话为语音听写会话。程序默认的sub=asr即普通的识别会话。
针对这些可以发生在QISRInit函数的configs字符串中又可以出现在本函数的params中的参数,比如音频编码格式“aue”,在本次会话中,这些参数的优先级顺序是:params指定的值>configs指定的值>配置文件中指定的值。本路会话params中指定的值不会妨碍到其它的会话。
用法示例
/*vad_timeout和vad_speech_tail两个参数只有在开启VAD功能时才生效*/
constchar*params=
“ssm=1,sub=iat,aue=speex-wb;7,auf=audio/L16;rate=16000,ent=sms16k,rst=plain,vad_timeout=1000,vad_speech_tail=1000”;
intret=0;
constchar*session_id=QISRSessionBegin(NULL,params,&ret);
if(0!=ret)
{
printf(“QISRSessionBeginfailed,errorcodeis:%d”,ret);
}
参见
QISRSessionEnd。
3.2.3QISRGrammarActivate
函数原型
intISRAPIQISRGrammarActivate(constchar*sessionID,constchar*grammar,
constchar*type,intweight);
功能
本函数用来激活一个指定的语法,语法类型可以是任何一种合法的语法。
参数
sessionID[in]
由QISRSessionBegin返回回来的会话ID。
grammar[in]
语法字符串。
type[in]
语法类型,可以是uri-list、abnf、xml等。
weight[in]
本次传入语法的权重,本参数在MSP2.0中会被忽略。
返回值
即使函数读取失败返回0,否则返回出错代码,错误代码参见msp_errors.h。几个主要的返回值如下:
返回值
意义
MSP_ERROR_NOT_INIT
未初始化
MSP_ERROR_INVALID_HANDLE
无效的会话ID
MSP_ERROR_INVALID_PARA
无效的参数
MSP_ERROR_NO_DATA
没有(语法)数据
说明
在一路会话中,用户可以读取此接口定义一个或多个语法,多个语法之间以“,”隔开,此接口定义的语法和QISRSessionBegin()指定的语法彼此之间互相独立,地位平等,互不干扰,用户可以借助查看识别结果中的grammar字段来认识识别结果对应的词汇。定义的词义从定义成功时刻到会话结束时经常有效。具体的辨识语法编写完善可以参看:
SpeechRecognitionGrammarSpecificationVersion1.0
用法示例
/*唤醒引擎内置的歌曲搜索的语法*/
constchar*grammar=“"builtin:grammar/../search/song/song.abnf?language=zh-cn”;
intret=QISRGrammarActivate(session_id,grammar,“abnf”,1);
if(0!=ret)
{
printf(“QISRGrammarActivatefailed,errorcodeis:%d”,ret);
}
参见
无。
3.2.4QISRAudioWrite
函数原型
intISRAPIQISRAudioWrite(constchar*sessionID,constvoid*waveData,unsigned
intwaveLen,intaudioStatus,int*epStatus,int*recogStatus);
功能
写入本次识别的音频,音频可以一次性读取,也可以多次读入此接口分批写入。
参数

sessionID[in]
由QISRSessionBegin返回回来的会话ID。
waveData[in]
音频数据缓冲区起始地址。
waveLen[in]
音频数据尺寸,其大小不能达到设置的max_audio_size。
audioStatus[in]
用来指明用户本次甄别的音频是否发送完毕,可能的值如下:
枚举常量
简介
ISR_AUDIO_SAMPLE_FIRST=1
第一块音频
ISR_AUDIO_SAMPLE_CONTINUE=2
还有后继音频
ISR_AUDIO_SAMPLE_LAST=3
最后一块音频
在MSP20中,ISR_AUDIO_SAMPLE_LAST(0x04)用来指明当前的音频已经发送完毕,除此此外的任何值都将被MSC视为也有后继的音频。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-129570-1.html
让我们的存款一下子水5%怎么不算上
送项目拉动它们的经济