feat(stt): pipeline audio MXC → WAV → transcription → cache SQLite (#7) #99

Closed
charles wants to merge 4 commits from feat/7-pipeline-clean into main
Owner

Closes #7

Changements

  • crates/fractal-stt/src/pipeline.rs : AudioPipeline avec worker Tokio via mpsc::channel
    • spawn() : démarre le worker en arrière-plan
    • submit() : soumet une requête, retourne un oneshot::Receiver
    • fire_and_forget() : transcription sans attendre le résultat
    • TranscriptCache : cache SQLite via sqlx (table transcriptions)
    • download_mxc() : téléchargement via reqwest
    • convert_to_wav_16k() : conversion via gst-launch-1.0 (timeout 30s)
  • lib.rs : expose AudioPipeline et TranscribeRequest
  • fractal-stt/Cargo.toml : ajout sqlx = { workspace = true }
  • Cargo.toml : ajout sqlx 0.8 (sqlite, runtime-tokio, macros) dans les deps workspace

Corrections vs branche précédente

  • EngineStatus::Unavailable { reason } (struct variant, pas tuple)
  • r.language.and_then(|l| LanguageCode::new(l).ok()) (pas .map())
Closes #7 ## Changements - `crates/fractal-stt/src/pipeline.rs` : `AudioPipeline` avec worker Tokio via `mpsc::channel` - `spawn()` : démarre le worker en arrière-plan - `submit()` : soumet une requête, retourne un `oneshot::Receiver` - `fire_and_forget()` : transcription sans attendre le résultat - `TranscriptCache` : cache SQLite via sqlx (table `transcriptions`) - `download_mxc()` : téléchargement via reqwest - `convert_to_wav_16k()` : conversion via `gst-launch-1.0` (timeout 30s) - `lib.rs` : expose `AudioPipeline` et `TranscribeRequest` - `fractal-stt/Cargo.toml` : ajout `sqlx = { workspace = true }` - `Cargo.toml` : ajout `sqlx 0.8` (sqlite, runtime-tokio, macros) dans les deps workspace ## Corrections vs branche précédente - `EngineStatus::Unavailable { reason }` (struct variant, pas tuple) - `r.language.and_then(|l| LanguageCode::new(l).ok())` (pas `.map()`)
charles closed this pull request 2026-04-06 02:01:14 +00:00
Some checks are pending
CI / cargo check (pull_request) Has been cancelled
CI / cargo test (pull_request) Has been cancelled
CI / clippy + rustfmt (pull_request) Has been cancelled
qa
Required

Pull request closed

Sign in to join this conversation.
No description provided.