Add HTTP service, MCP adapter, systemd autostart; fix bugs and docs

- chatterbox_cli_v4.py: cooperative stop/interrupt via threading.Event;
  fix force_split_sentence (word boundary instead of mid-word cut);
  fix synthesize_streaming normalization order (split before preprocess)
- tts_service.py: FastAPI service with job queue, model cache, worker thread;
  LAN-accessible on 0.0.0.0:9999; audio_device default None (auto)
- mcp_adapter.py: MCP adapter (stdio + streamable-http) wrapping REST API;
  update docstring and default TTS_URL to port 9999
- requirements.txt: add fastapi, uvicorn, httpx, mcp
- README.md, BEDIENUNGSANLEITUNG.md: document service, MCP, AI integrations
  (Claude, Ollama, Open WebUI, llama.cpp, Home Assistant), systemd autostart
- CLAUDE.md: reflect current architecture (service + adapter now implemented)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-05-16 10:19:00 +02:00
commit d1971049ce
7 changed files with 494 additions and 146 deletions

View file

@ -13,13 +13,32 @@ Es wandelt geschriebenen Text in natürlich klingende Sprache um.
---
## Das Programm starten
## Automatischer Start im Hintergrund
Öffne ein Terminal und gib folgende Befehle ein:
Der Sprach-Service startet automatisch, sobald du dich am Computer anmeldest.
Du musst nichts weiter tun — er läuft im Hintergrund und wartet auf Anfragen.
Ob der Service läuft, prüfst du so:
```bash
systemctl --user status chatterbox-tts
```
Bei Problemen neu starten:
```bash
systemctl --user restart chatterbox-tts
```
---
## Das Kommandozeilen-Programm starten
Für die direkte Nutzung über das Terminal:
```bash
conda activate chatterbox
cd ~/Python_Programs/chatterbox
cd ~/chatterbox-tts-cli
```
---
@ -85,7 +104,7 @@ python chatterbox_cli_v4.py --lang en --text "Good morning, how are you?"
Mit `--speed` kann man einstellen, wie schnell der Text gesprochen wird.
- `1.0` = normale Geschwindigkeit (Standard)
- `0.85` = etwas langsamer — gut für ältere Hörer
- `0.85` = etwas langsamer — gut für entspanntes Zuhören
- `0.75` = deutlich langsamer
- `1.2` = etwas schneller
@ -149,6 +168,73 @@ python chatterbox_cli_v4.py --lang de \
---
## Den Service aus dem Netzwerk nutzen
Der Service ist im gesamten Heimnetzwerk erreichbar — zum Beispiel vom Handy,
Tablet oder einem anderen Computer.
**Text vorlesen lassen** (aus jedem Gerät im Netzwerk):
```bash
curl -X POST http://COMPUTER-IP:9999/speak \
-H "Content-Type: application/json" \
-d '{"text": "Hallo aus dem Netzwerk", "lang": "de"}'
```
`COMPUTER-IP` ersetzen durch die IP-Adresse dieses Computers (z. B. `192.168.1.42`).
**Aktuelle IP-Adresse herausfinden:**
```bash
hostname -I
```
**Ausgabe stoppen:**
```bash
curl -X POST http://COMPUTER-IP:9999/stop
```
---
## KI-Assistenten lassen vorlesen
Wenn du einen KI-Assistenten auf diesem oder einem anderen Gerät nutzt,
kann er den TTS-Service direkt ansprechen:
### Claude (Claude Code / Claude Desktop)
Claude ist bereits mit dem TTS-Service verbunden. Du kannst Claude einfach bitten,
etwas vorzulesen — er ruft den Service automatisch auf.
Beispiel-Anfrage an Claude:
> „Lies mir bitte diesen Text vor: ..."
### Home Assistant
In der `configuration.yaml` folgendes eintragen:
```yaml
rest_command:
tts_sprechen:
url: "http://COMPUTER-IP:9999/speak"
method: POST
content_type: "application/json"
payload: '{"text": "{{ text }}", "lang": "de"}'
```
Danach in einer Automation verwendbar:
```yaml
service: rest_command.tts_sprechen
data:
text: "Die Waschmaschine ist fertig."
```
### Ollama / LM Studio / Open WebUI
Lokale KI-Modelle (z. B. llama, qwen) können über eine kleine Hilfsklasse mit dem
Service verbunden werden — Details in der `README.md`.
---
## Typischer Arbeitsablauf
1. Text in einem Editor schreiben und als `.txt`-Datei speichern
@ -175,11 +261,17 @@ python chatterbox_cli_v4.py --lang de \
**Kein Ton zu hören:**
```bash
# Ausgabegerät prüfen
python -c "import sounddevice; print(sounddevice.query_devices())"
```
Dann `--audio-device pulse` oder das passende Gerät angeben.
**Service antwortet nicht:**
```bash
systemctl --user restart chatterbox-tts
# Warte 5 Sekunden, dann:
curl http://localhost:9999/health
```
**„Modell nicht gefunden":**
Beim ersten Start wird das Modell heruntergeladen (~2 GB).
Sicherstellen, dass eine Internetverbindung besteht.
@ -198,3 +290,5 @@ kann 3060 Sekunden brauchen. Mit GPU (CUDA) dauert es ca. 510 Sekunden.
nicht immer perfekt — mit der Aussprache-Datei lässt sich das korrigieren.
- Das Programm liest alles vor, was in der Datei steht — also auch
Überschriften und Metadaten wie „Schlagzeile:" oder „Stand:".
- Eine laufende Ausgabe kann erst am Ende des aktuellen Satzes unterbrochen
werden, nicht sofort mitten im Wort.