Voice Assistant Gateway --- Modulares FastAPI-Gateway für einen **seniorengerechten Sprachassistenten** — cloud-first, aber hybrid/lokal betreibbar, mit austauschbaren STT-/LLM-/TTS-Providern. Jede Achse — Hardware, Betrieb, Software — ist frei konfigurierbar, ohne Code zu ändern.
  • Python 73.7%
  • JavaScript 19.1%
  • HTML 4.7%
  • Shell 1.9%
  • Makefile 0.5%
Find a file
Dieter Schlüter b38992cf28 feat(admin): vollständiges Admin-Panel in der Web-UI (Phase 1)
Ersetzt das rudimentäre Nutzer-Dropdown durch ein vollwertiges
Admin-Panel-Overlay mit 5 Tabs:

Nutzer:      Anlegen (Token einmalig), Umbenennen, Token-Reset,
             Löschen, Erinnerungen verwalten (anzeigen/add/delete)
Gespräche:   Nutzer → Sessions → Transkript (Chat-Bubble-Ansicht)
Notfälle:    Tabelle aller emergency_events mit Zeitstempel/Kategorie
Status:      Gateway-Status, Provider-Config, Laufzeit-Metriken
Metriken:    Nutzungsstatistik pro Nutzer + Gesamtsumme

Backend: 7 neue Admin-Endpunkte in admin.py, 5 neue Store-Methoden.
Design: Tailwind CSS, Tag/Nacht-Modus, responsiv.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 01:04:20 +02:00
app feat(admin): vollständiges Admin-Panel in der Web-UI (Phase 1) 2026-06-19 01:04:20 +02:00
config feat(llm): lokales llama.cpp-Modell (va_llm) als zentrale, sprachoptimierte KI 2026-06-18 02:57:57 +02:00
deploy docs(deploy): Chatterbox-TTS-Dienst (GPU-Pinning per UUID, no_playback) ergaenzen 2026-06-18 09:58:15 +02:00
Docs feat(tts): Chatterbox-Provider (hohe Qualitaet + Voice-Cloning) anbinden 2026-06-18 09:44:31 +02:00
scripts fix(terminal): Barge-in funktioniert jetzt in beiden Phasen 2026-06-19 00:39:00 +02:00
tests feat(tts): Chatterbox-Provider (hohe Qualitaet + Voice-Cloning) anbinden 2026-06-18 09:44:31 +02:00
.env.example feat(tts): Chatterbox-Provider (hohe Qualitaet + Voice-Cloning) anbinden 2026-06-18 09:44:31 +02:00
.gitignore feat: Token-Level-LLM-Streaming über WebSocket (#4 Ausbau) 2026-06-17 04:37:37 +02:00
BEDIENUNGSANLEITUNG.md fix(terminal): Barge-in funktioniert jetzt in beiden Phasen 2026-06-19 00:39:00 +02:00
chat_client.py Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament 2026-06-17 01:48:56 +02:00
docker-compose.yml Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament 2026-06-17 01:48:56 +02:00
Dockerfile Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament 2026-06-17 01:48:56 +02:00
LICENSE.md docs: Lizenz auf proprietaer (alle Rechte vorbehalten) umstellen 2026-06-18 11:03:15 +02:00
Makefile feat(llm): lokales llama.cpp-Modell (va_llm) als zentrale, sprachoptimierte KI 2026-06-18 02:57:57 +02:00
pyproject.toml perf(tts): piper in-process mit gecachtem Modell statt Subprozess pro Satz 2026-06-18 08:22:04 +02:00
README.md docs: Dokumentation vollständig überarbeitet und neu strukturiert 2026-06-18 16:55:05 +02:00

Voice Assistant Gateway

Modulares FastAPI-Gateway für einen seniorengerechten Sprachassistenten — cloud-first, aber hybrid/lokal betreibbar, mit austauschbaren STT-/LLM-/TTS-Providern. Jede Achse — Hardware, Betrieb, Software — ist frei konfigurierbar, ohne Code zu ändern.


Features

  • Sprach-Pipeline: STT → Input-Cleaner → LLM → Spoken-Adapter → TTS-Normalizer → TTS
  • Provider austauschbar über Registry: OpenRouter (Cloud), faster-whisper (STT lokal), piper (TTS lokal, schnell), chatterbox (TTS lokal, hohe Qualität + Voice-Cloning)
  • Geschichtete Konfiguration mit Profilen (cloud / hybrid / local-dev)
  • Routing auf jeder Ebene: Global → Profil → Nutzer → Session → Request
  • Authentifizierung (Bearer-Token) + persistente Nutzer/Sessions (SQLite)
  • Resilienz: Fallback-Ketten je Modul + In-Memory-Metriken (JSON + Prometheus)
  • Gesprächsgedächtnis pro Session (Verlauf) + Langzeit-Erinnerungen pro Nutzer (manuell + automatisch)
  • WebSocket-Streaming: Token-Streaming (LLM), Audio-Streaming (satzweises TTS), Sprach-Eingang, VAD, Barge-in
  • Notfall-Eskalation: zweistufig (Stichwörter + LLM-Klassifikation im Hintergrund)
  • Web-Interface unter / (Tailwind, kein Build, mobiltauglich)
  • Keine Secrets im Code — API-Keys nur über die Umgebung

Schnellstart (30 Sekunden)

python3 -m venv .venv && source .venv/bin/activate
pip install -U pip && pip install -e .[test]
cp config/voice-assistant.example.toml config/voice-assistant.toml
export OPENROUTER_API_KEY=sk-or-v1-...   # für Cloud/Hybrid; bei local-dev nicht nötig
make run

Fehlt .env, wird sie aus .env.example erzeugt. Gateway läuft auf http://localhost:8080 (oder dem in .env gesetzten PORT).

curl http://localhost:8080/health        # {"status":"ok"}
curl http://localhost:8080/api/config    # aktives Profil + aufgelöste Provider

Sprechen → Antwort hören (CLI-Loop):

python scripts/voice_loop.py --session mein-gespraech

Web-Interface: Browser → http://localhost:8080/


Dokumentation

Dokument Zielgruppe Inhalt
BEDIENUNGSANLEITUNG.md alle Installation, Betriebsprofile, Bedienung, Konfiguration, Admin, Deployment, Fehlerbehebung, Referenz
Docs/voice-assistant-architecture.md Entwickler Architekturprinzipien, Interfaces, Pipeline, Roadmap, Verzeichnisstruktur
deploy/README.md Admin Remote-Betrieb: nginx, YunoHost-SSO, systemd, Firewall, Chatterbox

Einstiegspunkte je Zielgruppe:

  • 👤 Endnutzer → BEDIENUNGSANLEITUNG § 5 (Bedienung)
  • 🔧 Admin/Betreiber → BEDIENUNGSANLEITUNG § 24 (Installation + Profile), § 711 (Betrieb)
  • 💻 Entwickler → BEDIENUNGSANLEITUNG § 2 + Architektur-Dokument

Projektstruktur (Kurzform)

app/         Gateway: config, api/, core/, audio/, pipeline/, providers/
config/      voice-assistant.example.toml  (lokale .toml ist gitignored)
deploy/      systemd-Unit, nginx-Vorlage, env-Beispiel
scripts/     voice_loop.py, chat_client.py, smoke_e2e.py, add_pronunciation.py
scripts/llm-server/   start/stop/status-llm-server.sh (llama.cpp-Docker)
tests/       Pytest-Suite (offline + smoke)
Docs/        Architektur-Dokument

Lizenz

Proprietär — alle Rechte vorbehalten. Siehe LICENSE.md.