资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

输出参数

识别结果回调

设置结果的回调函数

void asr_output_callback(bds::BDSSDKMessage& message, void* user_arg);
sdk->set_event_listener(&asr_output_callback, (void*)& thread_seq);
// 此例中 thread_seq会作为user_arg参数,传入asr_output_callback回调。

BDSSDKMessage 参数

asr_output_callback 中的BDSSDKMessage message参数解析如下: message.name 必定为bds::asr_callback_name message.get_parameter(bds::CALLBACK_ASR_STATUS, status) 获取status,根据status值有如下表格

status 含义 参数
EVoiceRecognitionClientWorkStatusStartWorkIng 引擎准备完毕
EVoiceRecognitionClientWorkStatusFlushData 临时结果 CALLBACK_ASR_RESULT, 具体见下面表格
EVoiceRecognitionClientWorkStatusFinish 最终结果 CALLBACK_ASR_RESULT, 具体见下面表格
EVoiceRecognitionClientWorkStatusLongSpeechEnd 开启长语音模式时(默认开启),整个音频流识别结束。该事件表示音频流识别结束。
EVoiceRecognitionClientWorkStatusChunkNlu 语义理解结果 DATA_CHUNK, 具体见下面表格
EVoiceRecognitionClientWorkStatusError 识别出错 具体见下面EVoiceRecognitionClientWorkStatusError表格
EVoiceRecognitionClientWorkStatusCancel 用户手动取消的回调

CALLBACK_ASR_RESULT 参数

用于EVoiceRecognitionClientWorkStatusFlushData 及 EVoiceRecognitionClientWorkStatusFinish

std::string json_result;
message.get_parameter(bds::CALLBACK_ASR_RESULT,json_result);

json_result 为json字符串,解析后有如下参数: | key | 类型 | 说明 | | ------------------------------ | ------------ | ----------------------- | | results_recognition | string array | 识别结果数组,可能有多个,请取第一个为识别结果 | | origin_result["sn"] | string | 代表一句话识别的logId | | origin_result["sn_start_time"] | string | 该识别结果对应的音频开始时间 | | origin_result["sn_end_time"] | string | 该识别结果对应的音频结束时间 |

EVoiceRecognitionClientWorkStatusChunkNlu 参数

const char* buf;
int len = 0;
message.get_parameter(bds::DATA_CHUNK, buf, len);
 // std::string result(buf, len); // 转为string

具体解析的json解析结果请参见”语义理解协议“ 文档

EVoiceRecognitionClientWorkStatusError 参数

key 类型 说明
CALLBACK_ERROR_CODE int 错误码
CALLBACK_ERROR_DOMAIN int 错误领域
CALLBACK_ERROR_DESC string 错误描述
CALLBACK_ERROR_SERIAL_NUM string 代表一句话识别的logId

如果初步反馈,请将这4个值一起反馈。具体bug反馈请开启EVRDebugLogLevelTrace, 给出完整日志。