17 from abc
import ABCMeta, abstractmethod
18 from requests
import post, put, exceptions
19 from speech_recognition
import Recognizer
20 from queue
import Queue
21 from threading
import Thread
29 __metaclass__ = ABCMeta
32 config_core = Configuration.get()
34 config_stt = config_core.get(
"stt", {})
35 self.
config = config_stt.get(config_stt.get(
"module"), {})
42 lang = config_core.get(
"lang",
"en-US")
43 langs = lang.split(
"-")
45 return langs[0].lower() +
"-" + langs[1].upper()
63 __metaclass__ = ABCMeta
67 self.
token = str(self.credential.get(
"token"))
71 __metaclass__ = ABCMeta
74 super(GoogleJsonSTT, self).
__init__()
79 __metaclass__ = ABCMeta
83 self.
username = str(self.credential.get(
"username"))
84 self.
password = str(self.credential.get(
"password"))
88 __metaclass__ = ABCMeta
92 self.
id = str(self.credential.get(
"client_id"))
93 self.
key = str(self.credential.get(
"client_key"))
102 return self.recognizer.recognize_google(audio, self.
token, self.
lang)
107 super(GoogleCloudSTT, self).
__init__()
113 return self.recognizer.recognize_google_cloud(audio,
123 LOG.warning(
"WITSTT language should be configured at wit.ai settings.")
124 return self.recognizer.recognize_wit(audio, self.
token)
133 return self.recognizer.recognize_ibm(audio, self.
username,
145 return self.api.stt(audio.get_flac_data(convert_rate=16000),
148 return self.api.stt(audio.get_flac_data(), self.
lang, 1)[0]
152 """Mycroft Hosted DeepSpeech""" 154 super(MycroftDeepSpeechSTT, self).
__init__()
158 language = language
or self.
lang 159 if not language.startswith(
"en"):
160 raise ValueError(
"Deepspeech is currently english only")
161 return self.api.stt(audio.get_wav_data(), self.
lang, 1)
166 STT interface for the deepspeech-server: 167 https://github.com/MainRo/deepspeech-server 168 use this if you want to host DeepSpeech yourself 171 super(DeepSpeechServerSTT, self).
__init__()
174 language = language
or self.
lang 175 if not language.startswith(
"en"):
176 raise ValueError(
"Deepspeech is currently english only")
177 response = post(self.config.get(
"uri"), data=audio.get_wav_data())
194 self.queue.task_done()
202 Streaming STT interface for the deepspeech-server: 203 https://github.com/JPEWdev/deep-dregs 204 use this if you want to host DeepSpeech yourself 213 return super().
execute(audio, language)
217 if self.
stream is not None:
221 response = self.stream.response
235 language = language
or self.
lang 236 if not language.startswith(
"en"):
237 raise ValueError(
"Deepspeech is currently english only")
248 language = language
or self.
lang 249 response = post(self.config.get(
"uri"), data=audio.get_wav_data())
254 hypotheses = response.json()[
"hypotheses"]
255 return re.sub(
r'\s*\[noise\]\s*',
'', hypotheses[0][
"utterance"])
266 return self.recognizer.recognize_bing(audio, self.
token,
276 return self.recognizer.recognize_houndify(audio, self.
id, self.
key)
282 self.
default_uri =
"https://services.govivace.com:49149/telephony" 284 if not self.lang.startswith(
"en")
and not self.lang.startswith(
"es"):
285 LOG.error(
"GoVivace STT only supports english and spanish")
286 raise NotImplementedError
289 url = self.config.get(
"uri", self.
default_uri) +
"?key=" + \
290 self.
token +
"&action=find&format=8K_PCM16&validation_string=" 292 data=audio.get_wav_data(convert_rate=8000))
296 return response.json()[
"result"][
"hypotheses"][0][
"transcript"]
301 "mycroft": MycroftSTT,
303 "google_cloud": GoogleCloudSTT,
308 "govivace": GoVivaceSTT,
309 "houndify": HoundifySTT,
310 "deepspeech_server": DeepSpeechServerSTT,
311 "deepspeech_stream_server": DeepSpeechStreamServerSTT,
312 "mycroft_deepspeech": MycroftDeepSpeechSTT
317 config = Configuration.get().
get(
"stt", {})
318 module = config.get(
"module",
"mycroft")
319 clazz = STTFactory.CLASSES.get(module)
def stream_data(self, data)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def stream_data(self, data)
def get_response(self, response)
def get_response(self, response)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def stream_start(self, language=None)
def execute(self, audio, language=None)
def execute(self, audio, language=None)
def __init__(self, url, queue)
def get(phrase, lang=None, context=None)
def init_language(config_core)
def execute(self, audio, language=None)