Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Watson STT Java-Websockets Java和HTTP POST之间的不同结果_Java_Api_Ibm Cloud_Speech To Text_Ibm Watson - Fatal编程技术网

Watson STT Java-Websockets Java和HTTP POST之间的不同结果

Watson STT Java-Websockets Java和HTTP POST之间的不同结果,java,api,ibm-cloud,speech-to-text,ibm-watson,Java,Api,Ibm Cloud,Speech To Text,Ibm Watson,我正在尝试构建一个应用程序,它采用流式音频输入(例如:麦克风中的线路),并使用IBMBlueMix(Watson)将语音转换为文本 我简要地修改了找到的示例Java代码。这个例子发送了一个WAV,但是我发送了一个FLAC。。。这是不相关的 结果很糟糕,非常糟糕。这是我在使用Java Websockets代码时得到的结果: { "result_index": 0, "results": [ { "final": true, "alternatives": [

我正在尝试构建一个应用程序,它采用流式音频输入(例如:麦克风中的线路),并使用IBMBlueMix(Watson)将语音转换为文本

我简要地修改了找到的示例Java代码。这个例子发送了一个WAV,但是我发送了一个FLAC。。。这是不相关的

结果很糟糕,非常糟糕。这是我在使用Java Websockets代码时得到的结果:

{
  "result_index": 0,
  "results": [
    {
      "final": true,
      "alternatives": [
        {
          "transcript": "it was six weeks ago today the terror ",
          "confidence": 0.92
        }
      ]
    }
  ]
}
现在,将上面的结果与下面的结果进行比较。以下是使用cURL(HTTP POST)发送相同内容时的结果:

这几乎是一个完美的结果


为什么在使用WebSocket时会有差异?

这个问题在
3.0.0-RC1
版本中得到了解决

您可以从以下位置获取新的jar:

  • 马文

    <dependency>
        <groupId>com.ibm.watson.developer_cloud</groupId>
        <artifactId>java-sdk</artifactId>
        <version>3.0.0-RC1</version>
    </dependency>
    
  • 罐子

    下载(~1.4MB)


  • 下面是一个如何使用WebSocket识别flac音频文件的示例

    SpeechToText service = new SpeechToText();
    service.setUsernameAndPassword("<username>", "<password>");
    
    FileInputStream audio = new FileInputStream("path-to-audio-file.flac");
    
    RecognizeOptions options = new RecognizeOptions.Builder()
      .continuous(true)
      .interimResults(true)
      .contentType(HttpMediaType.AUDIO_FLAC)
      .build();
    
    service.recognizeUsingWebSocket(audio, options, new BaseRecognizeCallback() {
      @Override
      public void onTranscription(SpeechResults speechResults) {
        System.out.println(speechResults);
      }
    });
    
    SpeechToText服务=新建SpeechToText();
    service.setUserName和密码(“,”);
    FileInputStream audio=newfileinputstream(“指向audio file.flac的路径”);
    RecognizeOptions=newrecognizeoptions.Builder()
    .连续(真)
    .interimResults(真)
    .contentType(HttpMediaType.AUDIO\u FLAC)
    .build();
    service.recognizeUsingWebSocket(音频、选项、新BaseRecognitizeCallback(){
    @凌驾
    公开无效的onTranscription(SpeechResults SpeechResults){
    System.out.println(speechResults);
    }
    });
    
    }

    要测试的FLAC文件:



    注意:
    3.0.0-RC1
    是一个候选发行版。下周我们将发布一个生产版本(
    3.0.1
    )。

    我在存储库中创建了一个问题,并将研究这个问题。您可以将您正在使用的音频文件添加到该问题吗?@Germanatanasio这是文件。很酷,我在github中添加了这个问题,并将致力于解决这个问题。我会查一查,然后告诉你。
    'com.ibm.watson.developer_cloud:java-sdk:3.0.0-RC1'
    
    SpeechToText service = new SpeechToText();
    service.setUsernameAndPassword("<username>", "<password>");
    
    FileInputStream audio = new FileInputStream("path-to-audio-file.flac");
    
    RecognizeOptions options = new RecognizeOptions.Builder()
      .continuous(true)
      .interimResults(true)
      .contentType(HttpMediaType.AUDIO_FLAC)
      .build();
    
    service.recognizeUsingWebSocket(audio, options, new BaseRecognizeCallback() {
      @Override
      public void onTranscription(SpeechResults speechResults) {
        System.out.println(speechResults);
      }
    });