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 <noreply@anthropic.com>
66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
"""À chaque moteur son modèle.
|
|
|
|
`app.py` passait `CONFIG["model"]` — un dépôt MLX — quel que soit le moteur détecté.
|
|
Sur une machine sans Apple Silicon, `faster-whisper` aurait reçu un dépôt qu'il ne
|
|
sait pas charger. Le défaut était invisible ici, puisque la détection rend toujours
|
|
`mlx` sur ce Mac.
|
|
"""
|
|
import pytest
|
|
|
|
from core import MODELES_PAR_MOTEUR, modele_pour_moteur
|
|
|
|
|
|
def test_chaque_moteur_connu_a_son_modele():
|
|
for nom in ("mlx", "faster-cpu", "faster-gpu"):
|
|
assert modele_pour_moteur(nom)
|
|
|
|
|
|
def test_mlx_garde_le_modele_d_aujourd_hui():
|
|
assert modele_pour_moteur("mlx") == "mlx-community/whisper-medium"
|
|
|
|
|
|
def test_les_moteurs_faster_ne_recoivent_jamais_un_depot_mlx():
|
|
for nom in ("faster-cpu", "faster-gpu"):
|
|
assert "mlx" not in modele_pour_moteur(nom).lower()
|
|
|
|
|
|
def test_le_gpu_vise_la_precision_le_cpu_la_latence():
|
|
# mesuré le 2026-08-23 : medium = 13/13 termes mais 4,4 s sur CPU ; small = 11/13 en 1,4 s
|
|
assert "medium" in modele_pour_moteur("faster-gpu")
|
|
assert "small" in modele_pour_moteur("faster-cpu")
|
|
|
|
|
|
def test_un_moteur_inconnu_est_refuse_clairement():
|
|
with pytest.raises(KeyError) as e:
|
|
modele_pour_moteur("vosk")
|
|
assert "vosk" in str(e.value)
|
|
|
|
|
|
def test_la_table_ne_contient_que_les_moteurs_reconnus():
|
|
assert set(MODELES_PAR_MOTEUR) == {"mlx", "faster-cpu", "faster-gpu", "gemini", "openrouter"}
|
|
|
|
|
|
def test_le_reglage_manuel_prime_sur_la_table():
|
|
from core import modele_retenu
|
|
assert modele_retenu("faster-cpu", forcage=None) == modele_pour_moteur("faster-cpu")
|
|
assert modele_retenu("faster-cpu", forcage="Systran/faster-whisper-medium") \
|
|
== "Systran/faster-whisper-medium"
|
|
|
|
|
|
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"]
|