Tengo auriculares con cancelación de ruido (Bose QC 35), que también tienen micrófono incorporado. Si el micrófono está activo, la cancelación de ruido no funciona, solo pasan a través de los sonidos ambientales (esto es por diseño. Supongo que lo hicieron para que no sintiera que está en un "vacío" cuando está hablando) .
De todos modos, el problema es que cada vez que conecto mis auriculares a macOS, el sistema cambia del micrófono interno al de los auriculares. Por lo tanto, la cancelación de ruido no funciona, a menos que vaya a la configuración del sistema y vuelva a cambiar el micrófono al interno.
Esto es muy molesto, especialmente considerando que tengo que hacer eso cada vez que conecto los auriculares.
¿Hay alguna forma de obligar a macOS a usar siempre el micrófono interno o no usar el de los auriculares específicos?
Actualización del 10/2017:
Así que descubrí que "se está usando el micrófono de los auriculares" solo sucede cuando se está ejecutando Skype. Pero desde que dejé de usar Skype (o de tenerlo funcionando todo el tiempo), ¡el problema desapareció!
Esta no es la solución para la pregunta original, solo la dejo aquí para futuras referencias.
No estoy seguro de cuán práctico es esto (no he tenido la oportunidad de medir el uso de la CPU, etc.), pero el siguiente AppleScript hará el trabajo, simplemente reemplácelo [YOUR HEADPHONES' NAME]
con el nombre real de sus auriculares. Esta es una versión modificada de un script de un hilo de Apple Support Communities .
Guarde el siguiente script como una aplicación, ejecútelo y agréguelo a sus elementos de inicio; debería ejecutarse continuamente en 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
Podría jugar con el tiempo entre comprobaciones (la línea con el comentario for 5 second checks
) para reducir el consumo de recursos.
Hay una serie de nuevas API (especialmente en AVFoundation
) que llegarán a macOS High Sierra que permitirían una solución mucho más limpia a este problema. Si se siente cómodo con Swift u Objective-C (o el puente de secuencias de comandos Cocoa en AppleScript y JXA), consideraría usar esas API en lugar de esta secuencia de comandos una vez que se publique High Sierra. En particular, la Guía de programación de sesiones de audio de Apple y esta publicación de Stack Overflow muestran algunas técnicas para detectar conexiones Bluetooth usando AVAudioSession
.
Todavía me gusta mucho la sugerencia de @aaplmath (y esa puede ser la mejor en el futuro), pero también me topé con esta solución que no requiere codificación (AppleScript/Swift/ObjC/Other) en High Sierra, y es muy fácil de configurar .
Tenga en cuenta que la respuesta estaba en la sección de comentarios del artículo y parece funcionar en High Sierra (estoy en 10.13.6), pero no sé si esto funciona en Mojave y más allá.
Abra la utilidad estándar "Audio MIDI Setup.app" y haga clic en + en la parte inferior para crear un dispositivo agregado. Luego, seleccione el micrófono interno como el único componente en este dispositivo agregado y selecciónelo como la entrada predeterminada. Por alguna razón, esto impide que Mac OS X seleccione el micrófono Bluetooth a partir de ahora y permanecerá en el interno cuando se vuelva a conectar.
Después de crear esa entrada agregada, vaya a sus Preferencias del sistema habituales -> Sonido -> Entrada (pestaña)
MacBook Pro Microphone
y conecto mis auriculares BT, el micrófono cambia a los auriculares BT, pero cuando elijo el dispositivo agregado MIDI y conecto los auriculares BT, permanece con el dispositivo agregado MIDI.Tengo este problema cuando uso el simulador de iOS y hace algún sonido, como el de un teclado. El cambio de mi Bose 35 a una transmisión de audio de menor calidad y todo suena horrible.
A partir de otros resultados de búsqueda, descubrí que cambiar al micrófono interno de mi Mac soluciona el problema. En base a esta pregunta, me di cuenta de que es posible que no pueda establecer la configuración para mi Mac, pero puedo configurarla para mi simulador de iOS.
Simulador de iOS: Hardware -> Entrada de audio -> Micrófono interno
Esto me paso en BigSur y es lo peor! No pude descifrar e intenté todo aquí, sin resultados. Lo que funcionó para mí fue ir a las preferencias de la aplicación Zoom seleccionando el micrófono interno del Bose QC 35 predeterminado y bingo, sin audio de mala calidad.
Si usa sus auriculares a través de cable en lugar de bluetooth, la solución más simple debería ser usar un cable con un conector telefónico TRS (Tip + Ring + Sleeve) en lugar de un conector telefónico TRRS (Tip + Ring + Ring + Sleeve). El conector de teléfono TRS solo admite señal estéreo, pero no micrófono. Por lo tanto, no se transmitirá ninguna señal de micrófono y el micrófono incorporado debería permanecer activo.
toma
mar del Norte
toma
kovpas
aplmath
Option
presionado y haciendo clic en el ícono de Sonido en su barra de menú, luego seleccionando una fuente de entrada de la lista. Es un poco más rápido que usar las Preferencias del Sistema, al menos.