如何在不关闭GUI的情况下停止执行方法?

问题描述 投票:0回答:1

我正在尝试将IBM Watson语音文本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();
}


java ibm-watson speech-to-text
1个回答
0
投票

您要做的是在转录完成后关闭Web套接字。为此,您需要知道转录何时完成,但是即使如此,API仍在封装Web套接字。如果设置inactivityTimeout,则如果静音时间超过超时时间,连接将自动关闭。如果未将其设置为其他值,则默认值为30秒。

更多详细信息,请参见API文档-https://cloud.ibm.com/apidocs/speech-to-text/speech-to-text?code=java#sync

© www.soinside.com 2019 - 2024. All rights reserved.