Add reproducible Piper TTS service
This commit is contained in:
@@ -22,6 +22,7 @@ Heimnetz / VPN-Clients
|
||||
+-- llama-medium > exakt einer aktiv
|
||||
+-- llama-long --/
|
||||
+-- llama-experimental
|
||||
+-- Piper-TTS (CPU, nur intern)
|
||||
+-- internes MCP-Netz
|
||||
+-- Web-MCP + TinySearch + SearXNG
|
||||
+-- Home-Assistant-MCP-Relay
|
||||
@@ -37,6 +38,7 @@ Heimnetz / VPN-Clients
|
||||
| Profile Router | nur WireGuard, Port 8081 | OpenAI-API und Profilwahl |
|
||||
| Profile Controller | nein | startet ausschließlich vier bekannte Profile |
|
||||
| llama.cpp Profile | nein | Inferenz, Tool Calling, integrierte Vision |
|
||||
| Piper | nein | lokale deutsche Text-to-Speech-Ausgabe |
|
||||
| MCP-Tool-Stack | nein | voneinander getrennte Werkzeugbereiche |
|
||||
| SearXNG/TinySearch | nein | Suchbackend des Web-MCP |
|
||||
|
||||
@@ -80,8 +82,11 @@ nicht automatisch in die Produktionsprofile aufgenommen.
|
||||
|
||||
## Optionale Erweiterungen
|
||||
|
||||
Bildgenerierung, Whisper und TTS benötigen eigene Modelle und bleiben im
|
||||
Basissystem deaktiviert. Home Assistant, ARR und Unraid sind vorbereitete
|
||||
Piper läuft als eigener CPU-Container und wird von Open WebUI über den Router
|
||||
angesprochen. Sein Port wird nicht veröffentlicht. Das Stimmenmodell liegt im
|
||||
persistenten Volume `piper-data` und wird beim ersten Start reproduzierbar
|
||||
nachgeladen. Bildgenerierung und Whisper bleiben im Basissystem deaktiviert.
|
||||
Home Assistant, ARR und Unraid sind vorbereitete
|
||||
MCP-Profile: Sie werden erst gestartet, wenn die jeweilige root-only
|
||||
Secret-Datei vorhanden ist. Multimodale Bildanalyse erfolgt direkt über Qwen
|
||||
plus Projektor. Nicht installierte Worker-Endpunkte antworten klar mit
|
||||
|
||||
@@ -38,6 +38,7 @@ Chats oder privaten Nutzdaten.
|
||||
| Werkzeug-/Kontextschutz | Große MCP-Antworten und wiederholte identische Aufrufe konnten Kontextfenster sprengen beziehungsweise Tool-Schleifen erzeugen. | Globaler Stability Guard begrenzt Resultate, verdichtet alte Inhalte profilabhängig und stoppt Wiederholungen; JSON-Schemas und Bilder werden nicht beschädigt. |
|
||||
| Leistungsdaten | Benchmarkdaten sollten sichtbar sein, ohne private Chat-Inhalte zu protokollieren. | Ein globaler Abschlussfilter schreibt ausschließlich technische Zahlen in eine lokal rotierende JSONL-Datei und zeigt eine knappe Statuszeile. |
|
||||
| Antwortaktionen | Wiederkehrende Nachbearbeitungen sollten bewusst per Klick statt als permanenter Zusatzprompt laufen. | Eine versionierte globale Action bietet lokale Kurzfassung, Checkliste, Diagnose, Unsicherheits-/Quellenprüfung, Thinking-Verbesserung und Markdown-Kopie; keine Schreib- oder Profilwechselaktion. |
|
||||
| Sprachausgabe | Beim ersten Leerhostaufbau war kein TTS-Dienst Bestandteil des Compose-Stacks. | Piper `piper-tts` 1.6.0 läuft als eigener interner CPU-Container mit persistenter deutscher Stimme; Open WebUI nutzt ihn ausschließlich über den authentifizierten Router. |
|
||||
|
||||
## Abnahmezustand am 21. August 2026
|
||||
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
| ARR-MCP | `arr-mcp` 1.0.1 plus dokumentierter Sonarr-Patch | eigener optionaler Container | optional |
|
||||
| Unraid-MCP | lokales `runraid`-Binary | eigener optionaler Container | optional |
|
||||
| Whisper | ggml-org/whisper.cpp | Service im Router-Deploy | optional |
|
||||
| XTTS-v2 | Coqui | Worker, Service und Lockdatei | optional |
|
||||
| Piper TTS | Open Home Foundation, `piper-tts` 1.6.0 | eigener interner CPU-Container, Stimme `de_DE-thorsten-high` | Kern |
|
||||
| FLUX.2 klein | Black Forest Labs | Worker und Modellmanifest | optional |
|
||||
| LLama-GUI | separates Upstream-Projekt | nur Betriebsrolle dokumentiert | optional |
|
||||
| Glances | Distribution | nur Betriebsrolle dokumentiert | optional |
|
||||
|
||||
@@ -76,7 +76,7 @@ Der Router übernimmt:
|
||||
- direkte integrierte Vision in allen Qwen-Profilen
|
||||
- FLUX-Hotswap zur Bildgenerierung
|
||||
- Whisper Speech-to-Text
|
||||
- XTTS Text-to-Speech
|
||||
- XTTS Text-to-Speech (historische Referenz; Zielsystem verwendet Piper)
|
||||
- Zustands- und Modellendpunkte
|
||||
|
||||
## Vision
|
||||
@@ -114,6 +114,9 @@ leitet das Bild dann direkt weiter und führt keinen Modellwechsel mehr aus.
|
||||
|
||||
### XTTS
|
||||
|
||||
Dieser Abschnitt beschreibt ausschließlich den alten Referenzhost. Im neuen
|
||||
Docker-Zielsystem ersetzt Piper (`de_DE-thorsten-high`) diesen Dienst.
|
||||
|
||||
- Modell: Coqui XTTS-v2
|
||||
- CPU-only
|
||||
- Stimme: `claribel`
|
||||
|
||||
@@ -69,7 +69,8 @@ laufen, sondern alle fachlichen Funktionen geprüft wurden.
|
||||
- [ ] FLUX erzeugt Standard- und High-Bild
|
||||
- [ ] Qwen-Profil wird nach FLUX wiederhergestellt
|
||||
- [ ] Whisper transkribiert deutsche und englische Testdatei
|
||||
- [ ] XTTS erzeugt deutsche WAV- und MP3-Ausgabe
|
||||
- [ ] Piper ist gesund und erzeugt über den Router deutsche WAV- und MP3-Ausgabe
|
||||
- [ ] Stimme und `piper-tts`-Version entsprechen der Installationskonfiguration
|
||||
- [ ] STT/TTS blockieren das Textmodell nicht unzulässig
|
||||
|
||||
## Phase F – Sicherheitsprüfung
|
||||
|
||||
+18
-1
@@ -46,6 +46,9 @@ sudo ./install.sh --config config/install.env
|
||||
Wenn erstmals ein NVIDIA-Treiber installiert wurde, endet das Skript bewusst
|
||||
mit Code 20. Dann neu starten und denselben Befehl erneut ausführen. Das Skript
|
||||
ist auf Wiederholung ausgelegt und löscht keine vorhandenen Modelldateien.
|
||||
Beim ersten Stackstart lädt der interne Piper-Container die konfigurierte
|
||||
deutsche Stimme in sein persistentes Volume. Dadurch kann seine erste
|
||||
Bereitschaft je nach Internetverbindung etwas länger dauern.
|
||||
|
||||
Der Installer zeigt nur den öffentlichen WireGuard-Schlüssel. Diesen am
|
||||
Heim-Peer eintragen:
|
||||
@@ -72,9 +75,23 @@ sudo docker compose --env-file /etc/mike-ai/stack.env \
|
||||
curl http://<WIREGUARD-IP>:8081/health
|
||||
```
|
||||
|
||||
Die TTS-Verbindung wird für eine frische Open-WebUI-Datenbank automatisch als
|
||||
OpenAI-kompatibler Audio-Endpunkt des Routers vorbelegt. Der Router reicht sie
|
||||
intern an Piper weiter; Port 8085 wird nicht am Host veröffentlicht. Ein
|
||||
Ende-zu-Ende-Test ohne Ausgabe des API-Schlüssels:
|
||||
|
||||
```bash
|
||||
set -a; source /etc/mike-ai/stack.env; set +a
|
||||
curl -fsS http://127.0.0.1:8081/v1/audio/speech \
|
||||
-H "Authorization: Bearer $ROUTER_API_KEY" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"model":"piper","voice":"alloy","input":"Hallo von Athena.","response_format":"mp3"}' \
|
||||
-o /tmp/athena-piper-test.mp3
|
||||
```
|
||||
|
||||
Zusätzlich prüfen: Uni-LAN sieht keine KI-Ports; Heimnetz erreicht beide;
|
||||
gestopptes WireGuard lässt KI-Container nicht ins Internet; jeder Profilwechsel
|
||||
startet exakt einen llama-Container; Text, Tool Call und Bild funktionieren.
|
||||
startet exakt einen llama-Container; Text, Tool Call, Bild und Sprachausgabe funktionieren.
|
||||
|
||||
## Werkzeug-Container
|
||||
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@
|
||||
- IQ4_XS Pure für Medium
|
||||
- BF16-`mmproj` für die integrierte Vision aller Qwen-Profile
|
||||
- festgeschriebener llama.cpp-Commit
|
||||
- Router, Whisper, XTTS und Websuche
|
||||
- Router, Piper-TTS, Whisper und Websuche
|
||||
- spezialisierte MCPs nach Sicherheitsprofil
|
||||
- relevante Benchmarkresultate
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
8. Medium und Long einzeln testen.
|
||||
9. Router installieren und Profilwechsel testen.
|
||||
10. Web, HA, ARR und Unraid nacheinander hinzufügen.
|
||||
11. STT, TTS und den Projektor für integrierte Vision ergänzen.
|
||||
11. Piper-TTS prüfen; optional STT ergänzen und den Projektor für integrierte Vision prüfen.
|
||||
12. Standardbenchmark und Sicherheitsprüfung ausführen.
|
||||
13. Erst danach Clients umstellen.
|
||||
|
||||
|
||||
@@ -38,7 +38,8 @@
|
||||
- Terminal ausschließlich als isolierten `sandbox-mcp`, nie als Host-Shell.
|
||||
- Open WebUI, Hermes und weitere Clients mit denselben zentralen Endpunkten
|
||||
verbinden und pro Chat nur benötigte Werkzeuggruppen aktivieren.
|
||||
- Whisper, TTS oder Bildgenerierung jeweils als eigener Container.
|
||||
- Piper-TTS als eigener interner CPU-Container; Whisper oder Bildgenerierung
|
||||
bei Bedarf ebenfalls jeweils als eigener Container.
|
||||
|
||||
## Phase 5 – Betrieb
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ Pflichtrollen:
|
||||
- BF16 Vision-Projektor
|
||||
- Whisper large-v3-turbo
|
||||
- FLUX.2 klein
|
||||
- XTTS-v2 und verwendete Stimme
|
||||
- Piper `piper-tts` 1.6.0 und Stimme `de_DE-thorsten-high`
|
||||
|
||||
## 2. Externe Komponenten und Commits – teilweise gesichert
|
||||
|
||||
@@ -140,7 +140,7 @@ Empfehlung: System unter 85 Prozent, Modelllaufwerk unter 90 Prozent halten.
|
||||
Bereits gesichert:
|
||||
|
||||
- llama.cpp-Commit
|
||||
- zentrale Python-Versionen für FLUX und XTTS
|
||||
- zentrale Python-Versionen für FLUX und Piper
|
||||
- TinySearch-/SearXNG-Image-Digests
|
||||
|
||||
Noch offen:
|
||||
@@ -148,7 +148,7 @@ Noch offen:
|
||||
- vollständiges `pip freeze` je produktivem Venv
|
||||
- CUDA-kompatible Wheel-Quelle
|
||||
- FLUX-Revision
|
||||
- XTTS-Modellrevision
|
||||
- Piper-Paketversion und exakter Stimmenname
|
||||
- Whisper-Commit und Buildoptionen
|
||||
- Docker-Engine-/Compose-Version
|
||||
|
||||
|
||||
Reference in New Issue
Block a user