У меня есть наушники с шумоподавлением (Bose QC 35), в которые также встроен микрофон. Если микрофон активен, то шумоподавление не работает, они просто пропускают окружающие звуки (так задумано. Наверное, так сделали, чтобы вы не чувствовали, что находитесь в «вакууме», когда говорите) .
В любом случае, проблема в том, что всякий раз, когда я подключаю наушники к macOS, система переключается с внутреннего микрофона на микрофон наушников. Поэтому шумоподавление не работает, если только я не зайду в системные настройки и не переключу микрофон обратно на внутренний.
Это очень раздражает, особенно учитывая, что мне приходится делать это каждый раз, когда я подключаю наушники.
Есть ли способ заставить macOS всегда использовать внутренний микрофон или не использовать микрофон для конкретных наушников?
Обновление от 10/2017:
Итак, я обнаружил, что «используется микрофон наушников» происходит только при запущенном Skype. Но с тех пор, как я перестал пользоваться Skype (или постоянно его запускать), проблема исчезла!
Это не решение исходного вопроса, я просто оставляю его здесь для дальнейшего использования.
Я не уверен, насколько это практично (у меня не было возможности измерить загрузку ЦП и т. [YOUR HEADPHONES' NAME]
д.), но приведенный ниже AppleScript выполнит эту работу — просто замените его реальным названием ваших наушников. Это модифицированная версия скрипта из ветки сообщества поддержки Apple .
Сохраните приведенный ниже сценарий как приложение, запустите его и добавьте в элементы автозагрузки — он должен работать постоянно в фоновом режиме.
repeat
set statusOld to checkStatus()
set statusNew to checkStatus()
repeat while statusOld is equal to statusNew
delay 5 --for 5 second checks
set statusNew to checkStatus()
end repeat
if statusNew is true then
tell application "System Preferences" to activate
tell application "System Preferences"
reveal anchor "input" of pane id "com.apple.preference.sound"
end tell
delay 0.5
tell application "System Events" to tell process "System Preferences"
tell table 1 of scroll area 1 of tab group 1 of window 1
select (row 1 where value of text field 1 is "Internal Microphone")
end tell
end tell
tell application "System Preferences" to quit
else
-- Nothing needs to happen, the device was removed
end if
end repeat
on checkStatus()
set bluetoothDeviceName to "[YOUR HEADPHONES' NAME]"
set myString to do shell script "system_profiler SPBluetoothDataType"
--initial check if it's not even there
if myString does not contain bluetoothDeviceName then
return false
else
--find out if connected/disconnected
set AppleScript's text item delimiters to "name:"
set myList to the text items of myString --each item of mylist is now one of the devices
set numberOfDevices to count of myList
set counter to 1
repeat numberOfDevices times --loop through each devices checking for Connected string
if item counter of myList contains bluetoothDeviceName then
if item counter of myList contains "Connected: Yes" then
return true
else if item counter of myList contains "Connected: No" then
return false
else
display dialog "Something went wrong with the script" --this shouldn't happen
end if
end if
set counter to counter + 1
end repeat
end if
end checkStatus
Вы можете поиграть со временем между проверками (строка с комментарием for 5 second checks
), чтобы уменьшить потребление ресурсов.
В macOS High Sierra появилось несколько новых API-интерфейсов (особенно в AVFoundation
), которые позволили бы решить эту проблему гораздо чище. Если вам удобно работать со Swift или Objective-C (или мостом сценариев Cocoa в AppleScript и JXA), я бы рассмотрел возможность использования этих API вместо этого сценария после выпуска High Sierra. В частности, в Руководстве Apple по программированию аудиосессий и в этой публикации Stack Overflow показаны некоторые методы обнаружения Bluetooth-соединений с использованием файлов AVAudioSession
.
Мне все еще очень нравится предложение @aaplmath (и оно может быть лучшим в будущем), но я также только что наткнулся на это решение, которое не требует кодирования (AppleScript/Swift/ObjC/Другое) в High Sierra, и его очень легко настроить. .
Обратите внимание, что ответ был в разделе комментариев к статье, и, похоже, он работает в High Sierra (у меня 10.13.6), но я не знаю, работает ли это в Мохаве и за его пределами.
Откройте стандартную утилиту «Audio MIDI Setup.app» и нажмите + внизу, чтобы создать агрегатное устройство. Затем выберите внутренний микрофон в качестве единственного компонента в этом совокупном устройстве и выберите его в качестве входа по умолчанию. По какой-то причине это не позволяет Mac OS X теперь выбирать микрофон Bluetooth, и он останется на внутреннем микрофоне при повторном подключении.
После создания этого совокупного ввода перейдите в свои обычные Системные настройки -> Звук -> Ввод (вкладка)
MacBook Pro Microphone
и подключаю гарнитуру BT, микрофон меняется на гарнитуру BT, но когда я выбираю агрегатное устройство MIDI и подключаю гарнитуру BT, он остается с агрегатным устройством MIDI.У меня есть эта проблема при использовании симулятора iOS, и он издает любой звук, например, с клавиатуры. Мои Bose 35 переключаются на аудиопоток более низкого качества, и все звучит ужасно.
Из других результатов поиска я обнаружил, что переключение на внутренний микрофон моего Mac решает проблему. Основываясь на этом вопросе, я понял, что, возможно, не смогу установить настройки для своего Mac, но я могу установить их для своего симулятора iOS.
Симулятор iOS: Аппаратное обеспечение -> Аудиовход -> Внутренний микрофон
Это случилось со мной на BigSur, и это самое худшее! Я не мог понять и пробовал все здесь, безрезультатно. Что сработало для меня, так это перейти к настройкам приложения Zoom, выбрав внутренний микрофон из стандартного Bose QC 35 и бинго, никакого дрянного звука.
Если вы используете наушники через кабель вместо Bluetooth, самым простым решением должно быть использование кабеля с телефонным разъемом TRS (наконечник + кольцо + рукав) вместо телефонного разъема TRRS (наконечник + кольцо + кольцо + рукав). Телефонный разъем TRS поддерживает только стереофонический сигнал, но не микрофон. Таким образом, сигнал с микрофона передаваться не будет, а встроенный микрофон должен оставаться активным.
тома
Северное море
тома
ковпас
ааплматематик
Option
и щелкая значок «Звук» в строке меню, а затем выбирая источник ввода из списка. По крайней мере, это немного быстрее, чем использование Системных настроек.