AIUI交互结果事件通过EVENT_RESULT抛出,结果类型包括:

  • 听写结果(iat)
  • 语义结果(nlp)
  • 后处理服务结果(tpp)
  • 云端tts结果(tts)
  • 翻译结果(itrans)

# AIUI结果格式

EVENT_RESULT的info字段中json包容如下格式的内容:

{
    "data": [{
        "params": {
            "sub": "iat",
        },
        "content": [{
            "dte": "utf8",
            "dtf": "json",
            "cnt_id": "0"
        }]
    }]
}

通过sub字段的值确定对应的结果类型,如果EVENT_RESULT包含的是语义结果, 那info数据描述的中sub的值就对应为nlp

EVENT_RESULT的data中包含的结果数据,需要根据info描述信息获取,不同SDK获取的方式有差异:

AIUIEvent定义中,data的类型为Bundle,获取结果数据的示例代码如下:

Android 示例代码:

private void processResult(AIUIEvent event) {
    JSONObject data = new JSONObject(event.info).getJSONArray("data").getJSONObject(0);
    String sub = data.getJSONObject("params").optString("sub");
    JSONObject content = data.getJSONArray("content").getJSONObject(0);
    
    if (content.has("cnt_id")) {
        String cnt_id = content.getString("cnt_id");
        JSONObject result = new JSONObject(new String(event.data.getByteArray(cnt_id), "utf-8"));
    }
}

iOS/Windows/Linux示例代码:

using namespace VA;
Json::Value bizParamJson;
Json::Reader reader;

if(!reader.parse(event.getInfo(), bizParamJson,false)){
    NSLog(@"parse error!,getinfo=%s",event.getInfo());
}

Json::Value data = (bizParamJson["data"])[0];
Json::Value params = data["params"];
Json::Value content = (data["content"])[0];
std::string sub =  params["sub"].asString();

if(sub == "nlp"){
    Json::Value empty;
    Json::Value contentId = content.get("cnt_id", empty);
    
    if(contentId.empty()){
            NSLog(@"Content Id is empty");
            break;
    }
    std::string cnt_id = contentId.asString(); 
    Buffer *buffer = event.getData()->getBinary(cnt_id.c_str());
    
    if(NULL != buffer){ 
        const char * resultStr = (char *) buffer->data();
        if(resultStr == NULL){
            return;
        } 
        NSLog(@"resultStr=%s",resultStr);
    }
}

# 听写结果格式

# 结果示例

{
    "text": {
        "bg": 0,
        "sn": 1,
        "ws": [{
            "bg": 0,
            "cw": [{
                "w": "叫",
                "sc": 0
            }]
        },
        {
            "bg": 0,
            "cw": [{
                "w": "什么",
                "sc": 0
            }]
        },
        {
            "bg": 0,
            "cw": [{
                "w": "名字",
                "sc": 0
            }]
        }],
        "ls": false,
        "ed": 0
    }
}

# 听写结果说明

JSON字段 英文全称 类型 说明
sn sentence number 第几句
ls last sentence boolean 是否最后一句
bg begin number 开始
ed end number 结束
ws words array
cw chinese word array 中文分词
w word string 单字
sc score number 分数

# 语义结果格式

格式参考AIUI开放平台语义协议

# 离线命令词结果

解析参考离线命令词结果解析

# 云端tts结果格式

具体解析请参考云端tts音频结果解析

# 翻译结果

具体解析请参考翻译模式结果解析

# 后处理服务结果

后处理结果由开发者配置的后处理服务构造,开发者只需解析EVENT_RESULT事件返回的tpp类型的结果即可。