使用WebSocket和JAVA的Watson语音到文本请求
我正在尝试使用WebSocket和Java请求MP3文件的转录。下面是我的Maven依赖项的一个片段,后面是java代码。我在每个重写方法中都设置了断点,但没有命中任何一个。我做错了什么 Maven依赖项:使用WebSocket和JAVA的Watson语音到文本请求,java,Java,我正在尝试使用WebSocket和Java请求MP3文件的转录。下面是我的Maven依赖项的一个片段,后面是java代码。我在每个重写方法中都设置了断点,但没有命中任何一个。我做错了什么 Maven依赖项: <dependency> <groupId>com.ibm.watson.developer_cloud</groupId> <artifactId>java-sdk</artifactId>
<dependency>
<groupId>com.ibm.watson.developer_cloud</groupId>
<artifactId>java-sdk</artifactId>
<version>6.1.0</version>
</dependency>
我想我已经发现了问题所在,这是你的终点
SpeechToText.recognizeUsingWebSocket()
方法包含以下有用的(?)行代码:
HttpUrl.Builder urlBuilder=HttpUrl.parse(getEndPoint()+“/v1/recognize”).newBuilder()代码>
因此,尝试将端点更改为https://stream.watsonplatform.net/speech-to-text/api
或更好,但不要设置它,只需使用构造函数构造SpeechToText
:
SpeechToText(字符串用户名、字符串密码)
这将消除调用setUsernameAndPassword()
并使用默认端点的需要:
private静态最终字符串URL=”https://stream.watsonplatform.net/speech-to-text/api";代码>您确定websocket没有问题吗?您没有覆盖recognizeoptions
界面中的每个方法,即onError(异常e)
如果websocket失败,将记录哪些方法…/我添加了onError方法,结果是:预期HTTP 101响应,但“401未授权”。我不知道为什么,因为我可以发出一个“curl”命令并成功响应。curl-X POST-u:--标题“内容类型:音频/mp3”--数据二进制@KATL-App-Final-All-Aug-01-2017-1630.mp3-edited.mp3“我发现了错误。我取出了用户名和密码中的括号(“{}”)。它现在起作用了。谢谢你的帮助。
SpeechToText speechToText = new SpeechToText();
speechToText.setEndPoint("https://stream.watsonplatform.net/speech-to-text/api/v1/recognize");
speechToText.setUsernameAndPassword("{myUsername}", "{myPassword}");
try {
RecognizeOptions recognizeOptions = new RecognizeOptions.Builder()
.audio(new FileInputStream("KATL-App-Final-All-Aug-01-2017-1630.mp3-edited.mp3"))
.contentType("audio/mp3")
.model("en-US_NarrowbandModel")
.interimResults(true)
.build();
BaseRecognizeCallback baseRecognizeCallback
= new BaseRecognizeCallback() {
@Override
public void onListening() {
System.out.println("Listening");
}
@Override
public void onConnected() {
System.out.println("Connected");
}
@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();
}
for (;;) {
Thread.sleep(1000);
}