feat(stt): OpenAiWhisperEngine + VoskEngine (#6) #149

Closed
charles wants to merge 26 commits from feat/6-openai-vosk-engines into main
Owner

Résumé

Implémente l'issue #6 : deux nouveaux moteurs STT et un utilitaire de conversion audio partagé.

Changements

  • crates/fractal-stt/src/audio.rs — utilitaire convert_to_wav partagé (pipeline GStreamer, 30 s timeout)
  • crates/fractal-stt/src/openai_whisper.rsOpenAiWhisperEngine + SecretString (type opaque, jamais loggué)
    • Appel HTTP multipart vers /v1/audio/transcriptions
    • health_check() via GET /v1/models (valide la clé API)
    • Compatible OpenAI, Groq, et tout endpoint OpenAI-compatible via base_url
    • 57 langues Whisper supportées
  • crates/fractal-stt/src/vosk.rsVoskEngine via subprocess vosk-transcriber
    • health_check() vérifie la présence du répertoire modèle
    • Inférence de la langue depuis le nom du répertoire modèle (vosk-model[-small]-<lang>-*)
  • crates/fractal-stt/Cargo.toml — ajout de reqwest 0.12 avec rustls-tls (pas d'OpenSSL)
  • crates/fractal-stt/src/lib.rs — export de OpenAiWhisperEngine, SecretString, VoskEngine

Critères d'acceptation

  • OpenAiWhisperEngine : api_key: SecretString, base_url: String
  • OpenAiWhisperEngine::health_check() : GET /v1/models
  • VoskEngine : subprocess vosk-transcriber
  • VoskEngine::health_check() : vérifie le répertoire modèle
  • SecretString : type opaque, [REDACTED] dans Debug
  • reqwest avec rustls-tls (pas d'OpenSSL)
  • Interface SttEngine respectée pour les deux moteurs
## Résumé Implémente l'issue #6 : deux nouveaux moteurs STT et un utilitaire de conversion audio partagé. ### Changements - **`crates/fractal-stt/src/audio.rs`** — utilitaire `convert_to_wav` partagé (pipeline GStreamer, 30 s timeout) - **`crates/fractal-stt/src/openai_whisper.rs`** — `OpenAiWhisperEngine` + `SecretString` (type opaque, jamais loggué) - Appel HTTP multipart vers `/v1/audio/transcriptions` - `health_check()` via GET `/v1/models` (valide la clé API) - Compatible OpenAI, Groq, et tout endpoint OpenAI-compatible via `base_url` - 57 langues Whisper supportées - **`crates/fractal-stt/src/vosk.rs`** — `VoskEngine` via subprocess `vosk-transcriber` - `health_check()` vérifie la présence du répertoire modèle - Inférence de la langue depuis le nom du répertoire modèle (`vosk-model[-small]-<lang>-*`) - **`crates/fractal-stt/Cargo.toml`** — ajout de `reqwest 0.12` avec `rustls-tls` (pas d'OpenSSL) - **`crates/fractal-stt/src/lib.rs`** — export de `OpenAiWhisperEngine`, `SecretString`, `VoskEngine` ### Critères d'acceptation - [x] `OpenAiWhisperEngine` : `api_key: SecretString`, `base_url: String` - [x] `OpenAiWhisperEngine::health_check()` : GET `/v1/models` - [x] `VoskEngine` : subprocess `vosk-transcriber` - [x] `VoskEngine::health_check()` : vérifie le répertoire modèle - [x] `SecretString` : type opaque, `[REDACTED]` dans Debug - [x] `reqwest` avec `rustls-tls` (pas d'OpenSSL) - [x] Interface `SttEngine` respectée pour les deux moteurs
feat(stt): export OpenAiWhisperEngine, VoskEngine, SecretString (#6)
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
532b32ace3
fix(stt): corriger EngineStatus + importer SecretString depuis secret.rs (#6)
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
94e419b2cc
fix(stt): corriger EngineStatus dans VoskEngine (#6)
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
bafb41d3e9
feat(stt): exposer tous les modules + moteurs (#6)
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
fa754cbd5c
fix(stt): supprimer dep dirs inutilisée (#6)
Some checks failed
CI / cargo check (pull_request) Has been cancelled
CI / cargo test (pull_request) Has been cancelled
CI / clippy + rustfmt (pull_request) Has been cancelled
edab0c898b
chore(stt): synchroniser whisper.rs depuis main pour la branche #6
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
92666eb452
chore(stt): utiliser workspace pour toutes les dépendances (#6)
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
dc1b60c49e
chore: ajouter reqwest + tempfile + dirs aux dépendances workspace (#6)
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
65e1814e18
feat(stt): add audio conversion utility module (#6)
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
0845fe7249
chore: add url workspace dep to root Cargo.toml
Some checks are pending
CI / cargo check (pull_request) Waiting to run
CI / cargo test (pull_request) Blocked by required conditions
CI / clippy + rustfmt (pull_request) Waiting to run
a6da13d417
chore: add url dep to fractal-stt Cargo.toml
Some checks failed
CI / cargo check (pull_request) Has been cancelled
CI / cargo test (pull_request) Has been cancelled
CI / clippy + rustfmt (pull_request) Has been cancelled
744d4c32a3
refactor: remove secret.rs, SecretString moved into types.rs
Some checks failed
CI / cargo check (pull_request) Has been cancelled
CI / cargo test (pull_request) Has been cancelled
CI / clippy + rustfmt (pull_request) Has been cancelled
d6227401c0
feat(stt): add reqwest dep + export new engines (#6)
Some checks failed
CI / cargo check (pull_request) Has been cancelled
CI / cargo test (pull_request) Has been cancelled
CI / clippy + rustfmt (pull_request) Has been cancelled
e1ad0883dc
charles closed this pull request 2026-04-06 02:23:22 +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.