Zonza previent quand le micro ne lui envoie rien
Loom tenait le micro : Zonza enregistrait dans le vide. La forme d'onde restait plate et RIEN ne le signalait — on ne le decouvrait qu'apres avoir parle pour rien, puis en cherchant pourquoi le halo se figeait. Au bout de 1,8 s sans le moindre bloc audio, la bulle affiche « Aucun son — micro pris ailleurs ? » et un son d'erreur previent. Le delai laisse le temps au flux CoreAudio de s'ouvrir (quelques centaines de ms) sans laisser dicter une phrase entiere pour rien. Le garde `en_cours` evite le faux positif de la dictee tres courte : arreter avant la fin du delai n'est pas une panne. Verifie dans les deux sens : micro muet -> alerte, 0 bloc ; micro normal -> bulle inchangee, 40 blocs. Pas de faux positif. 74 tests passent. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -21,7 +21,10 @@ CONFIG = {
|
||||
"duree_max_overlay_s": 210.0,
|
||||
# Garde COURTE, armee des l'arret : il ne reste alors que la transcription,
|
||||
# qui se compte en secondes. 210 s a ce stade, c'est « fige » pour l'utilisateur.
|
||||
"duree_max_transcription_s": 20.0, # sécurité : arrêt auto après 2 min (fenêtre jamais figée)
|
||||
"duree_max_transcription_s": 20.0,
|
||||
# Au bout de ce delai sans le moindre bloc audio, on previent : le micro est
|
||||
# pris par une autre application (Loom, Zoom, OBS...). Sinon on dicte dans le vide.
|
||||
"delai_detection_silence_s": 1.8, # sécurité : arrêt auto après 2 min (fenêtre jamais figée)
|
||||
"sample_rate": 16000,
|
||||
"fps": 30,
|
||||
# --- overlay « barre de dictee » (bas de l'ecran) ---
|
||||
@@ -132,6 +135,15 @@ def attendre(condition, delai_max_s, pas_s, dormir=None, horloge=None):
|
||||
dormir(pas_s)
|
||||
|
||||
|
||||
def entree_audio_muette(blocs_recus, en_cours):
|
||||
"""Faut-il alerter : le micro n'envoie-t-il rien alors qu'on enregistre ?
|
||||
|
||||
`en_cours` evite un faux positif quand l'utilisateur a simplement arrete avant
|
||||
la fin du delai — ce n'est pas une panne, juste une dictee courte.
|
||||
"""
|
||||
return bool(en_cours) and blocs_recus == 0
|
||||
|
||||
|
||||
def bar_metrics(bar_height):
|
||||
"""Mesures de l'overlay pour une hauteur de barre donnee, en points."""
|
||||
if bar_height <= 0:
|
||||
|
||||
Reference in New Issue
Block a user