feat: OpenAiWhisperEngine + VoskEngine + SecretString (#6) #96
No reviewers
Labels
No labels
module:M0-setup
module:M1-stt
module:M1-stt
module:M2-ai
module:M2-ai
module:M3-rich
module:M3-rich
module:M4-bridge
module:M4-bridge
module:M5-bonus
module:M5-bonus
module:setup
priority:high
priority:high
priority:low
priority:low
priority:medium
priority:medium
type:chore
type:chore
type:feature
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/my-fractal!96
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/6-openai-vosk-engines"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #6
Summary
SecretString: type opaque ajouté danstypes.rs—Debug/Displaymasquent la valeur ([REDACTED]),expose()retourne la valeur brute au point d'usageOpenAiWhisperEngine: appel HTTP multipart vers{base_url}/v1/audio/transcriptionsviareqwest+rustls-tls(pas d'OpenSSL) ;health_check()valide la clé API via GET{base_url}/v1/models; compatible OpenAI, Groq, Together…VoskEngine: invoquevosk-transcriberen subprocess ;health_check()vérifie la présence du binaire puis du répertoire modèle ; parse le format JSON ligne-par-ligne ({"text": "…"})whisper.rs:WHISPER_LANGUAGESrendupub(crate);convert_to_wavextrait en fonction librepub(crate) convert_audio_to_wavréutilisée parVoskEnginelib.rs: exports mis à jour (openai,vosk,SecretStringdepuistypes)reqwest = { version = "0.12", features = ["multipart", "json", "rustls-tls"] }eturl = "2"ajoutés au workspace et àfractal-sttPlan de test
cargo test -p fractal-stt— tous les tests unitaires passent (OpenAI URL building, clé masquée, parsing Vosk, health checks avec binaires manquants)cargo clippy -p fractal-stt -- -D warnings— pas d'avertissementSecretStringn'apparaît pas en clair dans les logs ({:?}→SecretString([REDACTED]),{}→[REDACTED])OpenAiWhisperEngineavec une vraie clé et appelerhealth_check()→EngineStatus::ReadyVoskEngine::health_check()avec/bin/true+ modèle manquant →ModelMissingPull request closed