[M1] Pipeline audio complet : téléchargement → conversion → transcription → cache SQLite #189

Closed
opened 2026-04-06 08:52:22 +00:00 by charles · 0 comments
Owner

Contexte

Orchestrer le flux complet de transcription d'un message vocal Matrix : depuis le téléchargement du media jusqu'à l'affichage du résultat mis en cache.

Critères d'acceptation

  • Pipeline en 5 étapes : (1) téléchargement via matrix-rust-sdk → Vec<u8>, (2) conversion opus/webm → WAV 16kHz mono via GStreamer, (3) envoi au moteur STT sélectionné, (4) mise en cache SQLite avec clé event_id, (5) retour du Transcript
  • Cache SQLite dans ~/.local/share/fractal-plus/stt_cache.db : table (event_id TEXT PRIMARY KEY, transcript TEXT, language TEXT, confidence TEXT, created_at TIMESTAMP)
  • Si le résultat est déjà en cache, ne pas relancer la transcription
  • La transcription est lancée dans un thread async (non-bloquant pour l'UI)
  • Gestion du mode automatique (SF-M1-02) : écoute les événements m.audio/m.voice via EventBus et lance la transcription si auto_transcribe = true

Notes techniques

  • Module SttExtension dans fractal-stt implémente Extension::on_sync_event() et filtre les m.room.message de type m.audio/m.voice
  • Voir specs §3.3 (ST-M1-04, ST-M1-06)
## Contexte Orchestrer le flux complet de transcription d'un message vocal Matrix : depuis le téléchargement du media jusqu'à l'affichage du résultat mis en cache. ## Critères d'acceptation - [ ] Pipeline en 5 étapes : (1) téléchargement via matrix-rust-sdk → `Vec<u8>`, (2) conversion opus/webm → WAV 16kHz mono via GStreamer, (3) envoi au moteur STT sélectionné, (4) mise en cache SQLite avec clé `event_id`, (5) retour du `Transcript` - [ ] Cache SQLite dans `~/.local/share/fractal-plus/stt_cache.db` : table `(event_id TEXT PRIMARY KEY, transcript TEXT, language TEXT, confidence TEXT, created_at TIMESTAMP)` - [ ] Si le résultat est déjà en cache, ne pas relancer la transcription - [ ] La transcription est lancée dans un thread async (non-bloquant pour l'UI) - [ ] Gestion du mode automatique (SF-M1-02) : écoute les événements `m.audio`/`m.voice` via EventBus et lance la transcription si `auto_transcribe = true` ## Notes techniques - Module `SttExtension` dans `fractal-stt` implémente `Extension::on_sync_event()` et filtre les `m.room.message` de type `m.audio`/`m.voice` - Voir specs §3.3 (ST-M1-04, ST-M1-06)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/my-fractal#189
No description provided.