diff --git a/.env.example b/.env.example index 4b86bec..59d30ad 100644 --- a/.env.example +++ b/.env.example @@ -34,6 +34,8 @@ VA_PROFILE= # Zeilen unten ueberschreiben daher ein gesetztes VA_PROFILE. Wer profilbasiert # umschalten will, sollte sie auskommentiert lassen. OPENROUTER_STT_MODEL=openai/whisper-large-v3 +# Stimme haengt vom Modell ab (Gemini: Zephyr/Puck/Kore/...; OpenAI: alloy/echo/nova/...). +# Stimmenliste + Umstellen pro Aufruf: siehe BEDIENUNGSANLEITUNG ("Stimme des Cloud-TTS"). OPENROUTER_TTS_MODEL=openai/gpt-4o-mini-tts OPENROUTER_TTS_VOICE=alloy OPENROUTER_LLM_MODEL=openai/gpt-4.1-mini diff --git a/BEDIENUNGSANLEITUNG.md b/BEDIENUNGSANLEITUNG.md index 0ca8c8b..7042101 100644 --- a/BEDIENUNGSANLEITUNG.md +++ b/BEDIENUNGSANLEITUNG.md @@ -294,6 +294,38 @@ und Abkürzungen („Dr." → „Doktor", „z. B." → „zum Beispiel"). Reine ``` Danach den Server einmal neu starten. +**Stimme des Cloud-TTS (OpenRouter) wählen:** Das Gateway pflegt **keine** eigene +Stimmenliste — es reicht den Namen aus `OPENROUTER_TTS_VOICE` unverändert an OpenRouter +weiter. Welche Stimmen gültig sind, bestimmt das gewählte **TTS-Modell** +(`OPENROUTER_TTS_MODEL`). Aktuell aktiv: Modell `google/gemini-3.1-flash-tts-preview`, +Stimme `Zephyr`. + +Verfügbare Stimmen je Modell (laut Anbieter-Doku — Preview, im Zweifel ausprobieren): +- **Gemini-TTS** (aktiv) — ~30 mehrsprachige Stimmen, u. a. `Zephyr`, `Puck`, `Charon`, + `Kore`, `Fenrir`, `Leda`, `Orus`, `Aoede`, `Callirrhoe`, `Autonoe`, `Enceladus`, + `Iapetus`, `Umbriel`, `Algieba`, `Despina`, `Erinome`, `Algenib`, `Rasalgethi`, + `Laomedeia`, `Achernar`, `Alnilam`, `Schedar`, `Gacrux`, `Pulcherrima`, `Achird`, + `Zubenelgenubi`, `Vindemiatrix`, `Sadachbia`, `Sadaltager`, `Sulafat`. +- **OpenAI `gpt-4o-mini-tts`** (Code-/TOML-Default) — `alloy`, `ash`, `ballad`, `coral`, + `echo`, `fable`, `nova`, `onyx`, `sage`, `shimmer`, `verse`. + +> Es gibt keinen Endpoint, der TTS-Stimmen auflistet, und die Modelle sind Preview. +> **Authentischster Test:** Stimme setzen und probieren — ein ungültiger Name liefert +> einen OpenRouter-Fehler (HTTP 502 mit Klartext, der oft die gültigen Stimmen nennt). + +Umstellen: +```bash +# global (dann Server neu starten): +echo 'OPENROUTER_TTS_VOICE=Puck' >> .env +# pro Aufruf (überschreibt den Default für genau diesen Request): +curl -s -X POST "$URL/api/speak" -H 'Content-Type: application/json' \ + -d '{"text":"Probe","voice":"Kore","tts_provider":"openrouter"}' --output probe.pcm +# anderes TTS-Modell (andere Stimmenfamilie): +echo 'OPENROUTER_TTS_MODEL=openai/gpt-4o-mini-tts' >> .env +``` +Das Feld `voice` gibt es im Body von `/api/speak` und `/api/chat`. Hinweis: +`scripts/voice_loop.py` hat **keine** `--voice`-Option — dort gilt der Server-Default. + ## B2. Soundquelle & Ausgabe-Gerät wechseln (Mikrofon, Lautsprecher, Bluetooth, Handy) > **Wichtig — aktueller Stand:** Die Geräte-Endpunkte **im Gateway**