Bugfix: Audioverzerrung und PipeWire-Hang (Linux)

In diesem Dokument wird beschrieben, wie Sie Audioverzerrungen („Kirren“), Roboter-Sprachartefakte und System-Audio-Hänger beheben können, die auftreten können, wenn SL5-aura-service zusammen mit anderen Medienanwendungen wie OBS, AnyDesk oder Hochfrequenz-TTS-Streams verwendet wird.

Symptome

  • Sprachausgabe/-eingabe klingt verzerrt, metallisch oder „klirrend“.

  • System-Audio hängt mit der Meldung: „Verbindung zu PulseAudio wird hergestellt“ oder „Bitte warten“. – Totaler Audioverlust nach hoher CPU-Last oder gleichzeitiger Stream-Nutzung.

  • Journalprotokolle zeigen: „spa.alsa: hw:X: snd_pcm_status error: No such device“.

Grundursache

Auf Manjaro und anderen modernen Linux-Distributionen verwaltet PipeWire Audio. Verzerrungen entstehen normalerweise durch:

  1. Pufferunterläufe: Konflikt zwischen gleichzeitigen Streams (z. B. AnyDesk erfasst Audio, während TTS/OBS ausgeführt wird).

  2. Abweichung der Abtastrate: Häufiges Umschalten zwischen 44,1 kHz und 48 kHz.

  3. USB-Timing-Probleme: Hohe Buslast führt dazu, dass USB-Headsets (wie Plantronics/Poly) vorübergehend getrennt werden.


Lösungen

1. Sofortige Wiederherstellung (der „nukleare“ Reset)

Wenn der Audiostapel eingefroren oder verzerrt ist, beenden Sie alle audiobezogenen Prozesse. Sie werden sofort automatisch neu gestartet.

# Force kill PipeWire and its PulseAudio compatibility layer
killall -9 pulseaudio pipewire pipewire-pulse

2. Präventions- und Stabilitätseinstellungen

Deaktivieren Sie AnyDesk Audio

AnyDesk versucht häufig, sich mit dem Audiogerät zu verbinden, was zu Hardwarekonflikten führt.

  • Aktion: Öffnen Sie die AnyDesk-Einstellungen -> Audio -> Deaktivieren Sie “Audio übertragen” und “Audio reproduzieren”.

PipeWire-Abtastrate korrigieren (empfohlen)

Erzwingen Sie, dass PipeWire bei 48 kHz bleibt, um Resampling-Artefakte während der TTS-Wiedergabe zu vermeiden.

  1. Erstellen Sie das Konfigurationsverzeichnis: „mkdir -p ~/.config/pipewire“.

  2. Kopieren Sie die Standardkonfiguration: „cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/“.

  3. Bearbeiten Sie „~/.config/pipewire/pipewire.conf“ und legen Sie Folgendes fest:

    default.clock.rate = 48000
    
  4. Dienste neu starten:

    systemctl --user restart pipewire pipewire-pulse wireplumber
    

3. Wiederherstellung nach der Produktion (FFmpeg)

Wenn Sie eine Sitzung aufgezeichnet haben und der Ton verzerrt ist („klirrt“), verwenden Sie die folgende „ffmpeg“-Filterkette, um die Datei zu reparieren.

Empfohlener Reparaturbefehl

Dieser Befehl wendet einen Declipper, eine Rauschunterdrückung und einen Tiefpassfilter an, um hochfrequente digitale Artefakte zu entfernen, ohne das Video neu zu kodieren.

getestet und sehr gut:

ffmpeg -i input_video.mp4 
    -af "adeclip, afftdn, lowpass=f=5000, volume=1.5" \
    -c:v copy reparatur_output.mp4  

vielleicht besser mit (nicht getestet):

ffmpeg -i input_video.mp4 \
  -af "adeclip, afftdn, lowpass=f=3500, volume=1.8" \
  -c:v copy repaired_audio_output.mp4

nicht getestet:

ffmpeg -i input_video.mp4 -af "arnndn=m=cb.rnnn, lowpass=f=5000" -c:v copy ki_reparatur.mp4

Filteraufschlüsselung:

  • „adeclip“: Rundet digitale Clipping-Spitzen ab.

  • „afftdn“: Reduziert FFT-basiertes digitales Rauschen.

  • „lowpass=f=3500“: Schneidet Frequenzen über 3,5 kHz ab, bei denen das meiste „Klimpern“ auftritt (macht die Stimme klarer/wärmer).

  • „volume=1.8“: Kompensiert den Volumenverlust während der Filterung.

  • „-c:v copy“: Behält die ursprüngliche Videoqualität bei (extrem schnell).


Debugging-Tools

So überwachen Sie den Audiozustand während der Entwicklung in Echtzeit:

  • „pw-top“: Zeigt Echtzeitfehler (ERR-Spalte) und Pufferstatus an.

  • „journalctl –user -u pipewire“: Überprüft, ob Hardware-Verbindungsabbrüche vorliegen.