Как всегда использовать микрофон MacBook с Bose QuietComfort 35?

У меня есть наушники с шумоподавлением (Bose QC 35), в которые также встроен микрофон. Если микрофон активен, то шумоподавление не работает, они просто пропускают окружающие звуки (так задумано. Наверное, так сделали, чтобы вы не чувствовали, что находитесь в «вакууме», когда говорите) .

В любом случае, проблема в том, что всякий раз, когда я подключаю наушники к macOS, система переключается с внутреннего микрофона на микрофон наушников. Поэтому шумоподавление не работает, если только я не зайду в системные настройки и не переключу микрофон обратно на внутренний.

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

Есть ли способ заставить macOS всегда использовать внутренний микрофон или не использовать микрофон для конкретных наушников?

Обновление от 10/2017:

Итак, я обнаружил, что «используется микрофон наушников» происходит только при запущенном Skype. Но с тех пор, как я перестал пользоваться Skype (или постоянно его запускать), проблема исчезла!

Это не решение исходного вопроса, я просто оставляю его здесь для дальнейшего использования.

Как вы подключаете наушники через Bluetooth? Если да, то как это выглядит в настройках Bluetooth, как одно устройство или как пара двух устройств, наушники + микрофон?
@toma Bose QC 35 — это беспроводная гарнитура, но ее можно использовать и через телефонный разъем.
@northsea, как я вижу на официальном сайте, эти наушники поддерживают оба интерфейса, bluetooth и аудиокабель. так если подключить их через блютуз, как они отображаются в настройках BT? bose.com/en_us/products/headphones/over_ear_headphones/…
@toma Я использую их через Bluetooth, да. Они показаны как наушники.
Это не настоящее решение, но вы можете быстро переключать источники ввода, удерживая Optionи щелкая значок «Звук» в строке меню, а затем выбирая источник ввода из списка. По крайней мере, это немного быстрее, чем использование Системных настроек.

Ответы (5)

Я не уверен, насколько это практично (у меня не было возможности измерить загрузку ЦП и т. [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.

Да, выглядит как достойный компромисс. Я очень разочарован, что Bose до сих пор не может обеспечить хорошую поддержку своего продукта в Sierra... До тех пор, похоже, мне придется использовать такие обходные пути :(. Спасибо!
@aaplmath Сценарий действительно интересный ... и мне очень нравится это предложение в конце вашего поста. Написание приложения строки меню (или безголового приложения), которое отслеживает аудиосеанс и всегда перенаправляет на внутренний микрофон, было бы интересным проектом для работы и могло бы быть немного более надежным... (возможно) Но все же, мне нравится версия AppleScript, потому что это то, что любой может использовать сегодня. Спасибо!

Мне все еще очень нравится предложение @aaplmath (и оно может быть лучшим в будущем), но я также только что наткнулся на это решение, которое не требует кодирования (AppleScript/Swift/ObjC/Другое) в High Sierra, и его очень легко настроить. .

Обратите внимание, что ответ был в разделе комментариев к статье, и, похоже, он работает в High Sierra (у меня 10.13.6), но я не знаю, работает ли это в Мохаве и за его пределами.

Откройте стандартную утилиту «Audio MIDI Setup.app» и нажмите + внизу, чтобы создать агрегатное устройство. Затем выберите внутренний микрофон в качестве единственного компонента в этом совокупном устройстве и выберите его в качестве входа по умолчанию. По какой-то причине это не позволяет Mac OS X теперь выбирать микрофон Bluetooth, и он останется на внутреннем микрофоне при повторном подключении.

После создания этого совокупного ввода перейдите в свои обычные Системные настройки -> Звук -> Ввод (вкладка)

Источник: http://ssrubin.com/posts/fixing-macos-bluetooth-headphone-audio-quality-issues-with-hammerspoon.html#comment-4018174387 .

У меня также была проблема с Bose QC 35 ii. Это решение работает отлично. Спасибо.
Это работает и с наушниками audiomx.
Кажется, не работает на macOS Catalina. Мои AirPods v2 снова становятся основным микрофоном, и вновь созданная агрегация вроде ничего не блокирует :'(
Это работает в Мохаве, и у меня еще не установлена ​​Каталина. Apple, вероятно, изменила что-то, из-за чего это теперь не работает ... очень разочаровывает. Приятно знать, что это конец пути, если это так... Однако также звучит так, будто Каталина демонстрирует исходную проблему, и если это так, это тоже очень разочаровывает.
Это очень хорошо сработало для меня на Каталине. Когда я выбираю MacBook Pro Microphoneи подключаю гарнитуру BT, микрофон меняется на гарнитуру BT, но когда я выбираю агрегатное устройство MIDI и подключаю гарнитуру BT, он остается с агрегатным устройством MIDI.
Облом! В то время как значение по умолчанию на уровне ОС остается прежним, Google Meet (это то, что я в основном использую) предпочитает использовать одно и то же устройство для динамиков и микрофона, поэтому он не соблюдает значение по умолчанию для ОС.

У меня есть эта проблема при использовании симулятора iOS, и он издает любой звук, например, с клавиатуры. Мои Bose 35 переключаются на аудиопоток более низкого качества, и все звучит ужасно.

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

Симулятор iOS: Аппаратное обеспечение -> Аудиовход -> Внутренний микрофон

Это случилось со мной на BigSur, и это самое худшее! Я не мог понять и пробовал все здесь, безрезультатно. Что сработало для меня, так это перейти к настройкам приложения Zoom, выбрав внутренний микрофон из стандартного Bose QC 35 и бинго, никакого дрянного звука.

Если вы используете наушники через кабель вместо Bluetooth, самым простым решением должно быть использование кабеля с телефонным разъемом TRS (наконечник + кольцо + рукав) вместо телефонного разъема TRRS (наконечник + кольцо + кольцо + рукав). Телефонный разъем TRS поддерживает только стереофонический сигнал, но не микрофон. Таким образом, сигнал с микрофона передаваться не будет, а встроенный микрофон должен оставаться активным.

Нет, я использую их через Bluetooth. Беспроводная связь была главной причиной их покупки :)