我正在尝试将IBM Watson Speech-to-Text API集成到GUI项目中。我使用他们文档中提供的示例代码(如下所示(来请求转录。我把这段代码复制到一个方法中,并对它进行了一些修改,在控制台中我得到了没有问题的结果。我正在尝试将转录作为字符串发送到GUI。问题是程序由于System.out(0(而关闭。在没有System.out(零(的情况下得到结果后,我该怎么做才能停止执行此方法?
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();
}
您想要做的是在转录完成后关闭web套接字。要做到这一点,您需要知道何时完成转录,但即使如此,API也在封装web套接字。如果设置inactivityTimeout
,则如果静默时间超过超时时间,则连接将自动关闭。如果不将其设置为其他值,则默认值为30秒。
更多详细信息请参见API文档-https://cloud.ibm.com/apidocs/speech-to-text/speech-to-text?code=java#sync