A microphone in mobile devices is an acousto-electric transducer that converts sound waves into an electrical signal for subsequent digitization and processing. Modern smartphones use MEMS microphones with a capacitive operating principle and built-in ADC. According to Yole Group, 2025, more than 6 billion MEMS microphones are shipped annually, of which 35% are installed in smartphones — 3–4 microphones per device.
Key Takeaways
Microphone is an electroacoustic device that converts sound pressure oscillations into an electrical signal. By operating principle, they are divided into dynamic (coil in a magnetic field), condenser (capacitance change) and piezoelectric. In mobile devices, the vast majority are condenser MEMS microphones due to their miniature size (2.5 × 1.5 mm) and compatibility with surface-mount technology (SMD).
A microphone consists of a diaphragm that vibrates under sound pressure and a fixed electrode, forming a capacitor. The change in distance between the plates alters the capacitance, which modulates the output voltage. In MEMS microphones, the diaphragm is made of polysilicon using photolithography — this ensures identical characteristics of all microphones in a batch.
The output signal of a MEMS microphone is PDM (Pulse Density Modulation) — a one-bit stream with a sampling rate of 1–4 MHz. Smartphone codecs decode PDM into PCM (Pulse Code Modulation) through a digital decimation filter, obtaining a standard audio format of 16–24 bits at 44.1–96 kHz for application processing.
Before the advent of MEMS, mobile devices used electret condenser microphones (ECM). In these, the diaphragm had a permanent electric charge (electret), and diaphragm vibrations created an alternating voltage. ECM microphones are larger (4–6 mm) and require a separate preamplifier, increasing the PCB footprint.
| Parameter | MEMS microphone | Electret (ECM) |
|---|---|---|
| Package size | 2.5 × 1.5 × 1.0 mm | 4 × 2.5 × 1.5 mm |
| Sensitivity | −26 ± 1 dB (FS) | −38 ± 3 dB (FS) |
| SNR (typical) | 64–69 dBA | 58–64 dBA |
| AOP (max SPL) | 125–135 dB | 115–125 dB |
| Current consumption | 150–300 µA | 300–500 µA |
| Temperature range | −40…+105 °C | −20…+70 °C |
MEMS microphones dominate due to smaller size, stable characteristics, and solderability on standard SMD lines. However, ECMs continue to be used in budget devices due to lower component cost ($0.15–0.30 vs $0.25–0.60 for MEMS).
Modern smartphones contain 3 to 4 microphones, whose placement determines recording quality and noise cancellation. The primary microphone (bottom) is located on the bottom edge next to the USB-C port — it records the user's voice during calls and video recording. The front (top) microphone is on the top edge for voice commands and a second channel in stereo recording.
The rear (back) microphone is typically placed near the camera on the back panel and is used exclusively for noise cancellation. Its signal is not recorded in the audio file — it is only subtracted by the digital processor from the primary microphone signal. In some flagships (iPhone 16 Pro, Samsung Galaxy S25), a fourth microphone is installed — in the front camera notch to improve recording during video calls.
Stereo video recording is implemented through a combination of bottom and top microphones. iOS automatically selects the microphone pair depending on device orientation — in landscape mode, the left channel comes from the left edge, the right from the right edge. On Android, this logic depends on the OEM manufacturer's implementation and may differ between models.
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)
// PCM buffer processing
}
AudioSource.CAMCORDER selects the microphone optimal for video recording — typically the bottom primary microphone with automatic gain control. For voice recording, VOICE_RECOGNITION is used — this source disables all filters and noise cancellation for a clean signal for speech recognition.
Active Noise Cancellation (ANC) in smartphones is based on the differential method: a second (reference) microphone records primarily background noise, while the primary microphone captures a mix of voice and noise. A digital signal processor (DSP) subtracts the reference signal from the primary, leaving only clean voice.
Noise cancellation quality depends on the distance between microphones and their directivity. Typical suppression of uniform noise (airplane, fan) is 20–35 dB. For impulse noises (door slam, dish clatter), an additional transient suppression block is used, which replaces the distorted segment with an approximated signal from neighboring samples.
Developers can influence noise cancellation algorithms only through audio session parameters: on Android — AudioManager.setParameters("noise_suppression=on/off"), on iOS — AVAudioSession category .playAndRecord with .allowBluetoothA2DP option. When recording for recognition, noise cancellation is usually disabled — STT algorithms work more accurately with the raw signal.
AudioRecord (Android) is a low-level API for direct PCM data recording from the microphone. The application receives buffers with raw audio data that can be processed in real time: volume analysis, frequency analysis (FFT), VAD (Voice Activity Detection). The minimum buffer is calculated via AudioRecord.getMinBufferSize() — using a smaller size causes recording delay or failure.
AVAudioEngine (iOS) is a modular audio processing graph where the input node (AVAudioInputNode) connects to the main mixer or directly to a tap handler. The engine allows real-time analysis of RMS (Root Mean Square) — a signal volume indicator — and frequency spectrum via AVAudioUnitEQ.
Key platform differences: on iOS, recording requires mandatory activation of AVAudioSession with category .playAndRecord or .record; on Android, the RECORD_AUDIO permission (runtime permission) and a microphone AudioSource are required. Flutter uses the record plugin to abstract these differences.
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("RMS volume: \(rms)")
}
try engine.start()
The code sets a tap on the input node of the AVAudioEngine. Each audio buffer contains float data of the monophonic microphone signal. RMS is calculated as the root mean square of the amplitude — a standard indicator of sound volume in the range from 0.0 (silence) to ~0.5–1.0 (loud voice).
Key parameters are used to evaluate microphone quality. SNR (Signal-to-Noise Ratio) is the ratio of signal level to the microphone's self-noise, measured in dBA. The higher the SNR, the quieter the background noise in the recording. For voice calls, 62–64 dBA is sufficient; for music recording, 68+ dBA is needed.
AOP (Acoustic Overload Point) is the maximum sound pressure level (SPL) that a microphone can convert without clipping. For a typical MEMS microphone, AOP = 125 dB. At concerts (110–120 dB), the recording will be clean, but at 130+ dB (nearby fireworks), nonlinear distortion will appear (THD > 10%).
The frequency range determines which frequencies the microphone records without attenuation. For voice, 300–3400 Hz (telephone standard, POTS) is sufficient. For music and video — 20–20000 Hz. MEMS microphones in the latest generation smartphones (Knowles SPH9855) provide a range of 30–18000 Hz with a flatness of ±3 dB.
Frequently Asked Questions
Modern smartphones contain 3 to 4 microphones: primary (bottom edge, for calls and video recording), front (top edge, voice commands), rear (back panel, noise cancellation). Flagships (iPhone 16 Pro, Galaxy S25) add a fourth microphone near the front camera to improve recording during video calls.
On Android — request the RECORD_AUDIO runtime permission and use AudioRecord or MediaRecorder. On iOS — activate AVAudioSession with category .playAndRecord and use AVAudioEngine or AVAudioRecorder. Both platforms require explicit user consent via a system dialog.
SNR (Signal-to-Noise Ratio) is the ratio of useful signal to the microphone's self-noise. A value of 64 dBA means that when recording voice, the noise level will be 64 dB below the voice level. SNR of 62–64 dBA is considered good for calls and 68+ dBA for music recording.
Typical reasons: the RECORD_AUDIO runtime permission was not requested (Android 6+); AudioSource was not specified (e.g., CAMCORDER instead of VOICE_RECOGNITION); the device has no microphone (Android TV); another process has already captured the microphone. Check the initialization status via AudioRecord.getState().
On Android — get a PCM buffer via AudioRecord.read(), calculate RMS as sqrt(sum(samples²) / count). On iOS — set a tap on AVAudioInputNode via installTap(forBus:) and similarly calculate RMS from floatChannelData. RMS is normalized: 0.0 (silence) to approximately 1.0 (ADC maximum).
Summary
We will develop a mobile application turnkey
IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.
Read also