Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python解码Google语音API响应_Python_Json_Google Api - Fatal编程技术网

用python解码Google语音API响应

用python解码Google语音API响应,python,json,google-api,Python,Json,Google Api,我试图在Python中使用Google语音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-Age

我试图在Python中使用Google语音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()
输出:

{“状态”:0,“id”:“,”假设“:[{“话语”:“今天是星期三”,“信心”:0.75135982}]}


有人能教我如何提取和保存文本“今天是星期三”作为变量并将其打印出来吗?

您可以使用
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"]

您可以使用
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"]

如果响应是以字符串形式出现的,则可以将其求值到字典中(为了安全起见,最好使用
ast
库中的
literal\u eval
):


当然,如果它已经是一个字典,那么您不需要进行求值,可以尝试使用
打印类型(响应)
,其中
响应
是您得到的结果。

如果响应是以字符串形式出现的,那么您可以将其求值到字典中,(为了安全起见,最好使用
ast
库中的
literal\u eval
):


当然,如果它已经是一个字典,那么您不需要进行计算,请尝试使用
打印类型(响应)
其中
response
是您得到的结果。

检索输出的问题看起来有点复杂。首先resp是实例类型,但是如果手动复制输出,则为dictionary->list->dictionary。如果分配resp.read()对于新变量,您将获得长度为0的类型字符串。这种情况会发生,因为一旦使用(打印),所有输出都会消失在空气中。因此,必须在google api的响应被授予后立即进行json解码。如下所示:

resp=urllib2.urlopen(请求)

text=json.loads(resp.read())[“假设”][0][“话语”]


在我的例子中,它很有魅力;)

检索输出的问题看起来有点复杂。首先resp是实例的类型,但是如果手动复制输出,则resp是dictionary->list->dictionary。如果将resp.read()赋值给新变量,将得到长度为0的字符串类型。这种情况会发生,因为一旦使用(打印),所有输出都会消失在空气中。因此,一旦google api的响应被批准,json解码就必须完成。详情如下:

resp=urllib2.urlopen(请求)

text=json.loads(resp.read())[“假设”][0][“话语”]


在我的情况下很有魅力;)

使用怎么样?使用怎么样?这是一种安全的方法
eval
不应用于此操作。我尝试了text=eval(str(response.read())打印文本并获取了文件“”,第0行^SyntaxError:在解析时出现意外的EOF,例如缓冲区已满或连接在完整字符串结束前丢失,或者您得到了一些格式错误的字符串。这是一种安全的方法
eval
不应用于此操作。我尝试了text=eval(str(response.read())打印文本并获得了文件“”,第0行^SyntaxError:在解析时出现意外的EOF,例如缓冲区已满或连接在完整字符串结束前丢失,或者您得到了一些格式错误的字符串。非常感谢您的响应。不幸的是,这似乎对我不起作用。我得到以下信息:raisevalueerror(“没有可以解码的JSON对象”)ValueError:没有可以解码的JSON对象。我刚刚将代码添加到我的原始帖子中。谢谢你的帮助help@Stralo但是这里没有使用
json
的部分,我不知道怎么做,这就是我请求帮助的原因。我在代码末尾添加了您的建议,得到了我前面提到的ValueError。我做了data=resp.read()text=json.load(data)打印文本[“假设”][0][“话语”]非常感谢您的回复。不幸的是,这似乎对我不起作用。我得到以下信息:raisevalueerror(“没有可以解码的JSON对象”)ValueError:没有可以解码的JSON对象。我刚刚将代码添加到我的原始帖子中。谢谢你的帮助help@Stralo但是这里没有使用
json
的部分,我不知道怎么做,这就是我请求帮助的原因。我在代码末尾添加了您的建议,得到了我前面提到的ValueError。我没有数据=resp.read()text=json.load(data)打印文本[“假设”][0][“话语”]