Форум сайта python.su
0
Доброго времени суток.
Я пишу программу и для её реализации мне необходимо, чтобы она делала запрос на гугл сервер и возвращала мне ответ. Код который мне нужен я нашел на хабре, но он для 2 питона, а мне необходимо сделать это в 3-ем. Вероятно подскажите как изменить его.
Сам код:
def Send(): global ANSWER url = 'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-EN' flac=open('output.flac',"rb").read() header = {'Content-Type' : 'audio/x-flac; rate=16000'} req = urllib2.Request(url, flac, header) data = urllib2.urlopen(req) a = data.read() ANSWER = eval(a) if ANSWER['status'] == 5: print 'Sorry, I do not understand you.' ANSWER = 0 else: ANSWER = ANSWER['hypotheses'][0]['utterance'] print ANSWER return ANSWER
import pyaudio import wave import requests import os
def Send(LANG, key=None): if key is None: key = "AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw" url = 'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang='+LANG flac = open('D:\project\output.flac',"rb").read() header = {'Content-Type' : 'audio/x-flac; rate=16000'} request = Request(url, data=flac, header) try: response = urlopen(request, timeout=self.operation_timeout) except HTTPError as e: raise RequestError("recognition request failed: {}".format(e.reason)) except URLError as e: raise RequestError("recognition connection failed: {}".format(e.reason)) response_text = response.read().decode("utf-8") actual_result = [] for line in response_text.split("\n"): if not line: continue result = json.loads(line)["result"] if len(result) != 0: actual_result = result[0] break return actual_result
Отредактировано Firsak (Фев. 6, 2017 21:22:41)
Офлайн
35
Отступ в строке flac = open('D:\project\output.flac',“rb”).read() неправаильный, проверьте содержимое исходника, в приведенном коде в том месте вроде отступы допустимы и не должны приводить к ошибке.
Офлайн
568
scidamСкорее всего автор намешал пробелов с табами
отступы допустимы и не должны приводить к ошибке.
Офлайн