デフォルトのサウンド入力デバイスを自動的に切り替える

デフォルトのサウンド入力デバイスを自動的に切り替える

ヒンジアップマイク付きのLogitech G930ワイヤレスヘッドセットに加えて、デスクに取り付ける新しいマイクを購入しました。

デスクに座っているときは、そこにあるマイクをデフォルトのデバイスにしたいです。デスクを離れてヘッドセットのマイクを下げたら、デフォルトの入力デバイスをそのマイクに切り替えたいと思います。

ヘッドフォンを物理的にミュ​​ート/ヒンジアップすると、ミュートされたことが OS に認識され、次のように表示されるため、何らかのイベントが OS に送信されるようです。

[ 画像]

調べてみたところ、次のようなソフトウェアが見つかりましたニルソフトしかし、私の見るところ、ミュート状態を取得する方法はありません。どうやら、C++ CoreAudio で実行できるようですが、10 行のコードのためだけに 3GB のコンパイラと Visual Studio をダウンロードするのはやめておきます。

必要なことを実現するための、Python や Node.js/代替ツールなどの他の言語用の CoreAudio バインディングはありますか?

答え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;
}

関連情報