summaryrefslogtreecommitdiff
path: root/client/stt.py
diff options
context:
space:
mode:
Diffstat (limited to 'client/stt.py')
-rw-r--r--client/stt.py44
1 files changed, 25 insertions, 19 deletions
diff --git a/client/stt.py b/client/stt.py
index 5c2faeb..4298cd2 100644
--- a/client/stt.py
+++ b/client/stt.py
@@ -431,7 +431,7 @@ class WitAiSTT(AbstractSTTEngine):
def __init__(self, access_token):
self._logger = logging.getLogger(__name__)
- self._token = access_token
+ self.token = access_token
@classmethod
def get_config(cls):
@@ -452,16 +452,25 @@ class WitAiSTT(AbstractSTTEngine):
def token(self):
return self._token
+ @token.setter
+ def token(self, value):
+ self._token = value
+ self._headers = {'Authorization': 'Bearer %s' % self.token,
+ 'accept': 'application/json',
+ 'Content-Type': 'audio/wav'}
+
+ @property
+ def headers(self):
+ return self._headers
+
def transcribe(self, fp):
data = fp.read()
- headers = {'Authorization': 'Bearer %s' % self.token,
- 'accept': 'application/json',
- 'Content-Type': 'audio/wav'}
r = requests.post('https://api.wit.ai/speech?v=20150101',
data=data,
- headers=headers)
+ headers=self.headers)
try:
r.raise_for_status()
+ text = r.json()['_text']
except requests.exceptions.HTTPError:
self._logger.critical('Request failed with response: %r',
r.text,
@@ -470,21 +479,18 @@ class WitAiSTT(AbstractSTTEngine):
except requests.exceptions.RequestException:
self._logger.critical('Request failed.', exc_info=True)
return []
+ except ValueError as e:
+ self._logger.critical('Cannot parse response: %s',
+ e.args[0])
+ return []
+ except KeyError:
+ self._logger.critical('Cannot parse response.',
+ exc_info=True)
+ return []
else:
- try:
- text = r.json()['_text']
- except ValueError as e:
- self._logger.debug('Recognition failed with status: %s',
- e.args[0])
- return []
- except KeyError:
- self._logger.critical('Cannot parse response.',
- exc_info=True)
- return []
- else:
- transcribed = [text.upper()]
- self._logger.info('Transcribed: %r', transcribed)
- return transcribed
+ transcribed = [text.upper()]
+ self._logger.info('Transcribed: %r', transcribed)
+ return transcribed
@classmethod
def is_available(cls):