mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 02:20:17 +01:00
Implémentation de speech_recognition
This commit is contained in:
@@ -2,6 +2,7 @@ from hand_detector import HandDetector
|
||||
from audio_detector import record, analyze, test
|
||||
from network import ApiClient, WebsocketServer
|
||||
import time
|
||||
import speech_recognition as sr
|
||||
|
||||
#Classe qui coordonne les différents modules et qui s'occupe de construire l'avis au fur et a mesure
|
||||
class Manager():
|
||||
@@ -22,6 +23,7 @@ class Manager():
|
||||
self.api = ApiClient()
|
||||
self.timeLastChange = time.time()
|
||||
self.isLastHandPacketEmpty = False
|
||||
self.recongizer = sr.Recognizer()
|
||||
print("Backend ready")
|
||||
|
||||
#Boucle principale
|
||||
@@ -67,24 +69,43 @@ class Manager():
|
||||
self.isLastHandPacketEmpty = True
|
||||
|
||||
def audio(self):
|
||||
audio_query,sr = record()
|
||||
self.server.sendMessage({"type":"recording_done"})
|
||||
result = analyze(audio_query,sr)
|
||||
# result = test()
|
||||
if(result != False):
|
||||
print("mot detecté : " + result["display"] + " avec une note de " + str(result["grade"]))
|
||||
self.server.sendMessage({"type":"new_grade","word":result["display"]})
|
||||
self.avis["notes_autres"]["test"] = result["grade"]
|
||||
time.sleep(3)
|
||||
self.state = 3
|
||||
self.server.sendMessage({"type": "state", "state": 3})
|
||||
time.sleep(3)
|
||||
self.server.sendMessage({"type":"recording_started"})
|
||||
with sr.Microphone() as source:
|
||||
audio = self.recongizer.listen(source)
|
||||
self.server.sendMessage({"type":"recording_done"})
|
||||
try:
|
||||
# utilisez le recognizer pour effectuer la reconnaissance vocale
|
||||
texte = self.recongizer.recognize_google(audio, language='fr-FR')
|
||||
print("AUDIO MESSAGE RECONGIZED : " + texte)
|
||||
self.server.sendMessage({"type":"new_grade","word":texte})
|
||||
self.avis["commentaire"] = texte
|
||||
|
||||
# Audio non reconnu
|
||||
except sr.UnknownValueError:
|
||||
print("MESSAGE NOT RECONGIZED")
|
||||
self.server.sendMessage({"type":"new_grade","word":"Avis non reconnu"})
|
||||
self.avis["commentaire"] = ""
|
||||
|
||||
#Erreur d'accès à l'api
|
||||
except sr.RequestError as e:
|
||||
print("Erreur avec l'api de reconnaissance vocale")
|
||||
self.avis["commentaire"] = ""
|
||||
self.server.sendMessage({"type":"new_grade","word":"Avis non reconnu"})
|
||||
print("Impossible de récupérer les résultats de la reconnaissance vocale; {0}".format(e))
|
||||
|
||||
#On passe a la suite
|
||||
time.sleep(5)
|
||||
self.state = 3
|
||||
self.server.sendMessage({"type": "state", "state": 3})
|
||||
|
||||
def thankYou(self):
|
||||
#On envoie l'avis à l'api
|
||||
res = self.api.send(self.avis["note"],self.avis["commentaire"])
|
||||
time.sleep(10)
|
||||
print("Reseting...")
|
||||
self.timeLastChange = time.time()
|
||||
self.server.sendMessage({"type": "state", "state": 0})
|
||||
res = self.api.send(self.avis["note"],self.avis["notes_autres"]["test"])
|
||||
print(res.text)
|
||||
self.reset()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user