CaptionCompass — vois les mots, sens d'où ils viennent
Une application d'accessibilité caption-first pour les utilisateurs Android sourds et malentendants. Les sous-titres en direct sont toujours visibles. Une indication grossière de la direction du locuteur n'apparaît que lorsqu'elle est fiable.

Croquis sur tableau blanc · la pipeline audio
La philosophie produit en cinq phrases
L'indication de direction est opt-in et conditionnée. Elle n'apparaît que si :
- L'utilisateur l'a activée dans les réglages, et
- L'appareil expose deux microphones exploitables via la source audio UNPROCESSED, et
- Le téléphone est posé à plat et stable (vérification gyroscope), et
- La confiance est élevée ou moyenne.
Si l'une de ces conditions disparaît, les sous-titres continuent de fonctionner sans changement et l'arc de direction s'estompe. "Show less, not more" — il ne s'agit pas de désactiver une fonction, mais de la retirer respectueusement lorsqu'elle ne peut pas être justifiée assez solidement.
Ce que contient le MVP
| Couche | Statut |
|---|---|
| Projet / Gradle / Manifest | ready |
| Modèle de domaine + politique de fallback | ready, unit-tested |
| Capability-probe (recherche UNPROCESSED + stéréo) | ready |
Capture stéréo AudioRecord | ready |
| Energy VAD (détection d'activité vocale) | ready |
| GCC-PHAT DoA + zone-smoother | ready, unit-tested sur le mapping τ→zone |
Adaptateur Android SpeechRecognizer | ready |
| Audio mock + ASR mock (pour le travail sur émulateur) | ready |
| Foreground service (type micro Android 14) | ready |
| UI Compose (barre de statut, arc de direction, sous-titres, contrôles) | ready |
| Phase 2 | ASR de fallback Vosk, Silero-VAD ONNX |
| Phase 4 | Entrée stéréo BLE (micros stéréo externes) |
Stack
AudioRecord avec source UNPROCESSED et channel-mask stéréoSpeechRecognizer (en ligne), Vosk (Phase 2, fallback hors ligne)microphone d'Android 14Pourquoi GCC-PHAT et pas un modèle ML pour la direction
La DoA avec deux microphones est un problème mathématique résolu si on le pose correctement. GCC-PHAT donne une time-difference-of-arrival d'où découle un seul azimut. Sur un téléphone avec ~14 cm entre les micros, cela ne fournit pas une précision au degré près, mais bien une indication fiable gauche / centre / droite / arrière-gauche / arrière-droite (cinq zones). C'est suffisant pour le cas d'usage, sans modèles ML qui coûtent en latence et en batterie.
Pour l'évaluation de la confiance, on utilise la netteté du pic de cross-correlation — un pic élevé signifie une source claire ; un pic plat signifie plusieurs locuteurs ou du bruit, et l'arc est alors estompé au lieu d'afficher une direction trompeuse.
Statut + roadmap
Maintenant : scaffold MVP prêt. Couche de domaine unit-tested, UI
Compose fonctionnelle, capture stéréo opérationnelle, sous-titres
fonctionnels via SpeechRecognizer. Mode mock pour le développement sur
émulateur.
Phase 2 : ASR Vosk hors ligne + Silero-VAD ONNX (meilleure VAD, indépendante de l'appareil).
Phase 4 : entrée stéréo BLE — brancher des micros stéréo externes via Bluetooth pour une meilleure précision DoA que les micros intégrés du téléphone.