API 文档
MSC for Windows&Linux API
#msp_cmn.h通用接口
#函数
类型 | 说明 |
---|---|
int MSPAPI | MSPLogin(const char *usr, const char *pwd, const char *params) 初始化msc,用户登录。 |
const char *MSPAPI | MSPUploadData(const char *dataName, void data, unsigned int dataLen, const charparams, int *errorCode) 用户数据上传。 |
int MSPAPI | MSPLogout 退出登录。 |
int MSPAPI | MSPSetParam(const char *paramName, const char *paramValue) 参数设置接口、离线引擎初始化接口。 |
int MSPAPI | MSPGetParam(const char *paramName, char *paramValue, unsigned int *valueLen) 获取MSC的设置信息。 |
const char *MSPAPI | MSPGetVersion(const char *verName, int *errorCode) 获取MSC或本地引擎版本信息。 |
#详细描述
#函数说明
#MSPLogin()
此参数保留,传入NULL即可。
此参数保留,传入NULL即可。
参见下表:
格式说明:每个参数和参数值通过key=value的形式组成参数对;如果有多个参数对,再用逗号进行拼接,如:key_1=value_1,key_2=value_2
注意:每个参数(key)和参数值(value)均不得含有逗号(,)和等号(=),否则会被截断
在线/离线业务 | 参数 | 名称 | 说明 |
---|---|---|---|
通用 | appid | 应用ID | SDK申请成功后获取到的appid。申请SDK请前往讯飞开放平台 ,此参数必须传入 |
离线 | engine_start | 离线引擎启动 | 启动离线引擎,支持参数,ivw:唤醒,asr:识别 |
离线 | [xxx]_res_path | 离线引擎资源路径 | 设置ivw、asr引擎离线资源路径,详细格式如下:fo|[path]|[offset]|[length]|xx|xx。 示例如下,单个资源路径: ivw_res_path=fo|res/ivw/wakeupresource.jet, 多个资源路径:asr_res_path=fo|res/asr/common.jet;fo|res/asr/sms.jet |
成功返回MSP_SUCCESS,否则返回错误代码,详见错误码列表 。
使用其他接口前必须先调用MSPLogin,可以在应用程序启动时调用。
#MSPUploadData()
数据名称字符串。
待上传数据缓冲区的起始地址。
数据长度(如果是字符串,则不包含'\0')。
目前支持以下四种。具体如下:
在线/离线业务 | 参数 | 功能 | 应用业务 | 文件编码 |
---|---|---|---|---|
在线 | "sub = uup,dtt = userword" | 上传用户词表 | iat | UTF-8 |
在线 | "sub = uup,dtt = contact" | 上传联系人 | iat | UTF-8 |
上传成功后,联系人、用户词表功能返回值NULL。
使用其他接口前必须先调用MSPLogin,可以在应用程序启动时调用。
#MSPLogout()
如果函数调用成功返回MSP_SUCCESS,否则返回错误代码,详见错误码列表 。
本接口和MSPLogin配合使用。确保其他接口调用结束之后调用MSPLogout,否则结果不可预期。
#MSPSetParam()
参数名,可设置参数如下:
在线/离线业务 | 参数 | 名称 | 说明 |
---|---|---|---|
离线 | engine_start | engine_start 启动离线引擎 | 启动引擎: 设置paramName为engine_start paramValue为engine_start=asr、ivw离线业务 之后加资源所在路径 例如engine_start=asr,asr_res_path=fo|file_path|[offset]|[length] |
离线 | engine_destroy | 销毁离线引擎 | 销毁引擎: 设置paramName 为engine_destroy paramValue 为asr 、tts 、ivw ( 如engine_destroy=tts)离线业务 |
参数值。
函数调用成功则其值为MSP_SUCCESS,否则返回错误代码,详见错误码列表 。
无
#MSPGetParam()
参数名,一次调用只支持查询一个参数。参数如下:
在线/离线业务 | 参数 | 描述 |
---|---|---|
在线 | upflow | 上行数据量 |
在线 | downflow | 下行数据量 |
输入:buffer首地址
输出:向该buffer写入获取到的信息
输入:buffer的大小
输出:信息实际长度(不含'\0')
函数调用成功返回MSP_SUCCESS,否则返回错误代码,详见错误码列表 。
以查询上行流量为例,获取到的是当前累计的上行流量。下行流量查询与此相似。
#MSPGetVersion()
参数名,一次调用只支持查询一个参数。参数如下:
在线/离线业务 | 参数 | 描述 |
---|---|---|
离线 | ver_msc | MSC版本号 |
离线 | ver_asr | 离线识别版本号,目前不支持 |
离线 | ver_tts | 离线合成版本号 |
离线 | ver_ivw | 离线唤醒版本号 |
如果函数调用成功返回MSP_SUCCESS,否则返回错误代码,详见错误码列表 。
成功返回缓冲区指针,失败或数据不存在返回NULL。
使用其他接口前必须先调用MSPLogin,可以在应用程序启动时调用。
无
#qisr.h 语音识别
#qisr.h 文件参考
#函数
类型 | 说明 |
---|---|
const char *MSPAPI | QISRSessionBegin(const char *grammarList, const char *params, int *errorCode) 开始一次语音识别。 |
int MSPAPI | QISRAudioWrite(const char *sessionID, const void *waveData, unsigned int waveLen, int audioStatus, int *epStatus, int *recogStatus) 写入本次识别的音频。 |
const char *MSPAPI | QISRGetResult(const char *sessionID, int *rsltStatus, int waitTime, int *errorCode) 获取识别结果。 |
int MSPAPI | QISRSessionEnd(const char *sessionID, const char *hints) 结束本次语音识别。 |
int MSPAPI | QISRGetParam(const char *sessionID, const char *paramName, char *paramValue, unsigned int *valueLen) 获取当次语音识别信息,如上行流量、下行流量等。 |
int MSPAPI | QISRBuildGrammar(const char *grammarType, const char *grammarContent, unsigned int grammarLength, const char *params, GrammarCallBack callback, void *userData) 构建语法,生成语法ID。 |
int MSPAPI | QISRUpdateLexicon(const char *lexiconName, const char *lexiconContent, unsigned int lexiconLength, const char *params, LexiconCallBack callback, void *userData) 更新本地语法词典。 |
#详细描述
#函数说明
#QISRSessionBegin()
此参数保留,传入NULL即可。
参见下表:
注意:每个参数(key)和参数值(value)均不得含有逗号(,)和等号(=),否则会被截断
在线/离线业务 | 参数 | 名称 | 说明 |
---|---|---|---|
通用 | engine_type | 引擎类型 | 可取值: cloud:在线引擎 local:离线引擎 默认值:cloud |
在线 | sub | 本次识别请求的类型 | iat:语音听写 asr:命令词识别。 默认为iat |
在线 | language | 语言 | 可取值: zh_cn:简体中文 en_us:英文 默认值:zh_cn |
在线 | domain | 领域 | iat:语音听写(默认值) |
在线 | accent | 语言区域 | 可取值: mandarin:普通话(默认值) 其他方言请前往讯飞开放平台控制台查看 |
通用 | sample_rate | 音频采样率 | 可取值:16000,8000 默认值:16000 离线识别不支持8000采样率音频 |
离线 | asr_threshold | 识别门限 | 离线语法识别结果门限值,设置只返回置信度得分大于此门限值的结果 可取值:0~100,默认值:0 |
离线 | asr_denoise | 是否开启降噪功能 | 可取值: 0:不开启,1:开启 默认不开启 |
离线 | asr_res_path | 离线识别资源路径 | 离线识别资源所在路径,对应格式如下: access_type1|file_info1|[offset1]|[length1];access_type2|file_info2|[offset2]|[length2] 各字段含义如下: access_type:文件访问方式,支持路径方式(fo)和文件描述符方式(fd); file_info:此字段和access_type 对应,文件路径对应fo,文件描述符对应fd, |
离线 | grm_build_path | 离线语法生成路径 | 构建离线语法所生成数据的保存路径(文件夹) |
通用 | result_type | 结果格式 | 可取值:plain,json 默认值:plain |
通用 | text_encoding | 文本编码格式 | 表示参数中携带的文本编码格式 |
离线 | local_grammar | 离线语法id | 构建离线语法后获得的语法ID |
通用 | ptt | 添加标点符号(仅sub=iat时有效) | 0:无标点符号;1:有标点符号。默认为1 |
在线 | aue | 音频编码格式和压缩等级 | 编码算法:raw;speex;speex-wb;ico 编码等级:raw:不进行压缩。speex系列:0-10; 默认为speex-wb;7 speex对应sample_rate=8000 speex-wb对应sample_rate=16000 ico对应sample_rate=16000 |
通用 | result_encoding | 识别结果字符串所用编码格式 | GB2312;UTF-8;UNICODE 不同的格式支持不同的编码: plain:UTF-8,GB2312 json:UTF-8 |
通用 | vad_enable | VAD功能开关 | 是否启用VAD 默认为开启VAD 0(或false)为关闭 |
通用 | vad_bos | 允许头部静音的最长时间(目前未开启该功能) | 0-10000毫秒。默认为10000 如果静音时长超过了此值,则认为用户此次无有效音频输入。此参数仅在打开VAD功能时有效。 |
通用 | vad_eos | 允许尾部静音的最长时间 | 0-10000毫秒。默认为2000 如果尾部静音时长超过了此值,则认为用户音频已经结束,此参数仅在打开VAD功能时有效。 |
函数调用成功则其值为MSP_SUCCESS,否则返回错误代码,详见错误码列表。
函数调用成功返回字符串格式的sessionID,失败返回NULL。sessionID是本次识别的句柄。 。
参数只在当次识别中生效。
#QISRAudioWrite()
由QISRSessionBegin返回的句柄。
音频数据缓冲区起始地址。
音频数据长度,单位字节。
用来告知MSC音频发送是否完成,典型值如下:
枚举常量 | 简介 |
---|---|
MSP_AUDIO_SAMPLE_FIRST = 1 | 第一块音频 |
MSP_AUDIO_SAMPLE_CONTINUE = 2 | 还有后继音频 |
MSP_AUDIO_SAMPLE_LAST = 4 | 最后一块音频 |
端点检测(End-point detected)器所处的状态,可能的值如下:
枚举常量 | 简介 |
---|---|
MSP_EP_LOOKING_FOR_SPEECH = 0 | 还没有检测到音频的前端点。 |
MSP_EP_IN_SPEECH = 1 | 已经检测到了音频前端点,正在进行正常的音频处理。 |
MSP_EP_AFTER_SPEECH = 3 | 检测到音频的后端点,后继的音频会被MSC忽略。 |
MSP_EP_TIMEOUT = 4 | 超时。 |
MSP_EP_ERROR = 5 | 出现错误。 |
MSP_EP_MAX_SPEECH = 6 | 音频过大。 |
识别器返回的状态,提醒用户及时开始\停止获取识别结果。典型值如下:
枚举常量 | 简介 |
---|---|
MSP_REC_STATUS_SUCCESS = 0 | 识别成功,此时用户可以调用QISRGetResult来获取(部分)结果。 |
MSP_REC_STATUS_NO_MATCH = 1 | 识别结束,没有识别结果。 |
MSP_REC_STATUS_INCOMPLETE = 2 | 正在识别中。 |
MSP_REC_STATUS_COMPLETE = 5 | 识别结束。 |
函数调用成功则其值为MSP_SUCCESS,否则返回错误代码,详见错误码列表 。
本接口需不断调用,直到音频全部写入为止。上传音频时,需更新audioStatus的值。具体来说:
当写入首块音频时,将audioStatus置为MSP_AUDIO_SAMPLE_FIRST
当写入最后一块音频时,将audioStatus置为MSP_AUDIO_SAMPLE_LAST
其余情况下,将audioStatus置为MSP_AUDIO_SAMPLE_CONTINUE
同时,需定时检查两个变量:epStatus和rsltStatus。具体来说:
当epStatus显示已检测到后端点时,MSC已不再接收音频,应及时停止音频写入
当rsltStatus显示有识别结果返回时,即可从MSC缓存中获取结果
#QISRGetResult()
由QISRSessionBegin返回的句柄。
识别结果的状态,其取值范围和含义请参考QISRAudioWrite 的参数recogStatus。
此参数做保留用。
函数调用成功则其值为MSP_SUCCESS,否则返回错误代码,详见错误码列表。
函数执行成功且有识别结果时,返回结果字符串指针;其他情况(失败或无结果)返回NULL。
char rslt_str[ 2048 ] ={'\0'};
const char* rec_result = NULL;
int rslt_status = 0;
int ret = 0;
while(MSP_REC_STATUS_SPEECH_COMPLETE != rslt_status )
{
rec_result = QISRGetResult ( sessionID, &rslt_status, 5000, &ret );
if( MSP_SUCCESS != ret )
{
printf( "QISRGetResult failed, error code is: %d", ret );
break;
}
if( NULL != rec_result )
{
// 用户可以用其他的方式保存识别结果
strcat( rslt_str, rec_result );
continue;
}
// sleep 一下很有必要,防止MSC 端无缓存的识别结果时浪费CPU 资源
Sleep( 200 );
}
.
#QISRSessionEnd()
由QISRSessionBegin返回的句柄。hints[in]结束本次语音识别的原因描述,为用户自定义内容。
int ret = QISRSessionEnd ( sessionID, "normal end" );
if( MSP_SUCCESS != ret )
{
printf( "QISRSessionEnd failed, error code is: %d", ret );
}
.
#QISRGetParam()
由QISRSessionbegin返回的句柄,如果为NULL,获取MSC的设置信息。
参数名,一次调用只支持查询一个参数。参数如下:
在线/离线业务 | 参数 | 描述 |
---|---|---|
在线 | sid | 服务端会话ID,长度为32字节 |
在线 | upflow | 上行数据量 |
在线 | downflow | 下行数据量 |
通用 | volume | 最近一次写入的音频的音量 |
输入:buffer首地址
输出:向该buffer写入获取到的信息
输入:buffer的大小
输出:信息实际长度(不含’\0’)
函数调用成功返回MSP_SUCCESS,否则返回错误代码,详见错误码列表 。
以查询上行流量为例,获取到的是本次识别当前累计的上行流量。下行流量查询与此相似。
const char * para_name = "upflow";
char para_value[32] = {'\0'};
unsigned int value_len = 32;
int ret = QISRGetParam ( sessionID, para_name, para_value, &value_len );
if( MSP_SUCCESS != ret )
{
printf( "QISRGetParam failed, error code is: %d", ret );
}
.
#QISRBuildGrammar()
语法类型,离线识别采用bnf 格式语法。
语法内容。
语法长度。
参见下表:
格式说明:每个参数和参数值通过key=value的形式组成参数对;如果有多个参数对,再用逗号进行拼接,如:key_1=value_1,key_2=value_2
注意:每个参数(key)和参数值(value)均不得含有逗号(,)和等号(=),否则会被截断
在线/离线业务 | 参数 | 名称 | 说明 |
---|---|---|---|
通用 | engine_type | 引擎类型 | 可取值: local:离线引擎 |
通用 | sample_rate | 音频采样率 | 可取值:16000,8000, 默认值:16000 |
离线 | asr_res_path | 离线识别资源路径 | 离线识别资源所在路径,对应格式如下: access_type1|file_info1|[offset1]|[length1];access_type2|file_info2|[offset2]|[length2] 各字段含义如下: access_type:文件访问方式,支持路径方式(fo)和文件描述符方式(fd); file_info:此字段和access_type 对应,文件路径对应fo,文件描述符对应fd, 其中文件路径必须是包含文件名的完整路径; offset:资源文件在此传入文件中的偏移; length:资源文件大小。 |
离线 | grm_build_path | 离线语法生成路径 | 构建离线语法所生成数据的保存路径(文件夹) |
构建语法回调接口。typedef int ( GrammarCallBack)( int errorCode, const char info, void* userData);
用户数据。
函数调用成功返回MSP_SUCCESS,否则返回错误代码,详见错误码列表 。
无
无
#QISRUpdateLexicon()
词典名称。更新本地语法词典:传递语法中需要更新的词典槽名称
词典内容。本地语法词典:词典内容为换行符分割的字符串列表,如:"词条1\n 词条2\n 词条3\n 词条4"
词典内容长度。
参见下表:
格式说明:每个参数和参数值通过key=value的形式组成参数对;如果有多个参数对,再用逗号进行拼接,如:key_1=value_1,key_2=value_2
注意:每个参数(key)和参数值(value)均不得含有逗号(,)和等号(=),否则会被截断
在线/离线业务 | 参数 | 名称 | 说明 |
---|---|---|---|
通用 | engine_type | 引擎类型 | 可取值: cloud:在线引擎, local:离线引擎, 默认值:cloud |
在线 | subject | 业务类型 | 必须由用户指定,更新云端词典设置为uup |
在线 | data_type | 数据类型 | 必须由用户指定。 更新云端联系人:contact 更新云端个性化词表:userword |
通用 | text_encoding | 文本编码格式 | 表示 参数中携带的文本编码格式 可取值:GB2312,GBK,UTF-8,UTF-16LE,UTF-16BE |
通用 | sample_rate | 音频采样率 | 可取值:16000,8000, 默认值:16000 |
离线 | asr_res_path | 离线识别资源路径 | 离线识别资源所在路径,对应格式如下: access_type1|file_info1|[offset1]|[length1];access_type2|file_info2|[offset2]|[length2] 各字段含义如下: access_type:文件访问方式,支持路径方式(fo)和文件描述符方式(fd); file_info:此字段和access_type 对应,文件路径对应fo,文件描述符对应fd, 其中文件路径必须是包含文件名的完整路径; offset:资源文件在此传入文件中的偏移; length:资源文件大小。 |
离线 | grm_build_path | 离线语法生成路径 | 构建离线语法所生成数据的保存路径(文件夹) |
离线 | grammar_list | 语法id 列表 | 指定需要更新的离线语法id 列表,支持一次性更新多个语法, 格式如下:id1;id2 |
更新词典回调接口。typedef int (LexiconCallBack)(int errorCode, const char info, void* userData);
用户数据。