如何始终将Macbook麦克风与Bose QuietComfort 35结合使用?


30

我有降噪耳机(Bose QC 35),也内置了麦克风。如果麦克风处于活动状态,则消除噪音将不起作用,它们只会通过环境声音(这是设计使然。我想是因为它们做到了,所以您说话时不会感觉自己处在“真空”中) 。

无论如何,问题在于,每当我将耳机连接到macOS时,系统就会从内部麦克风切换到耳机的麦克风。因此,除非我进入系统设置并将麦克风切换回内部麦克风,否则消除噪音将不起作用。

这非常烦人,尤其是考虑到每次连接耳机都必须这样做。

有什么方法可以迫使macOS始终使用内置麦克风,或者不使用特定耳机的麦克风?

从10/2017更新:

因此我发现“正在使用头戴式耳机的麦克风”仅在Skype运行时发生。但是自从我停止使用Skype(或一直运行它)以来,问题就消失了!

这不是原始问题的解决方案,我将其留在此处以供将来参考。


如何通过蓝牙连接耳机?如果是,在“蓝牙首选项”中作为单个设备还是作为两个设备(耳机+麦克风)配对的外观如何?
toma

@toma Bose QC 35是无线耳机,但也可以通过电话连接器使用
northsea

在官方网站上可以看到@northsea,这款耳机同时支持接口,蓝牙和音频线。因此,如果您通过蓝牙连接它们,它们在BT偏好设置中如何显示?bose.com/en_us/products/headphones/over_ear_headphones/…–
toma

@toma我正在通过蓝牙使用它们,是的。它们显示为耳机。
kovpas

4
这不是实际的解决方案,但是您可以通过按住Option菜单栏中的“声音”图标并从列表中选择一个输入源来快速切换输入源。至少比使用“系统偏好设置”要快一些。
aaplmath'7

Answers:


6

我不确定这有多实用(我还没有机会测量CPU使用率等),但是下面的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(尤其是中的),这些API 可以为解决此问题提供更加简洁的解决方案。如果您对Swift或Objective-C(或AppleScript和JXA中的Cocoa脚本桥)感到满意,那么在High Sierra发布后,我会考虑使用这些API代替此脚本。特别是,Apple的《音频会话编程指南》此Stack Overflow帖子展示了一些使用来检测蓝牙连接的技术AVAudioSession


是的,看起来是一个不错的妥协。我真的很失望,Bose仍然无法在Sierra上为其产品提供良好的支持...在那之前,我似乎不得不使用这种解决方法:(。谢谢!
kovpas

@aaplmath脚本非常有趣...我非常喜欢您文章结尾的建议。编写一个菜单栏应用程序(或无头应用程序)来监视音频会话并始终重新路由到内部麦克风,这是一个有趣的项目,可能会更强大……(也许)但是,我还是喜欢AppleScript版本,因为它是今天任何人都可以使用的版本。谢谢!
伊万·斯通

18

我仍然非常喜欢@aaplmath的建议(这可能是最好的建议),但是我也偶然发现了在High Sierra中不需要编码(AppleScript / Swift / ObjC / Other)的这种解决方案,而且配置起来非常容易。

请注意,答案文章的评论部分中,并且似乎可以在High Sierra上使用(我在10.13.6上),但是我不知道此方法是否适用于Mojave及更高版本。

打开标准的“ 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耳机。
Danny Staple

在macOS Catalina上似乎不起作用。我的AirPods v2再次成为主要麦克风,新创建的聚合似乎没有阻止任何东西:'(
MoOx,

它可以在莫哈韦沙漠(Mojave)工作,并且我还没有安装Catalina。苹果可能已经改变了一些使它现在不起作用的东西……非常令人失望。很高兴知道,如果真是那样,这就是路的尽头。。听起来也像卡塔琳娜(Catalina)表现出了原来的问题,但是,如果是这样,那也很令人失望。
埃文·斯通

6

使用iOS模拟器时出现此问题,它发出任何声音,例如从键盘发出的声音。我的Bose 35切换到较低质量的音频流,一切听起来都糟透了。

从其他搜索结果中,我发现切换到Mac的内置麦克风可以解决此问题。基于这个问题,我意识到我可能无法为Mac设置设置,但是我可以为iOS模拟器设置它们。

iOS模拟器:硬件->音频输入->内置麦克风


-2

如果您通过电缆而不是蓝牙使用耳机,则最简单的解决方案应该是使用带有TRS(提示+环形+套筒)电话插孔的电缆,而不是TRRS(提示+环形+环形+套筒)电话插孔的电缆。TRS电话插孔仅支持立体声信号,但不支持麦克风。因此,不会发送麦克风信号,并且内置麦克风应保持活动状态。


1
不,我通过蓝牙使用它们。无线是首先购买它们的主要原因:)
kovpas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.