From 98706ef3ec5d358a98a527c4fd9e977ec648a825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Schl=C3=BCter?= Date: Wed, 17 Jun 2026 10:44:48 +0200 Subject: [PATCH] docs+ux(voice_loop): klarer Hinweis auf ALSA-Direktgeraet bei Aufnahme-Fehler Auf PipeWire-Systemen kann der pw-record/ALSA-default-Pfad scheitern ("pw_context_connect() failed"). Direkter Zugriff via arecord -D plughw:KARTE,0 funktioniert. voice_loop gibt bei leerer Aufnahme jetzt diesen konkreten Tipp aus; Bedienungsanleitung entsprechend ergaenzt (Recorder-Hinweis + Troubleshooting). Co-Authored-By: Claude Opus 4.8 --- BEDIENUNGSANLEITUNG.md | 13 +++++++++---- scripts/voice_loop.py | 6 +++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/BEDIENUNGSANLEITUNG.md b/BEDIENUNGSANLEITUNG.md index 082a921..6e11f4e 100644 --- a/BEDIENUNGSANLEITUNG.md +++ b/BEDIENUNGSANLEITUNG.md @@ -114,9 +114,14 @@ python scripts/voice_loop.py --file frage.wav # ohne Mikrofon: WAV senden ``` > **Aufnahmewerkzeug:** `--recorder auto` (Standard) bevorzugt **PipeWire** (`pw-record`), -> sonst `parecord`/`arecord`. Gibt `arecord` den Fehler *„Fehler beim Öffnen des -> Gerätes"* aus, nutze `--recorder pw-record` (auf PipeWire-Systemen der Normalfall) -> oder gib mit `--device` ein konkretes Gerät an. +> sonst `parecord`/`arecord`. **Falls die Aufnahme scheitert** (z. B. +> *„pw_context_connect() failed"* oder *„Fehler beim Öffnen des Gerätes"*), ist der +> verlässlichste Weg ein **direktes ALSA-Hardware-Gerät**: +> ```bash +> arecord -l # Kartennummern der Mikrofone +> python scripts/voice_loop.py --recorder arecord --device plughw:2,0 +> ``` +> (`plughw:KARTE,GERÄT` aus `arecord -l`; z. B. onboard oft Karte 2, USB-Webcam Karte 4.) ## A2. Nur tippen → Antwort hören @@ -377,7 +382,7 @@ curl -s "$URL/api/metrics?format=prometheus" # Prometheus-Text (kein jq) | HTTP **502** bei STT/TTS | Cloud-Fehler/Format | `make smoke` ausführen; Modellnamen in `.env` prüfen | | `VA_PROFILE` wirkt nicht | `DEFAULT_*_PROVIDER` in `.env` überschreibt | diese Zeilen in `.env` auskommentieren | | `Address already in use` | Port belegt | anderen `PORT` setzen | -| `arecord: Fehler beim Öffnen des Gerätes` | ALSA-`default` auf PipeWire nicht nutzbar | `--recorder pw-record` (Standard bei `auto`) oder `--device` mit Gerät aus `arecord -L` | +| `pw_context_connect() failed` / `arecord: Fehler beim Öffnen des Gerätes` | PipeWire-Client- bzw. ALSA-`default`-Pfad gestört | direktes Gerät nehmen: `arecord -l`, dann `--recorder arecord --device plughw:2,0` | | Keine Aufnahme/Wiedergabe | Werkzeug/Gerät fehlt | `arecord -L` / `aplay -L`; Pakete `pipewire`/`alsa-utils`/`ffmpeg`; Default via `wpctl status` | | Profil greift nicht | `config/voice-assistant.toml` fehlt | aus `*.example.toml` kopieren (Abschnitt 2) | diff --git a/scripts/voice_loop.py b/scripts/voice_loop.py index 43dc4e7..3822552 100644 --- a/scripts/voice_loop.py +++ b/scripts/voice_loop.py @@ -184,7 +184,11 @@ async def run(args) -> None: print("\nEnde.") return if len(wav) < 1000: - print(" (zu kurz/leer – nochmal)") + print(" ⚠ Keine/zu kurze Aufnahme. Moegliche Ursache: Aufnahmewerkzeug" + " oder Geraet nicht nutzbar.") + print(" Verfuegbare Mikrofone: arecord -l") + print(" Direktes ALSA-Geraet verwenden, z. B.:") + print(" python scripts/voice_loop.py --recorder arecord --device plughw:2,0") continue await one_turn(ws, wav, start_frame)