Декодировать вывод JSON в Watson Speech to Text

В настоящее время я использую мощный API преобразования речи в текст Watsons, который возвращает JSON(?) при вводе с микрофона.

Это часть кода, который возвращает файл JSON:

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

Что я сейчас пытаюсь сделать, так это получить часть «стенограммы» json-файла speechResults (см. вывод), но, похоже, он не работает с типичным описанием json с использованием синтаксического анализатора json, поскольку речевые результаты не являются Нить.

У вас есть идеи, как это реализовать?

Это результат:

{
  "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
            ]
          ]
        }
      ]
    }
  ]
}

person JSt    schedule 31.01.2017    source источник


Ответы (1)


Вы должны разложить весь объект, чтобы добраться до массива записей.

Предполагая, что SpeechResults уже является проанализированным JSONObject.

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

Пример I:

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

Пример 2:

        String jsonStr = SpeechResults;
        JSONObject jsonObj = new JSONObject(jsonStr);
        String transcript = jsonObj.getString("transcript");
        System.out.println(transcript);
person Sayuri Mizuguchi    schedule 31.01.2017