Wie verwende ich mit Bose QuietComfort 35 immer ein MacBook-Mikrofon?

30

Ich habe Kopfhörer mit Geräuschunterdrückung (Bose QC 35), in die auch ein Mikrofon eingebaut ist. Wenn das Mikrofon aktiv ist und die Geräuschunterdrückung nicht funktioniert, werden sie nur durch Umgebungsgeräusche geleitet (dies ist beabsichtigt. Ich nehme an, sie haben dies getan, damit Sie nicht das Gefühl haben, sich beim Sprechen im "Vakuum" zu befinden.) .

Das Problem ist jedenfalls, dass das System jedes Mal, wenn ich meine Kopfhörer an macOS anschließe, vom internen Mikrofon auf das eines der Kopfhörer umschaltet. Daher funktioniert die Geräuschunterdrückung nur, wenn ich zu den Systemeinstellungen gehe und das Mikrofon wieder auf das interne umschalte.

Das ist sehr ärgerlich, vor allem, wenn man bedenkt, dass ich das jedes Mal tun muss, wenn ich Kopfhörer anschließe.

Gibt es eine Möglichkeit, macOS zu zwingen, immer das interne Mikrofon zu verwenden, oder nicht den jeweiligen Kopfhörer zu verwenden?

Update vom 10/2017:

Daher habe ich herausgefunden, dass "Kopfhörer-Mikrofon verwendet wird" nur dann, wenn Skype ausgeführt wird. Aber seit ich Skype nicht mehr benutze (oder immer laufen lasse), war das Problem weg!

Dies ist nicht die Lösung für die ursprüngliche Frage. Ich lasse sie hier nur als zukünftige Referenz.

Kovpas
quelle
Wie verbindest du deine Kopfhörer über Bluetooth? Wenn ja, wie sieht es in den Bluetooth-Einstellungen als einzelnes Gerät oder als Paar von zwei Geräten, Kopfhörer + Mikrofon aus?
Toma
@toma das Bose QC 35 ist ein drahtloses Headset, kann aber auch über den Telefonanschluss verwendet werden
northsea
@northsea Wie ich auf der offiziellen Website sehen kann, unterstützt dieser Kopfhörer beide Schnittstellen, Bluetooth und Audiokabel. Wenn Sie sie also über Bluetooth verbinden, wie werden sie in den BT-Einstellungen angezeigt? bose.com/en_us/products/headphones/over_ear_headphones/…
toma
@toma Ich benutze sie über Bluetooth, ja. Sie werden als Kopfhörer angezeigt.
Kovpas
4
Dies ist keine echte Lösung. Sie können jedoch schnell die Eingangsquelle wechseln, indem OptionSie das Sound-Symbol in Ihrer Menüleiste gedrückt halten und darauf klicken und dann eine Eingangsquelle aus der Liste auswählen. Zumindest ist es etwas schneller als die Verwendung der Systemeinstellungen.
aaplmath

Antworten:

6

