|
@@ -0,0 +1,39 @@
|
|
|
+import speech_recognition as sr
|
|
|
+from core.OrderListener import OrderListener
|
|
|
+
|
|
|
+
|
|
|
+class GoogleSpeechRecognition(OrderListener):
|
|
|
+
|
|
|
+ def __init__(self, main_controller=None):
|
|
|
+ OrderListener.__init__(self, main_controller)
|
|
|
+ self.listen()
|
|
|
+
|
|
|
+ def listen(self):
|
|
|
+ """
|
|
|
+ Start recording the microphone
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ # obtain audio from the microphone
|
|
|
+ r = sr.Recognizer()
|
|
|
+ with sr.Microphone() as source:
|
|
|
+ # listen for 1 second to calibrate the energy threshold for ambient noise levels
|
|
|
+ r.adjust_for_ambient_noise(source)
|
|
|
+ print("Say something!")
|
|
|
+ audio = r.listen(source)
|
|
|
+
|
|
|
+ # recognize speech using Google Speech Recognition
|
|
|
+ try:
|
|
|
+ # for testing purposes, we're just using the default API key
|
|
|
+ # to use another API key, use `r.recognize_google(audio, key="GOOGLE_SPEECH_RECOGNITION_API_KEY")`
|
|
|
+ # instead of `r.recognize_google(audio)`
|
|
|
+ captured_audio = r.recognize_google(audio, key=None, language="fr-FR")
|
|
|
+ print "Google Speech Recognition thinks you said %s" % captured_audio
|
|
|
+ self._analyse_audio(captured_audio)
|
|
|
+
|
|
|
+ except sr.UnknownValueError:
|
|
|
+ print("Google Speech Recognition could not understand audio")
|
|
|
+ except sr.RequestError as e:
|
|
|
+ print("Could not request results from Google Speech Recognition service; {0}".format(e))
|
|
|
+
|
|
|
+ def _analyse_audio(self, audio):
|
|
|
+ self.main_controller.analyse_order(audio)
|