我正在尝试在Python中使用Google Speech API。我加载了一个像这样的.flac文件:
url = "https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US"
audio = open('temp_voice.flac','rb').read()
headers = {'Content-Type': 'audio/x-flac; rate=44100', 'User-Agent':'Mozilla/5.0'}
req = urllib2.Request(url, data=audio, headers=headers)
resp = urllib2.urlopen(req)
system("rm temp_voice.wav; rm temp_voice.flac")
print resp.read()
输出:
{“status”:0,“id”:“”,“假设”:[{“话语”:“今天是星期三”,“置信度”:0.75135982}]}
有人可以教我如何提取和保存文本“今天是星期三”作为变量并打印出来吗?
答案 0 :(得分:4)
您可以使用json.loads
将JSON数据转换为dict,就像这样
data = '{"status":0,"id":"","hypotheses":[{"utterance":"Today is Wednesday","confidence":0.75135982}]}'
import json
data = json.loads(data)
print data["hypotheses"][0]["utterance"]
答案 1 :(得分:0)
如果响应以字符串形式出现,那么您可以将其评估为字典,(为安全起见,最好使用literal_eval
库中的ast
代替):
>>> d=eval('{"status":0,"id":"","hypotheses":[{"utterance":"Today is Wednesday","confidence":0.75135982}]}')
>>> d
{'status': 0, 'hypotheses': [{'confidence': 0.75135982, 'utterance': 'Today is Wednesday'}], 'id': ''}
>>> h=d.get('hypotheses')
>>> h
[{'confidence': 0.75135982, 'utterance': 'Today is Wednesday'}]
>>> for i in h:
... print i.get('utterance')
...
Today is Wednesday
当然,如果它已经是字典,那么您不需要进行评估,请尝试使用print type(response)
,其中response
是您获得的结果。
答案 2 :(得分:0)
检索输出的问题看起来有点复杂。首先,resp是实例的类型,但是如果手动复制输出,则是dictionary-> list->字典。如果将resp.read()分配给新变量,您将获得长度为0的类型字符串。它会发生,因为一旦使用(打印),所有输出都会消失。因此,必须在获得谷歌api的响应后立即进行json解码。如下:
resp = urllib2.urlopen(req)
text = json.loads(resp.read())[“hypotheses”] [0] [“utterance”]
在我的案例中就像魅力一样;)