From 28eb07bcabe782dad6a6defdb2dfd7015f130c13 Mon Sep 17 00:00:00 2001 From: Julian Vollmer Date: Mon, 18 May 2026 18:36:10 +0200 Subject: [PATCH] Fix audio device: dynamische Kartensuche statt hardcoded plughw:2,0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nach Neustart wechselt die ALSA-Kartennummer (war 2, ist jetzt 1). find_audio_device() sucht per /proc/asound/cards nach dem USB-Gerät. Co-Authored-By: Claude Sonnet 4.6 --- app/main.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/main.py b/app/main.py index 73b1e59..6db1973 100644 --- a/app/main.py +++ b/app/main.py @@ -111,17 +111,31 @@ def stream(): # Minimale Latenz: kein HTTP-Buffering, kein Codec-Delay # --------------------------------------------------------------------------- -AUDIO_DEVICE = "plughw:2,0" AUDIO_SAMPLERATE = 16000 AUDIO_CHUNK = 512 # ~32ms bei 16kHz +def find_audio_device() -> str: + """Findet die USB-Soundkarte dynamisch anhand des Namens.""" + try: + with open("/proc/asound/cards") as f: + for line in f: + # Zeile mit Kartennummer: " 1 [Device ]: USB-Audio ..." + m = re.match(r"^\s*(\d+)\s+\[.*\].*USB", line) + if m: + return f"plughw:{m.group(1)},0" + except Exception: + pass + return "plughw:1,0" # Fallback + + @sock.route("/audio-ws") def audio_ws(ws): + device = find_audio_device() process = subprocess.Popen( [ "arecord", - "-D", AUDIO_DEVICE, + "-D", device, "-f", "S16_LE", "-r", str(AUDIO_SAMPLERATE), "-c", "1",