
Я купил новый микрофон, который крепится к моему столу, в дополнение к беспроводной гарнитуре 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;
}