语音识别结果跟自定义语义设置结果不一致
勤奋的车和家 发布于2016-10 浏览:1686 回复:4
0
收藏

我使用的服务是:

调用的接口是:

参数设置情况:

开发平台和机型:

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转化为类,如果结果不同转化成的类也不同。



收藏
点赞
0
个赞
共4条回复 最后由用户已被禁言回复于2022-04
#5c5812回复于2016-10

您好,要开启语义需要进行语义勾选和程序设置,步骤如下:
语义勾选(百度语音开放平台后台):
1. 打开http://yuyin.baidu.com/
2. 点击网站右上角“应用管理”
3. 点击需要设置的应用中语音识别对应的查看链接
4. 点击自定义设置
5. 点击语义解析设置对应的进行设置按钮
6. 勾选需要用到的垂类
7. 点击保存设置并等待生效
注意:一般20分钟左右会生效
程序设置
     intent.putExtra("nlu", "enable")
获取语义
   
public void onResults(Bundle results) {
   String results_nlu_json = results.getString("results_nlu");
   // 处理语义
}


0
#4勤奋的车和家回复于2016-10

RecognitionListener的onResults方法中,获取到的"results_nlu"值为null

public void onResults(Bundle results) {

   String results_nlu_json = results.getString("results_nlu");

results_nlu_json 为 null

}


需要有什么其他的设置么?


0
#3he4330937回复于2016-10

RecognitionListener的onResults方法中,获取到的"results_nlu"值为null

public void onResults(Bundle results) {

   String results_nlu_json = results.getString("results_nlu");

results_nlu_json 为 null

}


需要有什么其他的设置么?


0
#2c5812回复于2016-10

您好,自从2.1.20版本开始,语义建议从results_nlu字段获取,如:

String results_nlu_json = results.getString("results_nlu");


0
TOP
切换版块