summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2015-01-02 13:39:45 +0100
committerschneefux <schneefux+commit@schneefux.xyz>2015-01-02 13:39:45 +0100
commit04a7d4c6d0c4aef37c95efa63d10d393b0a4e3b5 (patch)
treead8064ab881a8d52772cd69c77a3c8b45ca18827
parent3974aea5320d4c11fbb9214bba9e1b26bbdec3d0 (diff)
downloadjasper-client-04a7d4c6d0c4aef37c95efa63d10d393b0a4e3b5.tar.gz
jasper-client-04a7d4c6d0c4aef37c95efa63d10d393b0a4e3b5.zip
Wit.ai STT code further improved
-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):