2017-01-31 1 views
0

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

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

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

То, что я сейчас пытаюсь сделать, это получить «расшифровку» часть speechResults JSON (см выход), но он, похоже, не работает с типичным 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 
      ] 
      ] 
     } 
     ] 
    } 
    ] 
} 

ответ

0

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

Предполагая, что SpeechResults уже разобран JSONObject.

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

Пример I:

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

Пример II:

 String jsonStr = SpeechResults; 
     JSONObject jsonObj = new JSONObject(jsonStr); 
     String transcript = jsonObj.getString("transcript"); 
     System.out.println(transcript); 
Смежные вопросы