diff --git a/diagnostic.py b/diagnostic.py index 17812d1..dd12467 100644 --- a/diagnostic.py +++ b/diagnostic.py @@ -91,13 +91,19 @@ def epreuve_moteur(detecter_moteur=None, resoudre_modele=None, creer_transcripte # --- épreuve 3 : micro ------------------------------------------------------- -def epreuve_micro(ouvrir_flux=None, sample_rate=16000, duree_s=1.0, dormir=None): +def epreuve_micro(ouvrir_flux=None, sample_rate=None, duree_s=1.0, dormir=None): """Ouvre VRAIMENT le micro pendant `duree_s` et compte les blocs reçus. `ouvrir_flux` suit le même contrat que `Recorder._ouvrir_flux` dans `capture.py` : injectable, pour que les tests ne touchent à aucun périphérique réel. + + Le débit vient de CONFIG et n'est pas codé en dur : le diagnostic doit + éprouver le micro AU DÉBIT QUE L'APPLICATION UTILISE VRAIMENT, sinon il + cesserait silencieusement d'être représentatif si ce réglage changeait. """ + from core import CONFIG + sample_rate = sample_rate or CONFIG["sample_rate"] dormir = dormir or time.sleep if ouvrir_flux is None: try: @@ -133,7 +139,7 @@ def epreuve_micro(ouvrir_flux=None, sample_rate=16000, duree_s=1.0, dormir=None) # --- épreuve 4 : transcription ----------------------------------------------- def _generer_echantillon_parole(texte="Bonjour, ceci est un test de dictée Zonza.", - sample_rate=16000): + sample_rate=None): """Synthétise un court échantillon de parole via la commande `say` de macOS. LÈVE si `say` est absent, échoue, ou si le WAV produit est illisible — @@ -141,6 +147,8 @@ def _generer_echantillon_parole(texte="Bonjour, ceci est un test de dictée Zonz d'inventer un résultat. Sur une machine sans `say` (Windows, Linux), c'est TOUJOURS ce chemin qui est emprunté. """ + from core import CONFIG + sample_rate = sample_rate or CONFIG["sample_rate"] if shutil.which("say") is None: raise RuntimeError("commande `say` absente (probablement pas macOS)") chemin = tempfile.NamedTemporaryFile(suffix=".wav", delete=False).name @@ -168,7 +176,8 @@ def epreuve_transcription(transcripteur, generer_parole=None, horloge=None): audio = generer_parole() source = "parole synthétisée" except Exception as e: - audio = np.zeros(16000, dtype="float32") + from core import CONFIG + audio = np.zeros(CONFIG["sample_rate"], dtype="float32") # une seconde source = f"silence (synthèse vocale indisponible : {e})" debut = horloge() try: