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

30

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

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

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

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

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

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

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

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

Ответы:

6

Я не уверен, насколько это практично (у меня не было возможности измерить загрузку процессора и т. Д.), Но приведенный ниже AppleScript сделает эту работу - просто замените [YOUR HEADPHONES' NAME]реальное имя ваших наушников. Это модифицированная версия скрипта из ветки сообществ поддержки 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), чтобы уменьшить потребление ресурсов.

В AVFoundationMacOS High Sierra появилось несколько новых API (особенно в ), которые позволили бы решить проблему гораздо чище. Если вы знакомы с Swift или Objective-C (или мостом сценариев Cocoa в AppleScript и JXA), я бы хотел использовать эти API вместо этого сценария после выпуска High Sierra. В частности, в Руководстве по программированию аудиосеансов Apple и в этом посте о переполнении стека показаны некоторые методы обнаружения использования Bluetooth-соединений AVAudioSession.

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

Мне все еще очень нравится предложение @ aaplmath (и, возможно, оно будет лучшим в будущем), но я также наткнулся на это решение, которое не требует кодирования (AppleScript / Swift / ObjC / Other) в 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 Каталина. Мой AirPods v2 снова становится основным микрофоном, и вновь созданная агрегация, похоже, ничего не блокирует: '(
MoOx
Это работает в Мохаве, и у меня еще не установлена ​​Catalina. Apple, вероятно, изменила что-то, что теперь не работает ... очень разочаровывает. Приятно осознавать, что это конец пути, если это так ... Похоже, что Каталина демонстрирует первоначальную проблему, и если да, то это тоже очень разочаровывает.
Эван Стоун
6

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

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

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

Михаил Озерянский
источник
-2

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

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