我想要一些级别的实时语音到文本转换。我正在使用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 ,但这并不重要。
编辑:
考虑以下伪日志
#lets say Binary 1
#lets say Binary 2
答案 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.