Bagaimana cara selalu menggunakan mikrofon macbook dengan Bose QuietComfort 35?

30

Saya memiliki headphone peredam bising (Bose QC 35), yang juga memiliki mikrofon bawaan. Jika mikrofon aktif, pembatalan kebisingan tidak berfungsi, mereka hanya melewati suara sekitar (ini adalah desain. Saya kira, mereka melakukannya sehingga Anda tidak akan merasa bahwa Anda sedang "vakum" ketika Anda berbicara) .

Bagaimanapun, masalahnya adalah bahwa setiap kali saya menghubungkan headphone saya ke macOS, sistem beralih dari mikrofon internal ke headphone. Karena itu, pembatalan bising tidak berfungsi, kecuali saya pergi ke pengaturan sistem dan beralih kembali ke mikrofon internal.

Ini sangat menjengkelkan, terutama mengingat bahwa saya harus melakukan itu setiap kali saya menghubungkan headphone.

Apakah ada cara untuk memaksa macOS untuk selalu menggunakan mikrofon internal, atau tidak menggunakan headphone tertentu?

Pembaruan dari 10/2017:

Jadi saya menemukan bahwa "mikrofon headphone sedang digunakan" hanya terjadi ketika Skype sedang berjalan. Tetapi sejak saya berhenti menggunakan Skype (atau menjalankannya sepanjang waktu), masalahnya hilang!

Ini bukan solusi untuk pertanyaan awal, saya hanya meninggalkannya di sini untuk referensi di masa mendatang.

kovpa
sumber
Bagaimana Anda menghubungkan headphone Anda, melalui Bluetooth? Jika ya, seperti apa di Bluetooth Preferences, sebagai satu perangkat, atau sebagai pasangan dari dua perangkat, headphone + mikrofon?
toma
@toma the Bose QC 35 adalah headset nirkabel, tetapi dapat digunakan juga melalui konektor telepon
northsea
@northsea seperti yang saya lihat di situs web resmi, headphone ini mendukung antarmuka, bluetooth, dan kabel audio. jadi jika Anda menghubungkannya melalui bluetooth, bagaimana mereka ditampilkan di BT prefs? bose.com/en_us/products/headphones/over_ear_headphones/…
toma
@ Tom saya menggunakannya melalui bluetooth, ya. Mereka ditampilkan sebagai headphone.
kovpas
4
Ini bukan solusi yang sebenarnya, tetapi Anda dapat dengan cepat beralih sumber input dengan menahan Optiondan mengklik ikon Suara di bilah menu Anda, lalu memilih sumber input dari daftar. Ini sedikit lebih cepat daripada menggunakan System Preferences, setidaknya.
aaplmath

Jawaban:

6

