Мікрофон у мобільних пристроях — акустико-електричний перетворювач, який перетворює звукові хвилі в електричний сигнал для подальшої оцифровки та обробки. У сучасних смартфонах використовуються MEMS-мікрофони з ємнісним принципом роботи та вбудованим АЦП. За даними Yole Group, 2025, щорічно відвантажується понад 6 мільярдів MEMS-мікрофонів, з яких 35% встановлюється в смартфони — по 3–4 мікрофони на пристрій.
Головне
Мікрофон — електроакустичний пристрій, що перетворює коливання звукового тиску в електричний сигнал. За принципом дії поділяються на динамічні (котушка в магнітному полі), конденсаторні (зміна ємності) та п'єзоелектричні. У мобільних пристроях абсолютна більшість — конденсаторні MEMS-мікрофони завдяки мініатюрним розмірам (2,5 × 1,5 мм) та сумісності з поверхневим монтажем (SMD).
Мікрофон складається з мембрани, що коливається під дією звукового тиску, та нерухомого електрода, які утворюють конденсатор. Зміна відстані між обкладками змінює ємність, що модулює напругу на виході. У MEMS-мікрофонах мембрана виготовляється з полікремнію методом фотолітографії — це забезпечує ідентичність характеристик усіх мікрофонів у партії.
Вихідний сигнал MEMS-мікрофона — PDM (Pulse Density Modulation) — однобітовий потік з частотою дискретизації 1–4 МГц. Кодеки смартфона декодують PDM у PCM (Pulse Code Modulation) через цифровий фільтр-дециматор, отримуючи стандартний аудіоформат 16–24 біт з частотою 44,1–96 кГц для обробки додатком.
До приходу MEMS у мобільних пристроях використовувалися електретні конденсаторні мікрофони (ECM). У них мембрана мала постійний електричний заряд (електрет), а коливання мембрани створювали змінну напругу. ECM-мікрофони більші (4–6 мм) та потребують окремого передпідсилювача, що збільшує площу на платі.
| Параметр | MEMS-мікрофон | Електретний (ECM) |
|---|---|---|
| Розмір корпусу | 2,5 × 1,5 × 1,0 мм | 4 × 2,5 × 1,5 мм |
| Чутливість | −26 ± 1 дБ (FS) | −38 ± 3 дБ (FS) |
| SNR (типовий) | 64–69 дБА | 58–64 дБА |
| AOP (макс. SPL) | 125–135 дБ | 115–125 дБ |
| Струм споживання | 150–300 мкА | 300–500 мкА |
| Температурний діапазон | −40…+105 °C | −20…+70 °C |
MEMS-мікрофони домінують завдяки меншим габаритам, стабільності характеристик та паяності на стандартних SMD-лініях. Однак ECM продовжують використовуватися в бюджетних пристроях через нижчу вартість компонента ($0,15–0,30 проти $0,25–0,60 для MEMS).
Сучасні смартфони містять від 3 до 4 мікрофонів, розташування яких визначає якість запису та шумозаглушення. Основний мікрофон (bottom) розташований на нижньому торці поруч з портом USB-C — він записує голос користувача під час розмови та відеозйомки. Фронтальний (top) — на верхньому торці для голосових команд та другого каналу при стереозаписі.
Тиловий (back) мікрофон зазвичай розміщується поруч з камерою на задній панелі та використовується виключно для шумозаглушення. Його сигнал не записується в аудіофайл — тільки віднімається цифровим процесором із сигналу основного мікрофона. У деяких флагманах (iPhone 16 Pro, Samsung Galaxy S25) встановлюється четвертий мікрофон — front camera notch для покращення запису при відеодзвінках.
Стереозапис відео реалізується через комбінацію нижнього та верхнього мікрофонів. iOS автоматично вибирає пару мікрофонів залежно від орієнтації пристрою — при ландшафтному зйомці лівий канал береться з лівого торця, правий — з правого. На Android ця логіка залежить від реалізації OEM-виробника та може відрізнятися між моделями.
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-буфера
}
AudioSource.CAMCORDER вибирає мікрофон, оптимальний для відеозйомки — зазвичай це нижній основний мікрофон з автоматичним регулюванням підсилення. Для голосового запису використовується VOICE_RECOGNITION — це джерело вимикає всі фільтри та шумозаглушення для чистого сигналу на розпізнавання мовлення.
Активне шумозаглушення (Active Noise Cancellation, ANC) в смартфонах засноване на диференційному методі: другий мікрофон (reference) записує переважно фоновий шум, а основний (primary) — суміш голосу та шуму. Цифровий сигнальний процесор (DSP) віднімає сигнал reference з primary, залишаючи тільки чистий голос.
Якість шумозаглушення залежить від відстані між мікрофонами та їх спрямованості. Типове пригнічення рівномірного шуму (літак, вентилятор) — 20–35 дБ. Для імпульсних шумів (хлопання дверима, удар посуду) використовується додатковий блок transient suppression, який замінює спотворену ділянку на апроксимований сигнал сусідніх семплів.
Розробник може впливати на алгоритми шумозаглушення тільки через параметри аудіосесії: на Android — AudioManager.setParameters("noise_suppression=on/off"), на iOS — категорія AVAudioSession .playAndRecord з опцією .allowBluetoothA2DP. При записі для розпізнавання шумозаглушення зазвичай вимикають — алгоритми STT працюють точніше з вихідним сигналом.
AudioRecord (Android) — низькорівневий API для прямого запису PCM-даних з мікрофона. Додаток отримує буфери з сирими аудіоданими, які можна обробляти в реальному часі: аналіз гучності, частотний аналіз (FFT), VAD (Voice Activity Detection). Мінімальний буфер обчислюється через AudioRecord.getMinBufferSize() — використання меншого розміру викликає затримку або збій запису.
AVAudioEngine (iOS) — модульний граф для аудіообробки, де вхідний нод (AVAudioInputNode) підключається до основного мікшера або безпосередньо до tap-обробника. Engine дозволяє в реальному часі аналізувати RMS (Root Mean Square) — показник гучності сигналу — та частотний спектр через AVAudioUnitEQ.
Ключові відмінності платформ: на iOS запис вимагає обов'язкової активації AVAudioSession з категорією .playAndRecord або .record; на Android — дозволу RECORD_AUDIO (runtime permission) та мікрофонного AudioSource. Flutter використовує плагін record для абстракції цих відмінностей.
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 громкость: \(rms)")
}
try engine.start()
Код встановлює tap на вхідний нод двигуна AVAudioEngine. Кожен аудіобуфер містить float-дані монофонічного сигналу з мікрофона. RMS обчислюється як середньоквадратичне значення амплітуди — стандартний показник гучності звуку в діапазоні 0,0 (тиша) до ~0,5–1,0 (гучний голос).
Для оцінки якості мікрофона використовуються ключові параметри. SNR (Signal-to-Noise Ratio) — відношення рівня сигналу до власного шуму мікрофона, вимірюється в дБА. Чим вищий SNR, тим тихіший фоновий шум у записі. Для голосових викликів достатньо 62–64 дБА, для музичного запису — 68+ дБА.
AOP (Acoustic Overload Point) — максимальний рівень звукового тиску (SPL), який мікрофон може перетворити без кліпування. Для типового MEMS-мікрофона AOP = 125 дБ. На концертах (110–120 дБ) запис буде чистим, але при 130+ дБ (феєрверк поруч) з'явиться нелінійне спотворення (THD > 10%).
Частотний діапазон визначає, які частоти мікрофон записує без загасання. Для голосу достатньо 300–3400 Гц (телефонний стандарт, POTS). Для музики та відео — 20–20000 Гц. MEMS-мікрофони в смартфонах останнього покоління (Knowles SPH9855) забезпечують діапазон 30–18000 Гц з нерівномірністю ±3 дБ.
Часті запитання
Сучасні смартфони містять від 3 до 4 мікрофонів: основний (нижній торець, для дзвінків та відеозапису), фронтальний (верхній торець, голосові команди), тиловий (задня панель, шумозаглушення). Флагмани (iPhone 16 Pro, Galaxy S25) додають четвертий мікрофон біля фронтальної камери для покращення запису при відеодзвінках.
На Android — запросити runtime-дозвіл RECORD_AUDIO та використовувати AudioRecord або MediaRecorder. На iOS — активувати AVAudioSession з категорією .playAndRecord та використовувати AVAudioEngine або AVAudioRecorder. Обидві платформи вимагають явної згоди користувача через системний діалог.
SNR (Signal-to-Noise Ratio) — відношення корисного сигналу до власного шуму мікрофона. Значення 64 дБА означає, що при записі голосу рівень шуму буде на 64 дБ нижче рівня голосу. Хорошим вважається SNR 62–64 дБА для дзвінків та 68+ дБА для музичного запису.
Типові причини: не запрошено runtime-дозвіл RECORD_AUDIO (Android 6+); не вказано AudioSource (наприклад, CAMCORDER замість VOICE_RECOGNITION); пристрій не має мікрофона (Android TV); інший процес вже захопив мікрофон. Перевірте через AudioRecord.getState() статус ініціалізації.
На Android — отримати PCM-буфер через AudioRecord.read(), обчислити RMS як sqrt(sum(семпли²) / count). На iOS — встановити tap на AVAudioInputNode через installTap(forBus:) та аналогічно обчислити RMS з floatChannelData. RMS нормалізовано: 0,0 (тиша) до приблизно 1,0 (максимум ADC).
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також