feat(stt-client): volume de la voix réglable + fenêtrage persistant (#58)

Deux demandes côté client :

- VOLUME : slider « Volume de la voix » (0–200 %) dans le drawer Réglages du HUD,
  appliqué À CHAUD (canal settings → engine.cfg.tts_volume) et persisté
  (localStorage). Gain appliqué au WAV avant lecture, commun Piper/Kokoro
  (engine._apply_gain, PCM16 ×gain, clip). Config [voice].tts_volume (0.0 muet …
  2.0 amplifié, défaut 1.0). 0 = muet (le tour se déroule sans son).
- FENÊTRAGE : le mode existait ([ui].window_mode app|kiosk|none) ; `stt --window`
  PERSISTE désormais le choix → `stt --window app` rend le HUD fenêtré (déplaçable/
  redimensionnable, type Discord) durablement, y compris pour le service systemd.

Client 0.17.0. Doc : stt.example.toml + admin/ia/stt.md. Validé : gain ×0.5 exact,
HUD sans erreur JS (slider + collectSettings + label live).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-06-23 00:27:45 +02:00 committed by GitHub
parent 0c263faac0
commit 7bfedb0901
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 75 additions and 5 deletions

View file

@ -263,6 +263,14 @@ Côté client, pilotable depuis `stt/client/config/` + l'écran de réglages du
démarrage et **retombe en silence** proprement si le modèle/paquet manque (`engine._synth_kokoro`).
La synthèse est enfichable (`engine._synthesize`) — Piper reste le repli.
**Volume de la voix** : réglable **à chaud** dans le HUD (Réglages → « Volume de la voix », 0200 %)
ou via `[voice].tts_volume` (0.0 muet … 2.0 amplifié). Gain appliqué au WAV avant lecture, commun
aux deux moteurs (`engine._apply_gain`) ; persisté côté HUD (localStorage).
**Fenêtrage** : `[ui].window_mode = "app"` (fenêtre déplaçable/redimensionnable, type Discord) |
`"kiosk"` (plein écran) | `"none"`. `stt --window app` **persiste** désormais le choix (relu par le
service au prochain `stt --restart`).
**Changer de voix Piper (homme/femme)** : `stt --voices` liste les voix FR ; `stt --install-voice
fr_FR-tom-medium` télécharge la voix (`.onnx` + `.onnx.json` depuis HuggingFace rhasspy/piper-voices)
**et la sélectionne** (`tts_engine=piper` + `piper_voice` écrits dans `stt.toml`). Puis `stt --restart`.