From e32728b8f48e64f7952e5dc2c3c692f4ce5aed3a Mon Sep 17 00:00:00 2001 From: Dan Buchta Date: Wed, 11 May 2016 20:41:58 -0500 Subject: [PATCH 1/3] Added supporting multiple GOOGLE_SPEECH keys --- client/stt.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) mode change 100644 => 100755 client/stt.py diff --git a/client/stt.py b/client/stt.py old mode 100644 new mode 100755 index a48696099..132be08ba --- a/client/stt.py +++ b/client/stt.py @@ -313,6 +313,14 @@ def __init__(self, api_key=None, language='en-us'): self._api_key = None self._http = requests.Session() self.language = language + + if isinstance(api_key, list): + self.key_index = 0 + self.request_count = 0 + self.api_quota = 50 + else: + self.key_index = False + self.api_key = api_key @property @@ -339,15 +347,20 @@ def api_key(self, value): def _regenerate_request_url(self): if self.api_key and self.language: + if self.key_index is not False: + key = self.api_key[self.key_index] + else: + key = self.api_key query = urllib.urlencode({'output': 'json', 'client': 'chromium', - 'key': self.api_key, + 'key': key, 'lang': self.language, 'maxresults': 6, 'pfilter': 2}) self._request_url = urlparse.urlunparse( ('https', 'www.google.com', '/speech-api/v2/recognize', '', query, '')) + print(str(self._request_url)) else: self._request_url = None @@ -382,7 +395,11 @@ def transcribe(self, fp): self._logger.critical('Language info missing, transcription ' + 'request aborted.') return [] - + elif self.key_index is not False and self.request_count >= self.api_quota: + print('Switching api keys to stay under quota') + self.key_index = ((self.key_index + 1) % len(self.api_key)) + self.request_count = 0 + self._regenerate_request_url() wav = wave.open(fp, 'rb') frame_rate = wav.getframerate() wav.close() @@ -390,6 +407,7 @@ def transcribe(self, fp): headers = {'content-type': 'audio/l16; rate=%s' % frame_rate} r = self._http.post(self.request_url, data=data, headers=headers) + self.request_count += 1 try: r.raise_for_status() except requests.exceptions.HTTPError: From 1cf08d7302788bdfcb0571a933c40bb6abd5dec4 Mon Sep 17 00:00:00 2001 From: Dan Buchta Date: Mon, 16 May 2016 19:13:40 -0500 Subject: [PATCH 2/3] Reduced line length --- client/modules/Alarm.py | 0 client/stt.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 client/modules/Alarm.py diff --git a/client/modules/Alarm.py b/client/modules/Alarm.py new file mode 100644 index 000000000..e69de29bb diff --git a/client/stt.py b/client/stt.py index 132be08ba..90523f827 100755 --- a/client/stt.py +++ b/client/stt.py @@ -360,7 +360,6 @@ def _regenerate_request_url(self): self._request_url = urlparse.urlunparse( ('https', 'www.google.com', '/speech-api/v2/recognize', '', query, '')) - print(str(self._request_url)) else: self._request_url = None @@ -395,7 +394,8 @@ def transcribe(self, fp): self._logger.critical('Language info missing, transcription ' + 'request aborted.') return [] - elif self.key_index is not False and self.request_count >= self.api_quota: + elif self.key_index is not False \ + and self.request_count >= self.api_quota: print('Switching api keys to stay under quota') self.key_index = ((self.key_index + 1) % len(self.api_key)) self.request_count = 0 From 480a5205b351121f0612890f0ed4aaaf94105acd Mon Sep 17 00:00:00 2001 From: Dan Buchta Date: Mon, 16 May 2016 19:36:49 -0500 Subject: [PATCH 3/3] Removed accidental file --- client/modules/Alarm.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 client/modules/Alarm.py diff --git a/client/modules/Alarm.py b/client/modules/Alarm.py deleted file mode 100644 index e69de29bb..000000000