Come utilizzare sempre il microfono interno?

18

Ho cuffie con cancellazione del rumore (Bose QC 35), che hanno anche il microfono integrato. Se il microfono è attivo, la cancellazione del rumore non funziona, passa solo attraverso i suoni ambientali (questo è dovuto alla progettazione. Suppongo che lo abbiano fatto in modo da non sentire che sei nel "vuoto" quando parli) .

Ad ogni modo, il problema è che ogni volta che collego le mie cuffie a macOS, il sistema passa dal microfono interno a quello delle cuffie. Pertanto, la cancellazione del rumore non funziona, a meno che non si passi alle impostazioni di sistema e si ritorni a quello interno.

Questo è molto fastidioso, soprattutto considerando che devo farlo ogni volta che collego le cuffie.

C'è un modo per forzare macOS ad usare sempre il microfono interno, o non usare quello specifico per cuffia?

Aggiornamento da 10/2017:

Quindi ho scoperto che il microfono "cuffie" è in uso "accade solo quando Skype è in esecuzione. Ma da quando ho smesso di usare Skype (o di averlo sempre in esecuzione), il problema era sparito!

Questa non è la soluzione per la domanda originale, la sto semplicemente lasciando qui per il futuro riferimento.

    
posta kovpas 20.06.2017 - 13:19
fonte

4 risposte

6

Non sono sicuro di come questo è pratico (non ho avuto la possibilità di misurare l'utilizzo della CPU, ecc), ma la sotto AppleScript farà il lavoro-basta sostituire [YOUR HEADPHONES' NAME] con il nome effettivo delle cuffie . Questa è una versione modificata di uno script da un di Apple Comunità di supporto filo .

Salva lo script sotto come un'applicazione, eseguilo e aggiungilo agli elementi di avvio: dovrebbe essere eseguito continuamente in background.

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

Potresti giocare con il tempo che intercorre tra i controlli (la riga con il commento for 5 second checks ) per ridurre il consumo di risorse.

Ci sono una serie di nuove API (soprattutto in AVFoundation ) provenienti da MacOS High Sierra che permetterebbero di una soluzione molto più pulito a questo problema. Se sei a tuo agio con Swift o Objective-C (o il ponte di script cacao in AppleScript e JXA), vorrei considerare di usare queste API invece di questo script una volta High Sierra viene rilasciato. In particolare, Audio Session e di Apple questo post Stack Overflow mostrare alcune tecniche di rilevare le connessioni Bluetooth utilizzando AVAudioSession .

    
risposta data 01.07.2017 - 21:42
fonte
4

Ho questo problema quando utilizzo il simulatore iOS e produce qualsiasi suono, come da una tastiera. My Bose 35 passa a un flusso audio di qualità inferiore e tutto sembra pessimo.

Da altri risultati di ricerca ho scoperto che il passaggio al microfono interno del mio Mac risolve il problema. Sulla base di questa domanda, ho capito che potrei non essere in grado di impostare le impostazioni per il mio Mac, ma posso impostarle per il mio iOS Simulator.

iOS Simulator: Hardware - > Ingresso audio - > Microfono interno

    
risposta data 26.01.2018 - 06:46
fonte
3

Mi piace ancora molto il suggerimento di @ aaplmath (e potrebbe essere il migliore che vada avanti), ma mi sono anche imbattuto in questa soluzione che non richiede codifica (AppleScript / Swift / ObjC / Other) in High Sierra, ed è super facile da configurare.

Si noti che la risposta era nella sezione commenti dell'articolo e sembra funzionare su High Sierra (sono al 10.13.6), ma non lo so se funziona su Mojave e oltre.

Open the standard "Audio MIDI Setup.app" utility, and click the + at the bottom to create an Aggregate Device. Then select the Internal Microphone as the only component in this aggregate device and select it as the default input. For some reason this prevents Mac OS X from selecting the Bluetooth Microphone from now on and it will stay on the internal one when you reconnect.

After creating that aggregate input, go to your usual System Preferences -> Sound -> Input (tab)

Fonte: link

    
risposta data 23.10.2018 - 15:33
fonte
-2

Se usi le cuffie via cavo invece del bluetooth, la soluzione più semplice dovrebbe essere quella di utilizzare un cavo con una presa telefonica TRS (Tip + Ring + Sleeve) invece di una presa TRRS (Tip + Ring + Ring + Sleeve) . Il jack telefonico TRS supporta solo il segnale stereo, ma non il microfono. Quindi nessun segnale del microfono verrà trasmesso e il microfono integrato dovrebbe rimanere attivo.

    
risposta data 28.06.2017 - 21:55
fonte

Leggi altre domande sui tag