Saya tidak yakin seberapa praktis ini (saya belum memiliki kesempatan untuk mengukur penggunaan CPU, dll.), Tetapi AppleScript di bawah ini akan melakukan pekerjaan itu — cukup ganti [YOUR HEADPHONES' NAME]dengan nama headphone Anda yang sebenarnya. Ini adalah versi modifikasi dari skrip dari utas Komunitas Dukungan Apple .

Simpan skrip di bawah ini sebagai aplikasi, jalankan, dan tambahkan ke item startup Anda — itu harus dijalankan terus menerus di latar belakang.

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

Anda bisa bermain dengan waktu antara cek (baris dengan komentar for 5 second checks) untuk mengurangi konsumsi sumber daya.

Ada sejumlah API baru (terutama di AVFoundation) yang datang ke macOS High Sierra yang akan memungkinkan solusi yang jauh lebih bersih untuk masalah ini. Jika Anda merasa nyaman dengan Swift atau Objective-C (atau jembatan skrip Kakao di AppleScript dan JXA), saya akan melihat menggunakan API tersebut alih-alih skrip ini setelah High Sierra dirilis. Secara khusus, Panduan Pemrograman Audio Sesi Apple dan pos Stack Overflow ini menunjukkan beberapa teknik mendeteksi koneksi Bluetooth yang menggunakan AVAudioSession.

aaplmath
sumber
Ya, sepertinya kompromi yang layak. Saya benar-benar kecewa Bose masih tidak dapat datang dengan dukungan yang baik dari produk mereka di Sierra ... Sampai saat itu tampaknya saya harus menggunakan solusi seperti ini :(. Terima kasih!
kovpas
@ aaplmath Scriptnya sangat menarik ... dan saya sangat suka saran itu di akhir posting Anda. Menulis aplikasi menu bar (atau tanpa kepala) aplikasi yang memonitor sesi audio dan selalu kembali rute ke mikrofon internal akan menjadi proyek yang menyenangkan untuk dikerjakan dan mungkin sedikit lebih kuat ... (mungkin) Tapi tetap saja, saya suka versi AppleScript karena itu adalah sesuatu yang bisa digunakan siapa saja hari ini. Terima kasih!
Evan Stone
18

Saya masih sangat menyukai saran @ aaplmath (dan itu mungkin yang terbaik di masa depan), tetapi saya juga menemukan solusi ini yang tidak memerlukan pengkodean (AppleScript / Swift / ObjC / Other) di High Sierra, dan sangat mudah untuk mengkonfigurasi .

Harap perhatikan bahwa jawabannya ada di bagian komentar artikel dan tampaknya berfungsi pada High Sierra (saya di 10.13.6), tetapi saya tidak tahu apakah ini berfungsi di Mojave dan seterusnya.

Buka utilitas "Audio MIDI Setup.app" standar, dan klik tanda + di bagian bawah untuk membuat Perangkat Agregat. Kemudian pilih Mikrofon Internal sebagai satu-satunya komponen dalam perangkat agregat ini dan pilih sebagai input default. Untuk beberapa alasan ini mencegah Mac OS X dari memilih Bluetooth Mikrofon dari sekarang dan itu akan tetap di internal ketika Anda menghubungkan kembali.

Setelah membuat input agregat itu, buka Preferensi Sistem seperti biasa -> Suara -> Input (tab)

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

Evan Stone
sumber
Saya juga mengalami masalah dengan Bose QC 35 ii. Solusi ini bekerja dengan sempurna. Terima kasih.
Charles Han
Ini berfungsi dengan headphone audiomx juga.
Danny Staple
Tampaknya tidak berfungsi di macOS Catalina. AirPods v2 saya menjadi lagi mik utama, dan agregasi yang baru dibuat tampaknya tidak memblokir apa pun: '(
MoOx
Ini berfungsi di Mojave, dan saya belum menginstal Catalina. Apple mungkin mengubah sesuatu yang membuat ini tidak berfungsi sekarang ... sangat mengecewakan. Senang mengetahui bahwa ini adalah akhir dari jalan jika itu yang terjadi ... Ini juga terdengar seperti Catalina menunjukkan masalah aslinya, dan, jika demikian, itu juga sangat mengecewakan.
Evan Stone
6

Saya memiliki masalah ini ketika menggunakan iOS Simulator dan membuat suara apa pun, seperti dari keyboard. Pergantian My Bose 35 ke aliran audio berkualitas rendah dan semuanya terdengar mengerikan.

Dari hasil pencarian lain saya menemukan bahwa beralih ke mikrofon internal Mac saya memperbaiki masalah. Berdasarkan pertanyaan ini, saya menyadari bahwa saya mungkin tidak dapat mengatur pengaturan untuk mac saya, tetapi saya dapat mengaturnya untuk iOS Simulator saya.

Simulator iOS: Perangkat Keras -> Input Audio -> Mikrofon Internal

Michael Ozeryansky
sumber
-2

Jika Anda menggunakan headphone melalui kabel alih-alih bluetooth, solusi paling sederhana adalah menggunakan kabel dengan jack telepon TRS (Tip + Ring + Sleeve) alih-alih jack telepon TRRS (Tip + Ring + Ring + Sleeve). Soket telepon TRS hanya mendukung sinyal Stereo, tetapi tidak ada mikrofon. Dengan demikian tidak ada sinyal mikrofon yang akan dikirim dan mikrofon internal harus tetap aktif.

northsea
sumber
1
Tidak, saya menggunakannya melalui bluetooth. Nirkabel adalah alasan utama untuk membelinya di tempat pertama :)
kovpas