Watson语音转换为文本-状态:401,错误:未经授权

时间:2019-02-26 10:27:57

标签: speech-recognition chatbot ibm-watson speech-to-text

我正在尝试将语音集成到聊天机器人中的文本服务中,但收到标题中提到的错误。我只是使用了文档中所述的服务。他们将授权方法从用户名+密码更改为api键,对吗? 这是我得到的错误:

2019年2月26日上午11:18:38 okhttp3.internal.platform.Platform日志 信息:-> POST https://stream.watsonplatform.net/speech-to-text/api/v1/recognize http / 1.1(1字节的正文) 2019年2月26日11:18:40 okhttp3.internal.platform.Platform log INFO:<-401未经授权的https://stream.watsonplatform.net/speech-to-text/api/v1/recognize(2434ms,37字节正文) 2019年2月26日11:18:40 com.ibm.watson.developer_cloud.service.WatsonService processServiceCall 严重:POST https://stream.watsonplatform.net/speech-to-text/api/v1/recognize,状态:401,错误:未经授权 线程“ AWT-EventQueue-0”中的异常com.ibm.watson.developer_cloud.service.exception.UnauthorizedException:未经授权:由于凭据无效,访问被拒绝。提示:您是否设置了端点?     在com.ibm.watson.developer_cloud.service.WatsonService.processServiceCall(WatsonService.java:368)     在com.ibm.watson.developer_cloud.service.WatsonService $ WatsonServiceCall.execute(WatsonService.java:429)     在STTService.erkenneAudio(STTService.java:66)     在GUI $ recordAudioButtonListener.actionPerformed(GUI.java:179)

尽管如此,这还是我的代码的样子:

    SpeechToText stt = new SpeechToText();

    stt.setApiKey("3PHwb6P36A0hgiovasdcqgesVyDZEO7awg2L1be");
    stt.setEndPoint("https://stream.watsonplatform.net/speech-to-text/api");

    try {
        RecognizeOptions recognizeOptions = new RecognizeOptions.Builder()
                  .audio(new File("C:/Users/jvermaet/Desktop/hallo.wav"))
                  .contentType(HttpMediaType.AUDIO_WAV)
                  .build();

        SpeechRecognitionResults srr = stt.recognize(recognizeOptions).execute();
        System.out.println(srr.toString());

    } catch (FileNotFoundException e) {
        e.printStackTrace();
        System.out.println("OO");
    }

1 个答案:

答案 0 :(得分:0)

我只需要使用IAmOptions构造器。如果无法导入IAmOptions,则可能是因为您使用的是旧版本的sdk,这是我的主要问题。

IamOptions options = new IamOptions.Builder()
.apiKey("{apikey}")
.build();
Assistant assistant = new Assistant("{version}", options);
assistant.setEndPoint("{url}");