不接收来自第一个音频块的结果

时间:2016-03-27 01:15:46

标签: ibm-cloud speech-to-text ibm-watson

我想要一些级别的实时语音到文本转换。我正在使用interim_results=true的网络套接字界面。但是,我只收到第一个音频块的结果。我发送的第二个,第三个......音频块没有被转录。我知道我的接收器没有被阻止,因为我收到了不活动消息。

json {"error": "Session timed out due to inactivity after 30 seconds."}

如果我需要提供更多上下文信息,请告诉我是否遗漏了某些内容。

仅供参考,这是我的init json。

{
 "action": "start",
 "content-type":"audio/wav",
 "interim_results": true,
 "continuous": true,
 "inactivity_timeout": 10
}

在第一个音频块的结果中,最终的json字段始终为false

另外,我使用的是 golang ,但这并不重要。

编辑:

考虑以下伪日志

  • localhost-server接收前4秒的二进制数据#lets say Binary 1
  • 二进制1发送给Watson
  • {interim_result_1 for first chunk}
  • {interim_result_2 for first chunk}
  • localhost-server接收最后4秒的二进制数据#lets say Binary 2
  • 二进制2被发送到Watson
  • 向Watson发送{"行动":"停止"}
  • {interim_result_3 for first chunk}
  • 第一个块的最终结果
  • 我没有收到第二块的任何转录

Link to code

3 个答案:

答案 0 :(得分:1)

您正在收到超时消息,因为该服务会等待您发送更多音频或发送一条消息,表示音频提交结束。你发这条消息了吗?这很容易:

  • 通过发送操作密钥设置为值停止的JSON文本消息:{"action": "stop"}

  • 发送空二进制消息

https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/speech-to-text/websockets.shtml

如果这不能解决您的问题,请告诉我

答案 1 :(得分:1)

这有点晚了,但我在这里开源了一个针对Watson服务的Go SDK: https://github.com/liviosoares/go-watson-sdk

这里有一些关于语音到文本绑定的文档: https://godoc.org/github.com/liviosoares/go-watson-sdk/watson/speech_to_text

还有一个将数据流式传输到_test.go文件中的API的示例: https://github.com/liviosoares/go-watson-sdk/blob/master/watson/speech_to_text/speech_to_text_test.go

也许这可以帮到你。

答案 2 :(得分:0)

此问题的解决方案是将wav文件的大小标头设置为0.