#LED from driver_led import APA102 #BOUTON import RPi.GPIO as GPIO import time #STT import subprocess import json import vosk ## INIT # Initialisation des LEDs num_leds = 12 led = APA102(num_led=num_leds) # Initialisation Bouton BUTTON = 17 GPIO.setmode(GPIO.BCM) GPIO.setup(BUTTON, GPIO.IN) etat = {'mute': False} # Inistialisation STT model_path = "vosk-model/vosk-model-small-fr-0.22" model = vosk.Model(model_path) command = [ "arecord", "-f", "cd", "-D", "hw:1" ] arecord = subprocess.Popen(command, stdout=subprocess.PIPE) ffmpeg = subprocess.Popen( [ "ffmpeg", "-loglevel", "quiet", "-i", "pipe:0", "-ac", "1", "-ar", "16000", "-f", "s16le", "pipe:1" ], stdin=arecord.stdout, stdout=subprocess.PIPE ) # Initialisation Vosk rec = vosk.KaldiRecognizer(model, 16000) ## LED def set_couleur(couleur): couleur = couleur.upper() # Dictionnaire des couleurs couleurs_rgb = { 'R': (255, 0, 0), # Rouge 'V': (0, 255, 0), # Vert 'B': (0, 0, 255), # Bleu 'J': (255, 255, 0), # Jaune 'VI': (128, 0, 128), # Violet 'RO': (255, 105, 180), # Rose 'O': (255, 165, 0), # Orange } rgb = couleurs_rgb.get(couleur, (0, 0, 0)) # Éteindre si couleur inconnue for i in range(num_leds): led.set_pixel(i, *rgb) led.show() def eteindre_led(): set_couleur("") # Couleur inconnue → éteint def cleanup_led(): led.cleanup() ##BOUTON # Bascule mute/unmute def toggle_mute(channel): etat['mute'] = not etat['mute'] if etat['mute']: set_couleur('VI') # Rouge = mute else: set_couleur('') # Vert = unmute # Event du bouton préssé GPIO.add_event_detect(BUTTON, GPIO.FALLING, callback=toggle_mute, bouncetime=300) try: while True: data = ffmpeg.stdout.read(4000) if len(data) == 0: break if rec.AcceptWaveform(data): result = json.loads(rec.Result()) print("📝", result.get("text", "")) else: partial = json.loads(rec.PartialResult()) time.sleep(1) # Le programme tourne sans rien faire except KeyboardInterrupt: print("Nettoyage GPIO") cleanup_led() GPIO.cleanup()