feat(cli): doctor, test, voices, setup — Einrichtung und Diagnose ohne TUI
Usability-Schicht für Nutzer, die kein Terminal-Handbuch lesen wollen: - `talk doctor`: eine Zeile je Prüfpunkt mit klarem Satz, was Sache ist und was zu tun wäre — Config (kaputt → ✘, die übrigen Prüfungen laufen mit Defaults weiter), Daemon (läuft / startet beim nächsten Sprechbefehl / fremder Dienst auf dem Port → ✘ mit Port-Hinweis), Audio (oto-Kontext wirklich initialisieren; null → ⚠), jede Provider-Stufe (Key-Env-Name, Endpunkt, Default-Stimme; OS-Stimme nennt den gefundenen Mechanismus), Mute (an → ⚠ mit unmute-Hinweis), Gesetze inkl. gerade aktiver Ruhezeit. --probe macht echte Synthese-Proben, --json liefert die Liste. Exit 0 ohne ✘. Windows-Konsolen bekommen [OK]/[WARN]/[FAIL]. - `talk test`: Testsatz direkt über den Sprech-Kern (nicht über den Daemon), nennt die Stufe, die wirklich gesprochen hat, Synthese- und Wiedergabezeit; Mute/Ruhezeit gelten bewusst nicht, Mute wird genannt. - `talk voices`: kuratierter Katalog mit Namen (ElevenLabs-Premade, OpenAI, Edge-Neural de/en-Locales) als Tabelle, „*“ = effektive Default-Stimme (Config vor Repo-Default), Config-IDs außerhalb des Katalogs als eigene Zeile, Filter --provider/--lang, --json. - `talk setup`: wenige Fragen statt Bubble Tea — Keys nur als Hinweis (ohne Key läuft die Edge-Stimme), Stimme je Sprache aus dem Katalog mit Probehören, Ruhezeit; schreibt die config.toml zusammengeführt mit bestehenden Werten (.bak), spricht einen Testsatz. q bricht ab, bevor etwas geschrieben wird; ohne Terminal keine Fragen, nur die wirksame Konfiguration. Unterbau: provider.Catalog/VoiceName/DefaultVoice, Chain.SpeakOutcome (Stufe, Bytes, Zeiten) durch speak.Engine bis in Daemon-Log und test, audio.Check (oto-Initialisierung ohne Ton), config.Path, OSBuiltin.Describe. README: Abschnitt „Erste Schritte“. Tests: voices-Zeilen (Default-Markierung, Config-Override, Filter, JSON), doctor (ohne Daemon, Mute/Key via JSON, fremder Dienst → Exit 1, kaputte Config → ✘ aber vollständiger Bericht), test (fake espeak), setup (stdin-Antworten → config.toml-Inhalt, Merge mit .bak, Abbruch schreibt nichts, Pipe stellt keine Fragen), Prozessgrenze: doctor/--probe/voices/ test gegen echten Daemon. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
92333ff1c3
commit
df9a9b30cf
20 files changed
+1639
-63
No files matched your search
@@ -21,19 +21,58 @@ Runtime-Abhängigkeiten.
|
||||
| `talk status` | Daemon-Status (Queue, Mute, Provider, Version) |
|
||||
| `talk cancel` | laufende und geplante Ansagen abbrechen |
|
||||
| `talk daemon run\|start\|stop` | Daemon im Vordergrund betreiben / im Hintergrund starten / stoppen (normalerweise nicht nötig, siehe unten) |
|
||||
| `talk voices` | verfügbare Stimmen anzeigen |
|
||||
| `talk test` | Test-Ansage ausgeben |
|
||||
| `talk doctor` | Selbstdiagnose des Setups |
|
||||
| `talk setup` | geführte Ersteinrichtung (Wizard) |
|
||||
| `talk voices` | bekannte Stimmen je Provider/Sprache, Default markiert (`--provider`, `--lang`, `--json`) |
|
||||
| `talk test` | Testsatz sprechen; zeigt Provider und Zeiten (`--lang`, `--provider`, `--voice`) |
|
||||
| `talk doctor` | Selbstdiagnose: Config, Daemon, Audio, Provider, Mute, Gesetze (`--probe`, `--json`) |
|
||||
| `talk setup` | Ersteinrichtung in wenigen Fragen: Stimmen probehören, Ruhezeit, config.toml |
|
||||
|
||||
Say-Flags (gelten auch für `talk "Text"`): `--wait`, `--now`, `--priority`,
|
||||
`--voice`, `--lang`, `--provider`.
|
||||
|
||||
**Hinweis:** In diesem Stand sind implementiert: `say` (und `talk "Text"`)
|
||||
mit der kompletten Provider-Kette und Daemon-Anbindung (non-blocking,
|
||||
Autostart, siehe unten), `mute`, `unmute`, `status`, `cancel`, `daemon`
|
||||
sowie `wrap`. Die übrigen Befehle sind Stubs und melden `not implemented
|
||||
yet` (Exit-Code ≠ 0).
|
||||
## Erste Schritte
|
||||
|
||||
```console
|
||||
talk doctor # Was ist da, was fehlt? Eine Zeile pro Punkt.
|
||||
talk test # Hörst du etwas? Welche Stimme war das?
|
||||
talk setup # Stimme aussuchen, Ruhezeit, fertig.
|
||||
talk "Hallo Welt" # Ab jetzt: Skripte und Agenten rufen genau das.
|
||||
```
|
||||
|
||||
Ohne jeden Key funktioniert talk sofort: Es nutzt die kostenlose Edge-
|
||||
Stimme von Microsoft (Internet nötig) und sonst die Stimme des
|
||||
Betriebssystems. Wer eine Premium-Stimme will, setzt `TALK_ELEVENLABS_KEY`
|
||||
oder `TALK_OPENAI_KEY` als Umgebungsvariable — Keys gehören nie in die
|
||||
config.toml.
|
||||
|
||||
### Diagnose und Einrichtung
|
||||
|
||||
- **`talk doctor`** berichtet zeilenweise mit ✔ (ok), ⚠ (Hinweis), ✘
|
||||
(Fehler): Config-Datei, Daemon (läuft / startet beim nächsten
|
||||
Sprechbefehl / fremder Dienst auf dem Port), Audio-Ausgabe (oto
|
||||
initialisierbar? `null` = kein Ton), jede Provider-Stufe (Key vorhanden,
|
||||
Endpunkt, Default-Stimme; OS-Stimme: welcher Mechanismus gefunden
|
||||
wurde), Mute, Gesetze inkl. aktiver Ruhezeit. Exit 0 ohne ✘, sonst 1;
|
||||
ein nicht laufender Daemon ist ⚠. `--probe` macht echte Synthese-Proben
|
||||
(Netz), `--json` liefert die Liste maschinenlesbar. Auf Windows-Konsolen
|
||||
stehen `[OK]`/`[WARN]`/`[FAIL]` statt der Symbole.
|
||||
- **`talk test`** spricht einen festen Testsatz direkt in diesem Prozess
|
||||
(nicht über den Daemon; Mute und Ruhezeit gelten hier nicht, ein aktives
|
||||
Mute wird genannt) und zeigt, welche Stufe gesprochen hat und wie lange
|
||||
Synthese und Wiedergabe gedauert haben.
|
||||
- **`talk voices`** listet den kuratierten Stimmen-Katalog (ElevenLabs-
|
||||
Premade, OpenAI, Edge-Neural je Locale) als Tabelle; `*` markiert die
|
||||
Stimme, die talk ohne `--voice` nimmt (config `voice.<provider>.<lang>`
|
||||
oder Repo-Default). Config-Einträge außerhalb des Katalogs erscheinen
|
||||
als eigene Zeile. Jede Voice-ID des Providers funktioniert auch ohne
|
||||
Katalog-Eintrag.
|
||||
- **`talk setup`** fragt im Terminal: Keys (nur Hinweis — ohne Key läuft
|
||||
die Edge-Stimme), Stimme für Deutsch und Englisch der aktiven Stufe
|
||||
(Nummer aus dem Katalog oder Voice-ID, probehören, übernehmen),
|
||||
Ruhezeit. Dann schreibt es die config.toml — eine bestehende Datei wird
|
||||
zusammengeführt (andere Einstellungen bleiben) und als `.bak` gesichert
|
||||
— und spricht einen Testsatz. `q` bricht jederzeit ab, geschrieben wird
|
||||
erst ganz am Ende. Ohne Terminal (Pipe, Agent) stellt setup keine Fragen
|
||||
und zeigt nur die wirksame Konfiguration.
|
||||
|
||||
## Daemon
|
||||
|
||||
|
||||
Reference in new issue
Block a user