json.dumps ValueError:无法转储json输出的额外数据

时间:2017-01-02 05:27:33

标签: python python-2.7 ibm-watson

我正在尝试使用语音文本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))

错误输出:

  

The error output

然而,当我设置interim_results = False时,我得到了正常工作的输出。

interim_results = False

时的输出
  

The output when the interim_results=False

我认为原因与多个json输出有关,但我不知道如何解决它,因为这是json.dumps :)所以我不能引用json.loads值错误情况来解决这种情况。

1 个答案:

答案 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示例。