diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2015-01-02 13:39:45 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2015-01-02 13:39:45 +0100 |
| commit | 04a7d4c6d0c4aef37c95efa63d10d393b0a4e3b5 (patch) | |
| tree | ad8064ab881a8d52772cd69c77a3c8b45ca18827 | |
| parent | 3974aea5320d4c11fbb9214bba9e1b26bbdec3d0 (diff) | |
| download | jasper-client-04a7d4c6d0c4aef37c95efa63d10d393b0a4e3b5.tar.gz jasper-client-04a7d4c6d0c4aef37c95efa63d10d393b0a4e3b5.zip | |
Wit.ai STT code further improved
| -rw-r--r-- | client/stt.py | 44 |
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): |
