feat(stt): WhisperEngine via subprocess whisper-cpp (#5) #84

Merged
charles merged 4 commits from feat/5-whisper-engine into main 2026-04-06 01:51:06 +00:00
Owner

Résumé

Implémente WhisperEngine dans fractal-stt — moteur STT local via subprocess whisper-cpp.

Changements

  • crates/fractal-stt/src/whisper.rs (nouveau) — WhisperEngine implémente SttEngine :
    • transcribe() : conversion audio → WAV 16 kHz mono via pipeline GStreamer (gst-launch-1.0), puis appel subprocess whisper-cpp --output-json, parsing JSON avec fallback texte brut
    • health_check() : vérifie l'existence du binaire et du modèle (ModelMissing vs Unavailable)
    • supported_languages() : 57 langues ISO 639-1 (whisper large-v3)
    • Timeout subprocess : 60 s, timeout conversion GStreamer : 30 s
  • crates/fractal-stt/src/lib.rs — export public WhisperEngine
  • crates/fractal-stt/Cargo.tomltempfile et dirs via workspace
  • Cargo.toml (workspace) — ajout tempfile = "3" et dirs = "5"

Plan de test

  • cargo test -p fractal-stt — tests unitaires (health_check, parse_whisper_json, supported_languages)
  • Test manuel : whisper-cpp dans PATH + modèle ggml-small.bin présent → transcription d'un fichier audio WAV

Closes #5

## Résumé Implémente `WhisperEngine` dans `fractal-stt` — moteur STT local via subprocess `whisper-cpp`. ### Changements - **`crates/fractal-stt/src/whisper.rs`** (nouveau) — `WhisperEngine` implémente `SttEngine` : - `transcribe()` : conversion audio → WAV 16 kHz mono via pipeline GStreamer (`gst-launch-1.0`), puis appel subprocess `whisper-cpp --output-json`, parsing JSON avec fallback texte brut - `health_check()` : vérifie l'existence du binaire et du modèle (`ModelMissing` vs `Unavailable`) - `supported_languages()` : 57 langues ISO 639-1 (whisper large-v3) - Timeout subprocess : 60 s, timeout conversion GStreamer : 30 s - **`crates/fractal-stt/src/lib.rs`** — export public `WhisperEngine` - **`crates/fractal-stt/Cargo.toml`** — `tempfile` et `dirs` via workspace - **`Cargo.toml`** (workspace) — ajout `tempfile = "3"` et `dirs = "5"` ### Plan de test - [ ] `cargo test -p fractal-stt` — tests unitaires (health_check, parse_whisper_json, supported_languages) - [ ] Test manuel : `whisper-cpp` dans PATH + modèle `ggml-small.bin` présent → transcription d'un fichier audio WAV Closes #5
charles deleted branch feat/5-whisper-engine 2026-04-06 01:51:06 +00:00
Sign in to join this conversation.
No description provided.