输出参数
更新时间:2023-01-14
识别结果回调
设置结果的回调函数
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, 给出完整日志。