将Watson语音中的JSON输出解码为文本

时间:2017-01-31 12:16:58

标签: java json ibm-watson watson

我目前正在使用Watsons强大的语音文字API,它会在麦克风输入上返回JSON(?)。

这是返回JSON文件的代码的一部分:

service.recognizeUsingWebSocket(audio, options, new BaseRecognizeCallback() {
      @Override
      public void onTranscription(SpeechResults speechResults) { 
          System.out.println(speechResults);
      }
    }); 

我目前正在尝试做的是获取"成绩单" speechResults json的一部分(参见输出),但它似乎不能使用json解析器处理典型的json描述,因为speechResults不是String。

你们有什么想法如何实现这一点?

这是输出:

{
  "result_index": 0,
  "results": [
    {
      "final": true,
      "alternatives": [
        {
          "confidence": 0.908,
          "timestamps": [
            [
              "are",
              0.03,
              0.2
            ],
            [
              "you",
              0.2,
              0.36
            ]
          ],
          "transcript": "are you ",
          "word_confidence": [
            [
              "are",
              0.838
            ],
            [
              "you",
              0.982
            ]
          ]
        }
      ]
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

您必须分解整个对象才能到达条目数组。

假设SpeechResults已经是一个已解析的JSONObject。

                events: function (start, end, timezone, callback) {
                    var obj = {};
                    var Entries = [];
                    var i = 0;
                    $.ajax({
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        url: "/Service.asmx/getEntries",
                        dataType: "json", // datatype returned by the webservice

                        success: function (data) {
                            var events = $.map(data.d, function (item, value) {
                                var event = new Object();
                                var Entry = [];
                                obj = item.split(';');
                                Entry.start = obj[0];
                                Entry.end = obj[1];
                                Entry.project = obj[3];
                                Entry.subproject = obj[4];
                                Entry.task = obj[5];
                                Entry.id = i++;
                                Entry.title = i;
                                Entry.remark = i;

                                console.log(Entry);
                                Entries.push(Entry);

                            });
                            callback(Entries);

                        }, //end of Success function

                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            alert("StatusEvents: " + textStatus);
                            alert("Error: " + errorThrown);
                        }

                    }); //end of Ajax Function


                },

示例I:

SpeechResults.getJSONObject("results").getJSONArray("transcript");

示例II:

//By using javasript json parser
var json = SpeechResults.results; 
System.out.println(json.transcript)