diff --git a/README.md b/README.md index 8c095bd..ab930dd 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,51 @@ Say-Flags (gelten auch für `talk "Text"`): `--wait`, `--now`, `--priority`, `--voice`, `--lang`, `--provider`. **Hinweis:** In diesem Stand ist `say` (und der Default-Aufruf -`talk "Text"`) implementiert — die erste Ansage über OS-TTS (blockierend; +`talk "Text"`) implementiert — inklusive der kompletten Provider-Kette +(ElevenLabs → OpenAI → Edge-TTS → OS-Stimme, blockierend; Daemon-Anbindung folgt). Alle anderen Befehle sind Stubs und melden `not implemented yet` (Exit-Code ≠ 0). +### Provider-Kette (Task 03) + +Ohne Pin läuft die Vier-Stufen-Fallback-Kette +**ElevenLabs → OpenAI TTS → Edge-TTS → OS built-in**: Bei fehlendem Key, +HTTP-Fehler, Timeout oder Netz-Problem fällt die Kette automatisch auf die +nächste Stufe; jeder Fallback wird auf stderr protokolliert (nie still). +Pinnen per `--provider=` oder `provider = ""` in der +config.toml. + +| Stufe | Key (Env) | Default-Endpunkt | Audio | +| --- | --- | --- | --- | +| `elevenlabs` | `TALK_ELEVENLABS_KEY` | `https://api.elevenlabs.io` | mp3 | +| `openai` | `TALK_OPENAI_KEY` | `https://api.openai.com` | mp3 | +| `edge` | — (kostenlos) | `wss://speech.platform.bing.com/...` | mp3 | +| `osbuiltin` | — | lokale OS-TTS | WAV/PCM | + +Keys laufen ausschließlich über Env-Variablen (nie in die config.toml). +Endpunkte sind konfigurierbar — Datei `[providers.] endpoint = "…"` +bzw. Env `TALK_ELEVENLABS_ENDPOINT` / `TALK_OPENAI_ENDPOINT` / +`TALK_EDGE_ENDPOINT` (Env schlägt Datei; so zeigen Tests/CI die Kette auf +Fake-Server). Das OpenAI-Modell ist konfigurierbar +(`[providers.openai] model`, Default `tts-1`). + +Stimmen: neutralen Repo-Defaults je Provider+Sprache (ElevenLabs +„Rachel", OpenAI „alloy", Edge `de-DE-KatjaNeural`/`en-US-AriaNeural`) +kann man pro Sprache überordnen — config.toml: + +```toml +[voice.elevenlabs] +de = "21m00Tcm4TlvDq8ikWAM" # eigene Stimme je Sprache +en = "21m00Tcm4TlvDq8ikWAM" + +[voice.edge] +de = "de-DE-KatjaNeural" +``` + +Rangfolge: `--voice`-Flag > `voice..` > Repo-Default. +MP3 wird von der Binärdatei selbst dekodiert (reiner Go-Dekoder, kein +ffmpeg, CGO-frei). + ### OS-TTS auf Linux (Dev-Abhängigkeit espeak) Der OS-Provider `osbuiltin` nutzt auf Linux zwei Wege: