Web会議の時は以下で紹介したオーディオテクニカの USB 接続のダイナミックマイクを利用しています。
私はまだまだテレワークが続いています。自宅でのテレワーク時にリモート会議をする際のマイクとして、ダイナミックマイクの「AT2040USB」を購入してみたので紹介。現在は「YAMAHA YVC-200」を快適に利用中自宅でテレ[…]
NVIDIA Broadcast
Ver.2 系がリリース
USB マイクの記事でも紹介しましたが、ノイズ除去のために「NVIDIA Broadcast」というソフトを利用してます。これまでは Ver.1.x 系を使ってましたが Ver.2 系にメジャーバージョンアップされていたのでアップグレードしました。
ただ、アップグレードしたことにより1点問題が発生しました。
マイクの入力レベルが高すぎる
アップグレード後にテストをしてなかったのが悪かったんですが、Web会議を行うと相手から音声がガビガビなんだけどと言われちゃって、なんだろうと思って原因を調べてみると、「NVIDIA Broadcast」を通すとマイクの入力レベルが高すぎて音割れしている状態になってました。。
音量レベルを調整してみると「NVIDIA Broadcast」のマイクのレベルを「60」にすることで音割れしないベストの音量になることがわかりました。
Windows を再起動するたびに「レベル100」に戻る
ここまでは良かったんですが、ここで一点問題が発生。
というのが、「NVIDIA Broadcast」はソフトウェアで擬似的にマイクをエミュレーションしているので、Windows が起動した後にソフトウェアが起動した段階で Windows にマイクとして認識される挙動となります。
そこで問題が発生したのが、認識されるタイミングで設定したはずのレベル「60」の設定がクリアされ、レベル「100」に戻されるということでした。
レベル「100」だと音割れが酷すぎて使い物にならないので、Windows を起動するたびに設定を「60」に変更する必要が出てきて、凄く面倒くさいことになりました。。
PowerShell でマイクの入力レベルを設定する
どうにかして Windows 起動時に自動でレベル「60」に設定する方法はないかなと思って調べて見ると、オーディオ関連の設定が行える PowerShell のコマンドレットが公開されているのを発見しました。
AudioDeviceCmdlets のインストール
Windows 11 標準の PowerShell ではオーディオ設定に関するコマンドは準備されていなかったので、PowerShellコンソールを管理者権限で起動し、以下のコマンドで追加インストールします。
Install-Module -Name AudioDeviceCmdlets
マイクレベル設定コマンド
マイクレベルを設定する時のコマンドは以下です。
Set-AudioDevice -RecordingVolume <レベル>
ただ、注意が必要なのが、このコマンドは「サウンド」→「録音」で「既定のデバイス」に設定されているデバイスに対して設定が行われます。
「NVIDIA Broadcast」が起動したタイミングで、Windows からは「既定のデバイス」として認識されるので基本的には問題ないですが、以下のコマンドを実行することで、「NVIDIA Broadcast」のマイクを既定のデバイスとして設定することが可能です。
Get-AudioDevice -List | Where-Object{($_.Type -eq “Recording”) -and ($_.Name -like “*NVIDIA Broadcast*”)} | Set-AudioDevice
タスクスケジューラに設定
コマンドはわかったので後は Windows 標準機能となるタスクスケジューラに設定すれば完了です。「NVIDIA Broadcast」はログインした後に起動するので実行するタイミングにちょっとだけ考慮が必要です。
タスクスケジューラの設定で遅延実行をする機能があるので、「トリガー」の設定で以下を設定します。
- タスクの開始 : ログオン時
- 遅延時間を指定する: 1 分間
あとは「操作」の設定にさっきのコマンドを PowerShell から実行するように設定すれば OK です。
最後に
今回のコマンドレットを使えば、オーディオ系の操作を自動的に出来るので応用は出来ると思います。