我使用的服务是:
调用的接口是:
参数设置情况:
开发平台和机型:
SDK版本号:2.1.20
代码或日志截图(上传截图能帮助您更快解决问题):
复现步骤、现象及其他描述:
语音识别结果跟自定义语义设置结果不一致
SDK版本号:2.1.20
参数设置
intent.putExtra(Constant.EXTRA_SOUND_START, R.raw.bdspeech_recognition_start);
intent.putExtra(Constant.EXTRA_SOUND_END, R.raw.bdspeech_speech_end);
intent.putExtra(Constant.EXTRA_SOUND_SUCCESS, R.raw.bdspeech_recognition_success);
intent.putExtra(Constant.EXTRA_SOUND_ERROR, R.raw.bdspeech_recognition_error);
intent.putExtra(Constant.EXTRA_SOUND_CANCEL, R.raw.bdspeech_recognition_cancel);
//自定义语义设置
intent.putExtra(Constant.EXTRA_GRAMMAR, "assets:///baidu_speech_grammar.bsg");
intent.putExtra(Constant.EXTRA_NLU, "enable");
intent.putExtra(Constant.EXTRA_OFFLINE_SLOT_DATA, buildTestSlotData());
intent.putExtra(Constant.EXTRA_SAMPLE, Constant.SAMPLE_16K);
intent.putExtra(Constant.EXTRA_LANGUAGE, "cmn-Hans-CN");
在线语音输入“播放下一首” 解析结果如下:
{
"content": {
"item": [
"播放下一首"
],
"json_res": "{\"parsed_text\":\"播放 下 一 首\",\"raw_text\":\"播放下一首\",\"results\":[{\"domain\":\"player\",\"intent\":\"set\",\"object\":{\"_action_type\":\"next\",\"action_type\":\"next\"},\"score\":0.950}]}\n"
},
"result": {
"corpus_no": 6339296208269691483,
"err_no": 0,
"idx": -14,
"res_type": 3,
"sn": "5ba610ac-543c-4f23-8315-79d9d37f1eed"
}
}
在自定义语义设置(http://yuyin.baidu.com/asr#m5) ,打开自定义语义文件, 输入“播放下一首” ,解析结果如下。
{
"raw_text": "播放下一首",
"parsed_text": "播放下一首",
"results": [
{
"domain": "player",
"intent": "set",
"object": {
"play_prev": "下一首"
}
},
{
"domain": "music",
"intent": "play",
"object": {
"musicname": "下一首"
}
}
]
}
问题:1)在线解析结果里面的json_res 数据为什么和自定义语义设置的解析结果不同?
2)如何让解析结果相同?因为这里涉及到将json转化为类,如果结果不同转化成的类也不同。
RecognitionListener的onResults方法中,获取到的"results_nlu"值为null
public void onResults(Bundle results) {
String results_nlu_json = results.getString("results_nlu");
results_nlu_json 为 null
}
需要有什么其他的设置么?
RecognitionListener的onResults方法中,获取到的"results_nlu"值为null
public void onResults(Bundle results) {
String results_nlu_json = results.getString("results_nlu");
results_nlu_json 为 null
}
需要有什么其他的设置么?
您好,自从2.1.20版本开始,语义建议从results_nlu字段获取,如:
String results_nlu_json = results.getString("results_nlu");