Автоматически переключать устройство ввода звука по умолчанию

Автоматически переключать устройство ввода звука по умолчанию

Я купил новый микрофон, который крепится к моему столу, в дополнение к беспроводной гарнитуре Logitech G930 с откидным микрофоном.

Когда я сижу за столом, я хочу, чтобы мой микрофон был устройством по умолчанию. Когда я встаю со стола и откидываю микрофон гарнитуры, я хочу, чтобы мое устройство ввода по умолчанию переключалось на него.

Когда я физически отключаю звук/поднимаю наушники, по-видимому, они отправляют какое-то событие в мою ОС, поскольку она знает, что звук отключен, и отображает это, например, здесь:

[ изображение]

Я провел небольшое исследование и нашел программное обеспечение, похожее нанирсофт, но как я вижу, нет способа получить состояние без звука. Очевидно, это можно сделать с помощью C++ CoreAudio Я бы предпочел не загружать 3 ГБ компилятора и Visual Studio только ради десятистрочного.

Существуют ли какие-либо привязки CoreAudio для других языков, таких как Python или Node.js/альтернативные инструменты, позволяющие добиться того, что мне нужно?

решение1

Я наконец-то добрался до решения этой проблемы с помощьюhttps://github.com/frgnca/AudioDeviceCmdlets/в PowerShell-скрипте.

$Microphone = "{0.0.1.00000000}.{50486949-aae2-4574-97fb-4660fd26b6f7}"
$Headset = "{0.0.1.00000000}.{4bf15a7e-d091-4bcb-ae8f-5cadfdcffca7}"

while (1) {
    $ActiveDevice = Get-AudioDevice -Recording
    $HeadSetObject = Get-AudioDevice -ID $Headset
    $HeadSetIsMuted = $HeadSetObject."Device"."AudioEndpointVolume"."Mute"
    if ($HeadSetIsMuted) {
        if ($ActiveDevice."ID" -eq $HeadSet) {
            Set-AudioDevice -ID $Microphone
        }
    } else {
        if ($ActiveDevice."ID" -eq $Microphone) {
            Set-AudioDevice -ID $Headset
        }
    }
    
    sleep 3;
}

Связанный контент