feat: ModelManager pour téléchargement auto Whisper (#17) #114

Merged
charles merged 4 commits from feat/17-whisper-model-download into main 2026-04-06 02:10:16 +00:00
Owner

Closes #17

Changements

  • Cargo.toml (workspace) : ajout de sha2 = "0.10" dans [workspace.dependencies] (dirs = "5" et reqwest étaient déjà présents)
  • crates/fractal-stt/Cargo.toml : ajout de sha2 = { workspace = true } dans les dépendances
  • crates/fractal-stt/src/model_manager.rs (nouveau) : ModelManager complet avec :
    • DownloadEvent enum (Started / Progress / Completed / Failed) via mpsc::Receiver
    • ensure_model(size) — vérifie la présence, télécharge si absent (stream chunké), vérifie SHA256, rename atomique
    • model_path / models_dir — stockage dans ~/.local/share/fractal-plus/models/whisper-{size}.bin
    • model_exists — vérification rapide présence + taille > 0
    • delete_model — suppression pour libérer l'espace
    • SHA256 connus pour Tiny, Base, Small, Medium ; None pour les variantes Large
    • 3 tests unitaires (URL, path, exists)
  • crates/fractal-stt/src/lib.rs : ajout du module model_manager et re-export de delete_model, ensure_model, model_exists, model_path, models_dir, DownloadEvent

Notes

  • Le modèle par défaut est tiny (~75 Mo) conformément aux critères d'acceptation
  • Les modules existants (extension, openai_whisper, secret) sont conservés tels quels
  • reqwest avec rustls-tls est utilisé (déjà dans le workspace, pas de dépendance système OpenSSL)
Closes #17 ## Changements - **`Cargo.toml` (workspace)** : ajout de `sha2 = "0.10"` dans `[workspace.dependencies]` (`dirs = "5"` et `reqwest` étaient déjà présents) - **`crates/fractal-stt/Cargo.toml`** : ajout de `sha2 = { workspace = true }` dans les dépendances - **`crates/fractal-stt/src/model_manager.rs`** (nouveau) : `ModelManager` complet avec : - `DownloadEvent` enum (Started / Progress / Completed / Failed) via `mpsc::Receiver` - `ensure_model(size)` — vérifie la présence, télécharge si absent (stream chunké), vérifie SHA256, rename atomique - `model_path` / `models_dir` — stockage dans `~/.local/share/fractal-plus/models/whisper-{size}.bin` - `model_exists` — vérification rapide présence + taille > 0 - `delete_model` — suppression pour libérer l'espace - SHA256 connus pour Tiny, Base, Small, Medium ; `None` pour les variantes Large - 3 tests unitaires (URL, path, exists) - **`crates/fractal-stt/src/lib.rs`** : ajout du module `model_manager` et re-export de `delete_model`, `ensure_model`, `model_exists`, `model_path`, `models_dir`, `DownloadEvent` ## Notes - Le modèle par défaut est `tiny` (~75 Mo) conformément aux critères d'acceptation - Les modules existants (`extension`, `openai_whisper`, `secret`) sont conservés tels quels - `reqwest` avec `rustls-tls` est utilisé (déjà dans le workspace, pas de dépendance système OpenSSL)
charles deleted branch feat/17-whisper-model-download 2026-04-06 02:10:17 +00:00
Sign in to join this conversation.
No description provided.