Windows-Audio-Balance automatisch auf eine bestimmte L-R-Differenz einstellen mit Python

English Deutsch

Wenn Sie Ihre Lautsprecher nicht gleich weit von Ihren Ohren entfernen können, müssen Sie die Audio-Balance anpassen, um den wahrgenommenen Lautstärkeunterschied auszugleichen.

Windows ermöglicht es Ihnen, die Lautstärke nativ über die Systemeinstellungen zu kompensieren – jedoch gibt es ein kritisches Problem: Wenn Sie die Lautstärke jemals auf null setzen, gehen Ihre Balance-Einstellungen verloren und Sie müssen sich durch zahlreiche Dialoge klicken, um sie neu zu konfigurieren.

In unserem vorherigen Beitrag Windows-Audio-Balance mit Python einstellen haben wir gezeigt, wie man die pycaw-Bibliothek verwendet (siehe diesen Beitrag für Installationsanweisungen usw).

Das folgende Python-Skript kann ausgeführt werden, um die Audio-Balance einzustellen. Es wurde entwickelt, um die mittlere (d.h. L+R) Lautstärke in dB beim Anpassen der Balance beizubehalten (d.h. es wird die Gesamtlautstärke nicht ändern und somit Ihre Trommelfelle schonen) und nimmt keine Anpassung vor, wenn die Balance bereits innerhalb von 0,1 dB liegt.

Setzen Sie desiredDelta auf Ihre gewünschte Links-Rechts-Differenz in dB (positive Werte bedeuten, dass der linke Lautsprecher lauter sein wird als der rechte)!

auto_set_audio_balance.py
from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
import math

# Standard-Audiogerät mit PyCAW abrufen
devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(
    IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))

# Aktuelle Lautstärke des linken Kanals abrufen
currentVolumeLeft = volume.GetChannelVolumeLevel(0)
# Lautstärke des rechten Kanals auf die Hälfte der Lautstärke des linken Kanals setzen
volumeL = volume.GetChannelVolumeLevel(0)
volumeR = volume.GetChannelVolumeLevel(1)
print(f"Vor Anpassung: L={volumeL:.2f} dB, R={volumeR:.2f} dB")

desiredDelta = 6.0 # Gewünschte Delta zwischen L und R. Positiv bedeutet L ist lauter!

delta = abs(volumeR - volumeL)
mean = (volumeL + volumeR) / 2.

# Balance neu konfigurieren, wenn Delta nicht
if abs(delta - desiredDelta) > 0.1:
    # Lautstärke anpassen
    volume.SetChannelVolumeLevel(0, mean + desiredDelta/2., None) # Left
    volume.SetChannelVolumeLevel(1, mean - desiredDelta/2., None) # Right
    # Neue Lautstärke abrufen & ausgeben
    volumeL = volume.GetChannelVolumeLevel(0)
    volumeR = volume.GetChannelVolumeLevel(1)
    print(f"Nach Anpassung: L={volumeL:.2f} dB, R={volumeR:.2f} dB")
else:
    print("Keine Anpassung erforderlich")

Check out similar posts by category: Audio, Python, Windows