使用WebSocket和JAVA的Watson语音到文本请求

使用WebSocket和JAVA的Watson语音到文本请求,java,Java,我正在尝试使用WebSocket和Java请求MP3文件的转录。下面是我的Maven依赖项的一个片段,后面是java代码。我在每个重写方法中都设置了断点,但没有命中任何一个。我做错了什么 Maven依赖项: <dependency> <groupId>com.ibm.watson.developer_cloud</groupId> <artifactId>java-sdk</artifactId>

我正在尝试使用WebSocket和Java请求MP3文件的转录。下面是我的Maven依赖项的一个片段,后面是java代码。我在每个重写方法中都设置了断点,但没有命中任何一个。我做错了什么

Maven依赖项:

    <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);
    }