簡體   English   中英

IBM Watson演講文本僅使用Java SDK返回第一個單詞

[英]IBM Watson Speech to Text Only Returning First Word With Java SDK

我正在使用IBM Watson語音來編寫Java SDK文本,當我上傳.wav文件時,響應JSON只包含第一個轉錄的單詞。 當我將相同的文件上傳到網絡演示時,我得到完整的回復。

使用SDK非常簡單的實現:

SpeechToText service = new SpeechToText();
service.setUsernameAndPassword("<username>", "<password>");

File audio = new File("src/test/resources/sample1.wav");

SpeechResults transcript = service.recognize(audio, HttpMediaType.AUDIO_WAV);
System.out.println(transcript);

您正在使用的recognize()簽名將在第一次暫停后返回。 要查看所有結果,請執行以下操作:

RecognizeOptions options = new RecognizeOptions();
options = options.continuous(true)
          .contentType(HttpMediaType.AUDIO_WAV)
          .interimResults(false)
          .inactivityTimeout(10)
          .maxAlternatives(1)
          .wordConfidence(false)
          .timestamps(true)
          .model("en-US_BroadbandModel");
SpeechResults transcript = service.recognize(audio, options);

這適用於我使用以下maven依賴項:

<dependency>
  <groupId>com.ibm.watson.developer_cloud</groupId>
  <artifactId>java-sdk</artifactId>
  <version>2.8.0</version>
</dependency>

我正在嘗試完全相同的事情,使用Chris K.描述的相同參數(除了“interim results = true”)

    FileInputStream audio = new FileInputStream("/home/leoks/BM/ws/mp32wav/out.wav");

    RecognizeOptions options = new RecognizeOptions();
    options = options.continuous(true)
              .contentType(HttpMediaType.AUDIO_WAV)
              .interimResults(true)
              .inactivityTimeout(10)
              .maxAlternatives(1)
              .wordConfidence(false)
              .timestamps(true)
              .model("en-US_BroadbandModel");

    api.stt.recognizeUsingWebSockets(audio, options, new BaseRecognizeDelegate() {
      @Override
      public void onMessage(SpeechResults speechResults) {
        System.out.println(speechResults);
        try{
            if (speechResults != null && speechResults.isFinal()){
              lock.countDown();
            }
        }catch(java.lang.IndexOutOfBoundsException ignored){
        }
      }
    });

    lock.await(5, TimeUnit.SECONDS);

但是,它仍然會引發異常

java.lang.NullPointerException
    at java.io.StringReader.<init>(StringReader.java:50)
    at com.google.gson.JsonParser.parse(JsonParser.java:45)
    at com.ibm.watson.developer_cloud.speech_to_text.v1.websocket.WebSocketSpeechToTextClient$WebSocketListener.onTextMessage(WebSocketSpeechToTextClient.java:66)
    at com.neovisionaries.ws.client.ListenerManager.callOnTextMessage(ListenerManager.java:352)
    at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:233)
    at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:211)
    at com.neovisionaries.ws.client.ReadingThread.handleTextFrame(ReadingThread.java:910)
    at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:693)
    at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:102)
    at com.neovisionaries.ws.client.ReadingThread.run(ReadingThread.java:61)
java.lang.NullPointerException
    at java.io.StringReader.<init>(StringReader.java:50)
    at com.google.gson.JsonParser.parse(JsonParser.java:45)
    at com.ibm.watson.developer_cloud.speech_to_text.v1.websocket.WebSocketSpeechToTextClient$WebSocketListener.onTextMessage(WebSocketSpeechToTextClient.java:66)
    at com.neovisionaries.ws.client.ListenerManager.callOnTextMessage(ListenerManager.java:352)
    at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:233)
    at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:211)
    at com.neovisionaries.ws.client.ReadingThread.handleTextFrame(ReadingThread.java:910)
    at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:693)
    at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:102)
    at com.neovisionaries.ws.client.ReadingThread.run(ReadingThread.java:61)
java.lang.NullPointerException
    at java.io.StringReader.<init>(StringReader.java:50)
    at com.google.gson.JsonParser.parse(JsonParser.java:45)
    at com.ibm.watson.developer_cloud.speech_to_text.v1.websocket.WebSocketSpeechToTextClient$WebSocketListener.onTextMessage(WebSocketSpeechToTextClient.java:66)
    at com.neovisionaries.ws.client.ListenerManager.callOnTextMessage(ListenerManager.java:352)
    at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:233)
    at com.neovisionaries.ws.client.ReadingThread.callOnTextMessage(ReadingThread.java:211)
    at com.neovisionaries.ws.client.ReadingThread.handleTextFrame(ReadingThread.java:910)
    at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:693)
    at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:102)
    at com.neovisionaries.ws.client.ReadingThread.run(ReadingThread.java:61)

這似乎與這個問題有關

https://github.com/watson-developer-cloud/java-sdk/issues/205

設置為里程碑2.9.0(當前為2.8.0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM