Moteur Gemini (API) avec repli local automatique
L'audio part chez Google via gemini-3.1-flash-lite (la variante -tts ne transcrit pas : elle produit de la voix). Cle lue dans le trousseau (service zonza-gemini) puis GEMINI_API_KEY. Au moindre echec (cle, reseau, quota, delai de 12 s), la dictee repasse par le moteur local. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+22
-2
@@ -12,8 +12,17 @@ def nom_moteur_pour(plateforme, machine, cuda_disponible):
|
||||
return "faster-gpu" if cuda_disponible else "faster-cpu"
|
||||
|
||||
|
||||
def detecter_moteur():
|
||||
"""Interroge la machine, puis délègue la décision à `nom_moteur_pour`."""
|
||||
def detecter_moteur(forcage=None):
|
||||
"""Le moteur forcé par `CONFIG["moteur"]` s'il est renseigné ; sinon on
|
||||
interroge la machine et on délègue la décision à `nom_moteur_pour`."""
|
||||
if forcage is None:
|
||||
from core import CONFIG
|
||||
forcage = CONFIG.get("moteur")
|
||||
return forcage or _moteur_local()
|
||||
|
||||
|
||||
def _moteur_local():
|
||||
"""Le moteur qui tourne sur CETTE machine, sans réseau."""
|
||||
return nom_moteur_pour(sys.platform, platform.machine(), _cuda_disponible())
|
||||
|
||||
|
||||
@@ -67,4 +76,15 @@ def choisir_transcripteur(nom, modele, langue, amorce):
|
||||
peripherique = "cuda" if nom == "faster-gpu" else "cpu"
|
||||
type_calcul = "float16" if nom == "faster-gpu" else "int8"
|
||||
return TranscripteurFasterWhisper(modele, langue, amorce, peripherique, type_calcul)
|
||||
if nom == "gemini":
|
||||
# Toujours enveloppe d'un repli : la dictee ne doit jamais etre perdue
|
||||
# parce que le reseau ou l'API tombe (cf moteur/gemini.py).
|
||||
from core import modele_pour_moteur
|
||||
from moteur.gemini import TranscripteurAvecRepli, TranscripteurGemini
|
||||
local = _moteur_local()
|
||||
return TranscripteurAvecRepli(
|
||||
TranscripteurGemini(modele, langue, amorce),
|
||||
fabriquer_secours=lambda: choisir_transcripteur(
|
||||
local, modele_pour_moteur(local), langue, amorce),
|
||||
)
|
||||
raise NotImplementedError(f"Moteur non pris en charge à cette étape : {nom}")
|
||||
|
||||
Reference in New Issue
Block a user