import subprocess import json import vosk # Modèle Vosk model_path = "vosk-model/vosk-model-small-fr-0.22" model = vosk.Model(model_path) # Commande arecord : stéréo 44100 Hz → conversion nécessaire # On utilise ffmpeg pour convertir à la volée : stéréo 44100 → mono 16000 command = [ "arecord", "-f", "cd", "-D", "hw:1" ] # Démarrage d'arecord, redirigé vers ffmpeg en pipe 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) print("🎙️ Parle en français...") # Boucle de lecture + reconnaissance 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()) # print("... ", partial.get("partial", ""))