Ich bin mir nicht sicher, wie praktisch dies ist (ich hatte nicht die Möglichkeit, die CPU-Auslastung usw. zu messen), aber das folgende AppleScript erledigt die Aufgabe - ersetzen Sie es einfach durch [YOUR HEADPHONES' NAME]den tatsächlichen Namen Ihres Kopfhörers. Dies ist eine geänderte Version eines Skripts aus einem Apple Support Communities-Thread .

Speichern Sie das unten stehende Skript als Anwendung, führen Sie es aus und fügen Sie es zu Ihren Startelementen hinzu. Es sollte kontinuierlich im Hintergrund ausgeführt werden.

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

Sie könnten mit der Zeit zwischen Überprüfungen (der Zeile mit dem Kommentar for 5 second checks) spielen, um den Ressourcenverbrauch zu reduzieren.

Es gibt eine Reihe neuer APIs (insbesondere in AVFoundation) für macOS High Sierra, die eine viel sauberere Lösung für dieses Problem ermöglichen. Wenn Sie mit Swift oder Objective-C (oder der Cocoa-Skriptbrücke in AppleScript und JXA) vertraut sind, würde ich die Verwendung dieser APIs anstelle dieses Skripts untersuchen, sobald High Sierra veröffentlicht ist. Das Programmierhandbuch für Audiositzungen von Apple und dieser Beitrag zum Stapelüberlauf zeigen einige Techniken zum Erkennen von Bluetooth-Verbindungen mithilfe von AVAudioSession.

aaplmath
quelle
Ja, sieht nach einem anständigen Kompromiss aus. Ich bin wirklich enttäuscht, dass Bose immer noch keine gute Unterstützung für ihr Produkt auf Sierra finden kann ... Bis dahin müsste ich anscheinend folgende
Problemumgehungen verwenden
@aaplmath Das Skript ist wirklich interessant ... und ich mag diesen Vorschlag am Ende Ihres Beitrags wirklich. Das Schreiben einer App für die Menüleiste (oder einer kopflosen Anwendung), die die Audiositzung überwacht und immer zum internen Mikrofon umleitet, ist ein unterhaltsames Projekt und möglicherweise etwas robuster ... (vielleicht) Aber trotzdem gefällt es mir die AppleScript-Version, weil es etwas ist, das jeder heute verwenden könnte. Vielen Dank!
Evan Stone
18

Ich mag immer noch den Vorschlag von @ aaplmath (und das ist vielleicht der beste der Zukunft), aber ich bin auch gerade auf diese Lösung gestoßen, die keine Codierung (AppleScript / Swift / ObjC / Other) in High Sierra erfordert und die super einfach zu konfigurieren ist .

Bitte beachten Sie, dass die Antwort im Kommentarbereich des Artikels war und auf High Sierra zu funktionieren scheint (ich bin auf 10.13.6), aber ich weiß nicht, ob dies auf Mojave und darüber hinaus funktioniert.

Öffnen Sie das Standard-Dienstprogramm "Audio MIDI Setup.app" und klicken Sie unten auf das Pluszeichen (+), um ein aggregiertes Gerät zu erstellen. Wählen Sie dann das interne Mikrofon als einzige Komponente in diesem Aggregat und wählen Sie es als Standardeingang. Aus irgendeinem Grund verhindert dies, dass Mac OS X von nun an das Bluetooth-Mikrofon auswählt, und es bleibt auf dem internen, wenn Sie die Verbindung wiederherstellen.

Wechseln Sie nach dem Erstellen dieses Gesamteingangs zu Ihren üblichen Systemeinstellungen -> Ton -> Eingabe (Registerkarte).

Quelle: http://ssrubin.com/posts/fixing-macos-bluetooth-headphone-audio-quality-issues-with-hammerspoon.html#comment-4018174387

Evan Stone
quelle
Ich hatte auch Probleme mit Bose QC 35 ii. Diese Lösung funktioniert einwandfrei. Vielen Dank.
Charles Han
Dies funktioniert auch mit Audiomx-Kopfhörern.
Danny Staple
Scheint auf macOS Catalina nicht zu funktionieren. Mein AirPods v2 wird wieder zum Hauptmikrofon, und die neu erstellte Aggregation scheint nichts zu blockieren: '(
MoOx
Es funktioniert in Mojave und ich habe Catalina noch nicht installiert. Apple hat wahrscheinlich etwas geändert, was dazu führt, dass dies jetzt nicht mehr funktioniert ... sehr enttäuschend. Gut zu wissen, dass dies das Ende der Straße ist, wenn das der Fall ist ... Es klingt auch so, als ob Catalina das ursprüngliche Problem aufweist, und wenn ja, ist das auch sehr enttäuschend.
Evan Stone
6

Ich habe dieses Problem, wenn ich den iOS-Simulator verwende, und er gibt einen Ton von einer Tastatur aus. Mein Bose 35 schaltet auf einen Audiostream mit geringerer Qualität um und alles klingt schrecklich.

Aus anderen Suchergebnissen ging hervor, dass der Wechsel zum internen Mikrofon meines Mac das Problem behebt. Aufgrund dieser Frage wurde mir klar, dass ich die Einstellung möglicherweise nicht für meinen Mac festlegen kann, aber ich kann sie für meinen iOS-Simulator festlegen.

iOS Simulator: Hardware -> Audioeingang -> Internes Mikrofon

Michael Ozeryansky
quelle
-2

Wenn Sie Ihre Kopfhörer über ein Kabel anstelle von Bluetooth verwenden, sollten Sie am einfachsten ein Kabel mit einer Klinkenbuchse (TRS) anstelle einer Klinkenbuchse (TRRS) verwenden. Die TRS-Telefonbuchse unterstützt nur Stereosignale, jedoch kein Mikrofon. Somit wird kein Mikrofonsignal übertragen und das eingebaute Mikrofon sollte aktiv bleiben.

Nordsee
quelle
1
Nein, ich benutze sie über Bluetooth. Wireless war der Hauptgrund, sie überhaupt zu kaufen :)
kovpas