Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament

- FastAPI-Gateway mit REST-Endpunkten (chat/speak/transcribe/devices/sessions/config)
- Geschichtete Konfiguration mit Profilen (local-dev/hybrid/cloud) via TOML + ENV
- Registry-Pattern + einheitliche Route-Aufloesung (Default->Profil->ENV->Session->Request)
- Device Router (strikt, Singleton) und Output-Lifecycle im Orchestrator
- OpenRouter-Adapter (STT multipart/LLM/TTS) + lokale Provider-Stubs
- Regelbasierte Pipeline (Cleaner/Spoken-Adapter/TTS-Normalizer)
- 22 automatisierte Tests; Doku: README, BEDIENUNGSANLEITUNG, Architektur
- Secrets ausschliesslich ueber Umgebung; .env und lokale config gitignored

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-17 01:48:56 +02:00
commit 293ed257db
72 changed files with 2612 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# Zentrale Konfiguration des Voice-Assistant-Gateways.
#
# WICHTIG: Secrets (API-Keys) gehoeren NICHT in diese Datei -> ausschliesslich
# ueber Umgebungsvariablen (z. B. OPENROUTER_API_KEY).
#
# Praezedenz (hoeher gewinnt):
# eingebaute Defaults < diese TOML-Datei < ENV/.env < Session-Route < Request
#
# Aktives Profil waehlen via ENV: VA_PROFILE=local-dev | hybrid | cloud
# Eigenen Pfad setzen via ENV: VA_CONFIG_FILE=/pfad/zu/voice-assistant.toml
#
# Diese Datei nach config/voice-assistant.toml kopieren und anpassen.
# Basiswerte, die fuer alle Profile gelten (von Profilen ueberschreibbar).
[defaults]
default_language = "de"
default_input_endpoint = "local-default"
default_output_endpoint = "local-default"
openrouter_stt_model = "openai/whisper-large-v3"
openrouter_tts_model = "openai/gpt-4o-mini-tts"
openrouter_tts_voice = "alloy"
openrouter_llm_model = "openai/gpt-4.1-mini"
local_llm_base_url = "http://127.0.0.1:11434/v1"
local_llm_model = "llama3.1"
# Reines lokales Setup (eigene Hardware/KI) - z. B. fuer Entwicklung/Offline-Test.
[profiles.local-dev]
default_stt_provider = "faster-whisper"
default_llm_provider = "local-openai-compatible"
default_tts_provider = "piper"
# Hybrid: STT/TTS remote, Haupt-LLM lokal.
[profiles.hybrid]
default_stt_provider = "openrouter"
default_llm_provider = "local-openai-compatible"
default_tts_provider = "openrouter"
# Voll-Cloud: alle KI-Module remote (Standard fuer den produktiven vHost-Betrieb).
[profiles.cloud]
default_stt_provider = "openrouter"
default_llm_provider = "openrouter"
default_tts_provider = "openrouter"