mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-09 01:44:43 +02:00
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>
78 lines
3.9 KiB
TOML
78 lines
3.9 KiB
TOML
# Configuration du CLIENT STT — copier vers ~/.config/stt/stt.toml (`stt --setup` le génère).
|
|
# Reflète les défauts embarqués (stt/client/stt/config.py : DEFAULT_CONFIG).
|
|
# Le client n'a plus de cerveau : il envoie le texte au STT-server (in-cluster).
|
|
|
|
[server]
|
|
url = "http://stt.lab.local" # endpoint du STT-server (paramétrable)
|
|
timeout_sec = 90
|
|
model = "hermes-default" # modèle demandé au serveur
|
|
# Noms courts (--model / commande /model) : hermes=hermes-default, qwen=qwen3-8b,
|
|
# claude=claude-sonnet-4-6, opus=claude-opus-4-7. Sinon mets un alias LiteLLM brut.
|
|
|
|
[voice]
|
|
wake_word = "hermes" # "Ok Hermès"
|
|
whisper_model = "large-v3" # STT faster-whisper (CPU int8) — "small" pour tester
|
|
tts_engine = "piper" # "piper" (rapide) | "kokoro" (plus naturel — voir ci-dessous)
|
|
tts_volume = 1.0 # volume voix : 0.0 muet · 1.0 normal · 2.0 amplifié (réglable dans le HUD)
|
|
piper_voice = "fr_FR-upmc-medium" # voix Piper — ~/.local/share/piper/<voix>.onnx
|
|
# Voix Kokoro (si tts_engine = "kokoro") : `stt --install-kokoro` + `pipx inject stt kokoro-onnx`
|
|
# kokoro_voice = "ff_siwis" # voix FR (femme) ; kokoro_speed = 1.0 ; kokoro_lang = "fr-fr"
|
|
language = "fr"
|
|
silence_sec = 1.2
|
|
min_speech_sec = 0.6
|
|
chat_timeout_sec = 60
|
|
|
|
# theme / avatar sont désormais réglés dans le HUD (drawer Réglages, mémorisé en
|
|
# localStorage) — ces deux clés sont gardées pour compat mais ignorées par le HUD.
|
|
[ui]
|
|
theme = "arc-reactor"
|
|
avatar = "default"
|
|
kiosk = true # (compat) plein écran si window_mode absent
|
|
window_mode = "kiosk" # "app" (fenêtre, type Discord) | "kiosk" (plein écran) | "none"
|
|
ws_host = "127.0.0.1"
|
|
ws_port = 9300 # websocket états ↔ HUD (doit matcher hud/index.html)
|
|
http_port = 9301 # HTTP statique qui sert le HUD
|
|
|
|
[memory]
|
|
enabled = true # cache local de conversation (brut, gitignoré)
|
|
local_db = "~/.local/share/stt/memory.sqlite"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Portail de services — tuiles + pages détail (santé live) + voix « ouvre <x> ».
|
|
# Définir [[services]] ici REMPLACE entièrement la liste par défaut (homelab Funk).
|
|
# Champs : id, name, url, icon, aliases (voix) ; + pour la page détail (optionnel) :
|
|
# description : phrase « ce que fait le service »
|
|
# health_url : endpoint sondé (up/down + latence) ; défaut = url
|
|
# components : briques dont dépend le service ; prom = PromQL renvoyant 1/0
|
|
# alerts_match: labels Alertmanager — alerte affichée si TOUS matchent
|
|
# ---------------------------------------------------------------------------
|
|
# [[services]]
|
|
# id = "grafana"
|
|
# name = "Grafana"
|
|
# url = "http://grafana.lab.local"
|
|
# icon = "📊"
|
|
# aliases = ["graphana", "metriques", "monitoring", "dashboard"]
|
|
# description = "Tableaux de bord et visualisation des métriques."
|
|
# health_url = "http://grafana.lab.local/api/health"
|
|
# alerts_match = { namespace = "monitoring" }
|
|
#
|
|
# [[services.components]]
|
|
# name = "Pod"
|
|
# prom = 'kube_pod_status_ready{namespace="monitoring",pod=~".*grafana.*",condition="true"}'
|
|
|
|
# Santé live des pages détail (sondage non bloquant côté client) :
|
|
# [portal]
|
|
# status_enabled = true
|
|
# status_interval_sec = 15
|
|
# probe_timeout_sec = 4
|
|
# prometheus_url = "http://prometheus.lab.local"
|
|
# alertmanager_url = "http://alertmanager.lab.local"
|
|
|
|
# Intentions vocales (lecture seule), reconnues avant le LLM :
|
|
# « ouvre <service> » → ouvre la page
|
|
# « état du cluster / des services » → résumé de santé (parlé)
|
|
# « combien sur mon ghostfolio » → valeur du portefeuille (ci-dessous)
|
|
# Ghostfolio : access_token = « Security token » du compte (Réglages Ghostfolio).
|
|
# Source UNIQUE du jeton — le client le transmet au serveur, qui appelle l'API.
|
|
# [ghostfolio]
|
|
# access_token = "TON_SECURITY_TOKEN"
|