[M1] Pipeline audio GStreamer : opus/webm → WAV 16kHz mono #78

Closed
opened 2026-04-06 01:42:10 +00:00 by charles · 1 comment
Owner

Contexte

Les messages vocaux Matrix arrivent en format opus (dans un container webm). Les moteurs STT attendent du WAV 16kHz mono. Ce ticket couvre la conversion audio et le téléchargement du média depuis Matrix.

Critères d'acceptation

  • AudioPipeline::download_and_convert(event_id, mxc_uri, client) -> Result<AudioData>
  • Téléchargement du média chiffré/non-chiffré via matrix-rust-sdk (media_download)
  • Conversion opus/webm → WAV 16kHz mono 16-bit via pipeline GStreamer :
    appsrc → matroskademux → opusdec → audioconvert → audioresample → audio/x-raw,rate=16000,channels=1 → wavenc → appsink
  • Gestion des formats d'entrée alternatifs : ogg/opus, mp4/aac (fallback)
  • Écoute des événements Matrix m.room.message type m.audio et m.voice via EventBus
  • En mode auto_transcribe: true : pipeline déclenché automatiquement à la réception
  • Tests unitaires avec fichiers audio de test (opus fixtures)

Notes techniques

  • Dépend de #73 (SttEngine + types)
  • Dépendance GStreamer : gstreamer, gstreamer-app crates
  • GStreamer est déjà une dépendance de Fractal upstream (player audio) — pas d'overhead de dépendance
  • Le AudioData résultant est passé directement au SttEngine configuré
## Contexte Les messages vocaux Matrix arrivent en format opus (dans un container webm). Les moteurs STT attendent du WAV 16kHz mono. Ce ticket couvre la conversion audio et le téléchargement du média depuis Matrix. ## Critères d'acceptation - [ ] `AudioPipeline::download_and_convert(event_id, mxc_uri, client) -> Result<AudioData>` - [ ] Téléchargement du média chiffré/non-chiffré via matrix-rust-sdk (`media_download`) - [ ] Conversion opus/webm → WAV 16kHz mono 16-bit via pipeline GStreamer : `appsrc → matroskademux → opusdec → audioconvert → audioresample → audio/x-raw,rate=16000,channels=1 → wavenc → appsink` - [ ] Gestion des formats d'entrée alternatifs : ogg/opus, mp4/aac (fallback) - [ ] Écoute des événements Matrix `m.room.message` type `m.audio` et `m.voice` via `EventBus` - [ ] En mode `auto_transcribe: true` : pipeline déclenché automatiquement à la réception - [ ] Tests unitaires avec fichiers audio de test (opus fixtures) ## Notes techniques - Dépend de #73 (SttEngine + types) - Dépendance GStreamer : `gstreamer`, `gstreamer-app` crates - GStreamer est déjà une dépendance de Fractal upstream (player audio) — pas d'overhead de dépendance - Le `AudioData` résultant est passé directement au `SttEngine` configuré
Author
Owner

Doublon de #7 (pipeline audio GStreamer implémenté via pipeline.rs sur main). Fermeture.

Doublon de #7 (pipeline audio GStreamer implémenté via `pipeline.rs` sur main). Fermeture.
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#78
No description provided.