我正在尝试使用语音文本watson api,但是当我设置interim_results = True
时,我得到了值错误。请帮帮我:)。
with open(join(dirname(__file__), './audio-file.wav'), 'rb') as audio_file:
print(json.dumps(speech_to_text.recognize(
audio_file, content_type='audio/wav', timestamps=True, interim_results =True, word_confidence=True), indent=2))
错误输出:
然而,当我设置interim_results = False
时,我得到了正常工作的输出。
interim_results = False
:
我认为原因与多个json输出有关,但我不知道如何解决它,因为这是json.dumps :)所以我不能引用json.loads值错误情况来解决这种情况。
答案 0 :(得分:1)
使用interim_results = true,服务会发回多个JSON blob,期望您在到达时单独解析它们。如果您想要显示近实时转录,这非常有用。
如果您只是进行一次性转录并且不需要近实时显示文本,我建议将interim_results设置为false。
你可以将结果拆分为}\s*{
(其中一个JSON blob结束,下一个开始),然后将每个块解析为JSON(恢复}
如果有必要,可以{
,但是由于完整的最终结果已经存在,所以它不会给你带来任何好处。
或者,如果您确实需要/想要近实时更新,WebSocket接口会使这更容易,因为每个JSON块都会自带消息 - 请查看https://github.com/watson-developer-cloud/speech-to-text-websockets-python示例。