Como usar sempre o microfone macbook com o Bose QuietComfort 35?

30

Tenho fones de ouvido com cancelamento de ruído (Bose QC 35), que também possuem microfone embutido. Se o microfone está ativo, o cancelamento de ruído não funciona, eles passam apenas pelos sons do ambiente (isto é por design. Suponho que eles fizeram isso para que você não sentisse que está no "vácuo" quando está falando) .

De qualquer forma, o problema é que sempre que conecto meus fones de ouvido ao macOS, o sistema muda do microfone interno para o dos fones de ouvido. Portanto, o cancelamento de ruído não funciona, a menos que eu vá para as configurações do sistema e troque o microfone de volta para o interno.

Isso é muito chato, especialmente considerando que eu tenho que fazer isso toda vez que conecto fones de ouvido.

Existe alguma maneira de forçar o macOS a sempre usar microfone interno ou não usar o fone de ouvido específico?

Atualização a partir de 10/2017:

Então eu descobri que "o microfone dos fones de ouvido está sendo usado" só acontece quando o Skype está em execução. Mas desde que parei de usar o Skype (ou o fazia funcionar o tempo todo), o problema desapareceu!

Esta não é a solução para a pergunta original, apenas a deixo aqui para referência futura.

kovpas
fonte
Como você conecta seus fones de ouvido via Bluetooth? Se sim, como fica nas Preferências do Bluetooth, como um único dispositivo ou como um par de dois dispositivos, fones de ouvido + microfone?
toma
@toma o Bose QC 35 é um fone de ouvido sem fio, mas ele pode ser usado também através do conector de telefone
northsea
@ northsea como posso ver no site oficial, este fone de ouvido suporta interfaces, bluetooth e fio de áudio. então, se você conectá-los via bluetooth, como eles são exibidos nas preferências da BT? bose.com/en_us/products/headphones/over_ear_headphones/...
toma
@toma Estou usando-os via bluetooth, sim. Eles são mostrados como fones de ouvido.
kovpas
4
Esta não é uma solução real, mas você pode alternar rapidamente as fontes de entrada mantendo Optionpressionado e clicando no ícone Som na barra de menus e selecionando uma fonte de entrada na lista. É um pouco mais rápido do que usar as Preferências do Sistema, pelo menos.
aaplmath

Respostas:

6

Não tenho certeza do quanto isso é prático (não tive a chance de medir o uso da CPU, etc.), mas o AppleScript abaixo fará o trabalho - basta substituir [YOUR HEADPHONES' NAME]pelo nome real dos fones de ouvido. Esta é uma versão modificada de um script de um encadeamento de comunidades de suporte da Apple .

Salve o script abaixo como um aplicativo, execute-o e adicione-o aos itens de inicialização - ele deve ser executado continuamente em segundo plano.

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

Você pode jogar com o tempo entre as verificações (a linha com o comentário for 5 second checks) para reduzir o consumo de recursos.

Há várias novas APIs (especialmente no AVFoundation) chegando ao macOS High Sierra que permitiriam uma solução muito mais limpa para esse problema. Se você estiver familiarizado com Swift ou Objective-C (ou a ponte de scripts Cocoa no AppleScript e JXA), gostaria de usar essas APIs em vez desse script quando o High Sierra for lançado. Em particular, o Guia de programação de sessões de áudio da Apple e esta publicação Stack Overflow mostram algumas técnicas de detecção de conexões Bluetooth usando AVAudioSession.

aaplmath
fonte
Sim, parece um compromisso decente. Estou realmente desapontado Bose ainda não pode vir até com um bom suporte de seu produto em Sierra ... Até então parece que eu teria que usar soluções como esta :( Obrigado.!
kovpas
@aaplmath O script é realmente interessante ... e eu gosto muito dessa sugestão no final do seu post. Escrever um aplicativo de aplicativo de barra de menus (ou sem cabeça) que monitore a sessão de áudio e sempre reencaminhe para o microfone interno seria um projeto divertido de se trabalhar e pode ser um pouco mais robusto ... (talvez) Mas, ainda assim, eu gosto a versão AppleScript porque é algo que qualquer um pode usar hoje. Obrigado!
Evan Stone
18

Ainda gosto muito da sugestão de @ aaplmath (e essa pode ser a melhor daqui para frente), mas também me deparei com esta solução que não requer codificação (AppleScript / Swift / ObjC / Outros) no High Sierra e é super fácil de configurar .

Observe que a resposta estava na seção de comentários do artigo e parece funcionar em High Sierra (eu estou em 10.13.6), mas não sei se isso funciona no Mojave e além.

Abra o utilitário "Audio MIDI Setup.app" padrão e clique no + na parte inferior para criar um dispositivo agregado. Em seguida, selecione o microfone interno como o único componente nesse dispositivo agregado e selecione-o como entrada padrão. Por alguma razão, isso impede que o Mac OS X selecione o microfone Bluetooth a partir de agora e permanecerá no interno quando você reconectar.

Depois de criar essa entrada agregada, acesse as Preferências do sistema usuais -> Som -> Entrada (guia)

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

Evan Stone
fonte
Eu também estava tendo problemas com o Bose QC 35 ii. Esta solução funciona perfeitamente. Obrigado.
Charles Han
Isso funciona também com fones de ouvido audiomx.
Danny Staple
Não parece funcionar no macOS Catalina. O My AirPods v2 se torna novamente o microfone principal, e a agregação recém-criada parece não bloquear nada: '(
MoOx
Funciona no Mojave e ainda não tenho o Catalina instalado. A Apple provavelmente mudou algo que faz com que isso não funcione agora ... muito decepcionante. É bom saber que esse é o fim do caminho, se for esse o caso ... Parece também que Catalina exibe o problema original, no entanto, e nesse caso, isso também é muito decepcionante.
Evan Stone
6

Eu tenho esse problema ao usar o iOS Simulator e ele produz qualquer som, como de um teclado. O My Bose 35's muda para um fluxo de áudio de qualidade inferior e tudo soa horrível.

De outros resultados de pesquisa, descobri que a mudança para o microfone interno do meu Mac corrige o problema. Com base nesta pergunta, percebi que talvez não consiga definir as configurações do meu mac, mas posso defini-las no meu iOS Simulator.

Simulador iOS: Hardware -> Entrada de áudio -> Microfone interno

Michael Ozeryansky
fonte
-2

Se você usar seus fones de ouvido via cabo em vez de bluetooth, a solução mais simples será usar um cabo com uma tomada de telefone TRS (Tip + Ring + Sleeve) em vez de uma tomada de telefone TRRS (Tip + Ring + Ring + Sleeve). A tomada de telefone TRS suporta apenas sinal estéreo, mas sem microfone. Portanto, nenhum sinal de microfone será transmitido e o microfone embutido deve permanecer ativo.

mar do Norte
fonte
1
Não, estou usando-os via bluetooth. Sem fio foi a principal razão para comprá-los em primeiro lugar :)
kovpas