Un micrófono en dispositivos móviles es un transductor acústico-eléctrico que convierte las ondas sonoras en una señal eléctrica para su posterior digitalización y procesamiento. Los teléfonos inteligentes modernos utilizan micrófonos MEMS con un principio de funcionamiento capacitivo y ADC integrado. Según Yole Group, 2025, se envían anualmente más de 6 mil millones de micrófonos MEMS, de los cuales el 35% se instala en teléfonos inteligentes — de 3 a 4 micrófonos por dispositivo.
Puntos clave
Micrófono es un dispositivo electroacústico que convierte las oscilaciones de presión sonora en una señal eléctrica. Según el principio de funcionamiento, se dividen en dinámicos (bobina en un campo magnético), de condensador (cambio de capacitancia) y piezoeléctricos. En los dispositivos móviles, la gran mayoría son micrófonos MEMS de condensador debido a su tamaño miniatura (2.5 × 1.5 mm) y compatibilidad con la tecnología de montaje superficial (SMD).
Un micrófono consiste en un diafragma que vibra bajo la presión sonora y un electrodo fijo, formando un condensador. El cambio en la distancia entre las placas altera la capacitancia, lo que modula el voltaje de salida. En los micrófonos MEMS, el diafragma está hecho de polisilicio mediante fotolitografía — esto garantiza características idénticas de todos los micrófonos en un lote.
La señal de salida de un micrófono MEMS es PDM (Pulse Density Modulation) — un flujo de un bit con una frecuencia de muestreo de 1–4 MHz. Los códecs del teléfono inteligente decodifican PDM en PCM (Pulse Code Modulation) a través de un filtro de diezmado digital, obteniendo un formato de audio estándar de 16–24 bits a 44.1–96 kHz para el procesamiento de la aplicación.
Antes de la llegada de MEMS, los dispositivos móviles utilizaban micrófonos electret de condensador (ECM). En estos, el diafragma tenía una carga eléctrica permanente (electret), y las vibraciones del diafragma creaban un voltaje alterno. Los micrófonos ECM son más grandes (4–6 mm) y requieren un preamplificador separado, lo que aumenta el área ocupada en la placa.
| Parámetro | Micrófono MEMS | Electret (ECM) |
|---|---|---|
| Tamaño del paquete | 2.5 × 1.5 × 1.0 mm | 4 × 2.5 × 1.5 mm |
| Sensibilidad | −26 ± 1 dB (FS) | −38 ± 3 dB (FS) |
| SNR (típico) | 64–69 dBA | 58–64 dBA |
| AOP (SPL máx.) | 125–135 dB | 115–125 dB |
| Consumo de corriente | 150–300 µA | 300–500 µA |
| Rango de temperatura | −40…+105 °C | −20…+70 °C |
Los micrófonos MEMS dominan debido a su menor tamaño, características estables y soldabilidad en líneas SMD estándar. Sin embargo, los ECM continúan utilizándose en dispositivos económicos debido al menor costo del componente ($0.15–0.30 frente a $0.25–0.60 para MEMS).
Los teléfonos inteligentes modernos contienen de 3 a 4 micrófonos, cuya ubicación determina la calidad de grabación y la cancelación de ruido. El micrófono principal (inferior) está ubicado en el borde inferior junto al puerto USB-C — graba la voz del usuario durante llamadas y grabación de video. El micrófono frontal (superior) está en el borde superior para comandos de voz y un segundo canal en grabación estéreo.
El micrófono trasero (posterior) generalmente se coloca cerca de la cámara en el panel trasero y se usa exclusivamente para cancelación de ruido. Su señal no se graba en el archivo de audio — solo se resta mediante el procesador digital de la señal del micrófono principal. En algunos buques insignia (iPhone 16 Pro, Samsung Galaxy S25), se instala un cuarto micrófono — en la muesca de la cámara frontal para mejorar la grabación durante videollamadas.
La grabación de video estéreo se implementa mediante una combinación de micrófonos inferior y superior. iOS selecciona automáticamente el par de micrófonos según la orientación del dispositivo — en modo horizontal, el canal izquierdo proviene del borde izquierdo, el derecho del borde derecho. En Android, esta lógica depende de la implementación del fabricante OEM y puede diferir entre modelos.
val recorder = AudioRecord(
MediaRecorder.AudioSource.CAMCORDER,
44100,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSize
)
recorder.startRecording()
val buffer = ShortArray(bufferSize)
while (recorder.recordingState == AudioRecord.RECORDSTATE_RECORDING) {
recorder.read(buffer, 0, buffer.size)
// Procesamiento de búfer PCM
}
AudioSource.CAMCORDER selecciona el micrófono óptimo para grabación de video — generalmente el micrófono principal inferior con control automático de ganancia. Para grabación de voz, se usa VOICE_RECOGNITION — esta fuente desactiva todos los filtros y la cancelación de ruido para obtener una señal limpia para reconocimiento de voz.
Cancelación activa de ruido (ANC) en los teléfonos inteligentes se basa en el método diferencial: un segundo micrófono (de referencia) graba principalmente el ruido de fondo, mientras que el micrófono principal captura una mezcla de voz y ruido. Un procesador digital de señales (DSP) resta la señal de referencia de la principal, dejando solo la voz limpia.
La calidad de la cancelación de ruido depende de la distancia entre los micrófonos y su direccionalidad. La supresión típica de ruido uniforme (avión, ventilador) es de 20–35 dB. Para ruidos impulsivos (portazo, choque de platos), se utiliza un bloque adicional de supresión de transitorios que reemplaza el segmento distorsionado con una señal aproximada de muestras vecinas.
Los desarrolladores pueden influir en los algoritmos de cancelación de ruido solo a través de los parámetros de la sesión de audio: en Android — AudioManager.setParameters("noise_suppression=on/off"), en iOS — categoría AVAudioSession .playAndRecord con opción .allowBluetoothA2DP. Al grabar para reconocimiento, la cancelación de ruido generalmente se desactiva — los algoritmos STT funcionan con mayor precisión con la señal original.
AudioRecord (Android) es una API de bajo nivel para grabación directa de datos PCM desde el micrófono. La aplicación recibe búferes con datos de audio sin procesar que pueden procesarse en tiempo real: análisis de volumen, análisis de frecuencia (FFT), VAD (Voice Activity Detection). El búfer mínimo se calcula mediante AudioRecord.getMinBufferSize() — usar un tamaño menor causa retraso o fallo en la grabación.
AVAudioEngine (iOS) es un grafo modular de procesamiento de audio donde el nodo de entrada (AVAudioInputNode) se conecta al mezclador principal o directamente a un manejador tap. El motor permite el análisis en tiempo real de RMS (Root Mean Square) — un indicador de volumen de señal — y el espectro de frecuencia mediante AVAudioUnitEQ.
Diferencias clave entre plataformas: en iOS, la grabación requiere la activación obligatoria de AVAudioSession con categoría .playAndRecord o .record; en Android, se requiere el permiso RECORD_AUDIO (permiso en tiempo de ejecución) y un AudioSource de micrófono. Flutter usa el plugin record para abstraer estas diferencias.
import AVFoundation
let engine = AVAudioEngine()
let inputNode = engine.inputNode
let format = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024,
format: format) { buffer, time in
guard let channelData = buffer.floatChannelData else { return }
let frameLength = Int(buffer.frameLength)
var sumSquares: Float = 0
for i in 0..<frameLength {
sumSquares += channelData[0][i] * channelData[0][i]
}
let rms = sqrt(sumSquares / Float(frameLength))
print("Volumen RMS: \(rms)")
}
try engine.start()
El código establece un tap en el nodo de entrada del AVAudioEngine. Cada búfer de audio contiene datos float de la señal monofónica del micrófono. El RMS se calcula como la raíz cuadrada media de la amplitud — un indicador estándar del volumen de sonido en el rango de 0.0 (silencio) a ~0.5–1.0 (voz fuerte).
Se utilizan parámetros clave para evaluar la calidad del micrófono. SNR (Signal-to-Noise Ratio) es la relación entre el nivel de señal y el ruido propio del micrófono, medida en dBA. Cuanto mayor es el SNR, más silencioso es el ruido de fondo en la grabación. Para llamadas de voz, 62–64 dBA es suficiente; para grabación de música, se necesitan 68+ dBA.
AOP (Acoustic Overload Point) es el nivel máximo de presión sonora (SPL) que un micrófono puede convertir sin recorte. Para un micrófono MEMS típico, AOP = 125 dB. En conciertos (110–120 dB), la grabación será limpia, pero a 130+ dB (fuegos artificiales cercanos), aparecerá distorsión no lineal (THD > 10%).
El rango de frecuencia determina qué frecuencias graba el micrófono sin atenuación. Para voz, 300–3400 Hz (estándar telefónico, POTS) es suficiente. Para música y video — 20–20000 Hz. Los micrófonos MEMS en los teléfonos inteligentes de última generación (Knowles SPH9855) proporcionan un rango de 30–18000 Hz con una planitud de ±3 dB.
Preguntas frecuentes
Los teléfonos inteligentes modernos contienen de 3 a 4 micrófonos: principal (borde inferior, para llamadas y grabación de video), frontal (borde superior, comandos de voz), trasero (panel posterior, cancelación de ruido). Los buques insignia (iPhone 16 Pro, Galaxy S25) añaden un cuarto micrófono cerca de la cámara frontal para mejorar la grabación durante videollamadas.
En Android — solicitar el permiso de tiempo de ejecución RECORD_AUDIO y usar AudioRecord o MediaRecorder. En iOS — activar AVAudioSession con categoría .playAndRecord y usar AVAudioEngine o AVAudioRecorder. Ambas plataformas requieren el consentimiento explícito del usuario a través de un diálogo del sistema.
SNR (Signal-to-Noise Ratio) es la relación entre la señal útil y el ruido propio del micrófono. Un valor de 64 dBA significa que al grabar voz, el nivel de ruido estará 64 dB por debajo del nivel de voz. Se considera bueno un SNR de 62–64 dBA para llamadas y 68+ dBA para grabación de música.
Razones típicas: no se solicitó el permiso de tiempo de ejecución RECORD_AUDIO (Android 6+); no se especificó AudioSource (por ejemplo, CAMCORDER en lugar de VOICE_RECOGNITION); el dispositivo no tiene micrófono (Android TV); otro proceso ya capturó el micrófono. Verifique el estado de inicialización mediante AudioRecord.getState().
En Android — obtener un búfer PCM mediante AudioRecord.read(), calcular RMS como sqrt(sum(muestras²) / count). En iOS — establecer un tap en AVAudioInputNode mediante installTap(forBus:) y calcular RMS de manera similar a partir de floatChannelData. El RMS está normalizado: 0.0 (silencio) hasta aproximadamente 1.0 (máximo ADC).
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también