Как остановить выполнение метода, не закрывая GUI? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь включить IBM Watson Speech-to-Text API в проект GUI. Я использую пример кода (показан ниже), предоставленный в их документации, чтобы сделать запрос на транскрипцию. Я скопировал этот код в метод и немного изменил его, и я получил результаты без проблем в консоли. Я пытаюсь отправить транскрипцию в виде строки на GUI. Проблема в том, что программа закрывается из-за System.out (0). Что я могу сделать, чтобы остановить выполнение этого метода после получения результатов без System.out (0)?

SpeechToText speechToText = new SpeechToText(authenticator);
speechToText.setServiceUrl("{url}");

try {
  RecognizeOptions recognizeOptions = new RecognizeOptions.Builder()
    .audio(new FileInputStream("audio-file.flac"))
    .contentType("audio/flac")
    .model("en-US_BroadbandModel")
    .keywords(Arrays.asList("colorado", "tornado", "tornadoes"))
    .keywordsThreshold((float) 0.5)
    .maxAlternatives(3)
    .build();

  BaseRecognizeCallback baseRecognizeCallback =
    new BaseRecognizeCallback() {

      @Override
      public void onTranscription
        (SpeechRecognitionResults speechRecognitionResults) {
          System.out.println(speechRecognitionResults);
      }

      @Override
      public void onDisconnected() {
        System.exit(0);
      }

    };

  speechToText.recognizeUsingWebSocket(recognizeOptions,
    baseRecognizeCallback);
} catch (FileNotFoundException e) {
  e.printStackTrace();
}


1 Ответ

0 голосов
/ 31 марта 2020

Что вы хотите сделать, это закрыть веб-сокет после завершения транскрипции. Для этого вам нужно знать, когда транскрипция завершена, но даже тогда API инкапсулирует веб-сокет. Если вы установите inactivityTimeout, то если время ожидания будет превышать период ожидания, соединение будет автоматически закрыто. Значение по умолчанию составляет 30 секунд, если вы не установите его для чего-то другого.

Более подробная информация содержится в документации API - https://cloud.ibm.com/apidocs/speech-to-text/speech-to-text?code=java#sync

...