From 8d316a3e0bdefe4b00057e9df4851fd2ea579d84 Mon Sep 17 00:00:00 2001 From: Ralph Mayola Date: Fri, 25 Sep 2026 08:47:01 +0200 Subject: [PATCH] OpenRouter : gemini-3.8-flash, delai reseau porte a 15 s 3.5-flash-lite ajoutait une phrase non dite ; 3.1-flash-lite ecrivait GitHub pour Gitea. 3.8-flash est juste a chaque essai (4-9 s). 3.8-flash-lite-tts est refuse par OpenRouter : modele texte -> voix. Co-Authored-By: Claude Opus 5.5 --- core.py | 10 +++++++--- moteur/gemini.py | 7 ++++--- tests/test_modele_par_moteur.py | 13 +++++++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/core.py b/core.py index 6e7e9ed..445e4a8 100644 --- a/core.py +++ b/core.py @@ -195,9 +195,13 @@ MODELES_PAR_MOTEUR = { # partir de texte, elle ne transcrit pas. Il faut un modele qui ACCEPTE # l'audio en entree. "gemini": "gemini-3.1-flash-lite", - # Flash-Lite le plus recent qui accepte l'audio chez OpenRouter (25/09) ; - # moins cher en audio que 3.1 (0,30 $ contre 0,50 $ le million de jetons). - "openrouter": "google/gemini-3.5-flash-lite", + # Mesure du 2026-09-25 (phrase de 12 s / dictee de 94 s, 2 a 3 essais) : + # 3.5-flash-lite 1,4 s / 3-5 s AJOUTE une phrase non dite -> ecarte + # 3.1-flash-lite 1,5 s / 3,7 s « Gitea » -> « GitHub » sur le long + # 3.8-flash 4-9 s / 9 s tout juste, a chaque essai -> retenu + # « 3.8-flash-lite-tts » est refuse par OpenRouter (HTTP 400) : c'est un + # modele texte -> voix, il n'accepte pas d'audio en entree. + "openrouter": "google/gemini-3.8-flash", } diff --git a/moteur/gemini.py b/moteur/gemini.py index daa8dfd..17a8999 100644 --- a/moteur/gemini.py +++ b/moteur/gemini.py @@ -27,10 +27,11 @@ from core import clean_transcript URL_API = "https://generativelanguage.googleapis.com/v1beta/models/{modele}:generateContent" SERVICE_TROUSSEAU = "zonza-gemini" -# Borné sous `duree_max_transcription_s` (20 s) : si Gemini ne répond pas à +# Borné sous `duree_max_transcription_s` (20 s) : si l'API ne répond pas à # temps, il doit rester de quoi basculer sur le moteur local avant que la -# garde du halo ne tombe. -DELAI_RESEAU_S = 12.0 +# garde du halo ne tombe. 15 s couvrent les 9 s mesurées de gemini-3.8-flash +# sur une dictée de 94 s. +DELAI_RESEAU_S = 15.0 CONSIGNE = ( "Tu es un moteur de dictée. Transcris mot pour mot ce que dit la personne, " diff --git a/tests/test_modele_par_moteur.py b/tests/test_modele_par_moteur.py index 5b8ce33..63e4f34 100644 --- a/tests/test_modele_par_moteur.py +++ b/tests/test_modele_par_moteur.py @@ -50,3 +50,16 @@ def test_le_reglage_manuel_prime_sur_la_table(): def test_un_forcage_vide_est_ignore(): from core import modele_retenu assert modele_retenu("mlx", forcage="") == modele_pour_moteur("mlx") + + +def test_les_moteurs_distants_ne_recoivent_jamais_un_modele_tts(): + # Un modele « -tts » produit de la voix a partir de texte : il refuse + # l'audio en entree (HTTP 400 chez OpenRouter, verifie le 2026-09-25). + for nom in ("gemini", "openrouter"): + assert "tts" not in modele_pour_moteur(nom).lower() + + +def test_le_delai_reseau_laisse_la_place_au_repli_sous_la_garde(): + from core import CONFIG + from moteur.gemini import DELAI_RESEAU_S + assert DELAI_RESEAU_S < CONFIG["duree_max_transcription_s"]