Mikrofon w urządzeniach mobilnych — przetwornik akustyczno-elektryczny, który przekształca fale dźwiękowe na sygnał elektryczny w celu późniejszej digitalizacji i przetwarzania. W nowoczesnych smartfonach stosuje się mikrofony MEMS z pojemnościowym zasadą działania i wbudowanym ADC. Według danych Yole Group, 2025, rocznie dostarcza się ponad 6 miliardów mikrofonów MEMS, z czego 35% trafia do smartfonów — po 3–4 mikrofony na urządzenie.
Najważniejsze
Mikrofon — urządzenie elektroakustyczne przetwarzające drgania ciśnienia akustycznego na sygnał elektryczny. Ze względu na zasadę działania dzielą się na dynamiczne (cewka w polu magnetycznym), pojemnościowe (zmiana pojemności) i piezoelektryczne. W urządzeniach mobilnych zdecydowaną większość stanowią pojemnościowe mikrofony MEMS dzięki miniaturowym rozmiarom (2.5 × 1.5 mm) i kompatybilności z montażem powierzchniowym (SMD).
Mikrofon składa się z membrany drgającej pod wpływem ciśnienia akustycznego oraz nieruchomej elektrody, tworzących kondensator. Zmiana odległości między okładkami zmienia pojemność, co moduluje napięcie wyjściowe. W mikrofonach MEMS membrana jest wykonana z polikrzemu metodą fotolitografii — zapewnia to identyczność charakterystyk wszystkich mikrofonów w partii.
Sygnał wyjściowy mikrofonu MEMS — PDM (Pulse Density Modulation) — strumień jednobitowy z częstotliwością próbkowania 1–4 MHz. Kodeki smartfona dekodują PDM do PCM (Pulse Code Modulation) przez cyfrowy filtr-decymator, uzyskując standardowy format audio 16–24 bitów z częstotliwością 44.1–96 kHz do przetwarzania przez aplikację.
Przed pojawieniem się MEMS w urządzeniach mobilnych stosowano elektretowe mikrofony pojemnościowe (ECM). W nich membrana miała stały ładunek elektryczny (elektret), a drgania membrany tworzyły napięcie zmienne. Mikrofony ECM są większe (4–6 mm) i wymagają osobnego przedwzmacniacza, co zwiększa powierzchnię na płytce.
| Parametr | Mikrofon MEMS | Elektretowy (ECM) |
|---|---|---|
| Rozmiar obudowy | 2.5 × 1.5 × 1.0 mm | 4 × 2.5 × 1.5 mm |
| Czułość | −26 ± 1 dB (FS) | −38 ± 3 dB (FS) |
| SNR (typowy) | 64–69 dBA | 58–64 dBA |
| AOP (maks. SPL) | 125–135 dB | 115–125 dB |
| Pobór prądu | 150–300 µA | 300–500 µA |
| Zakres temperatur | −40…+105 °C | −20…+70 °C |
Mikrofony MEMS dominują dzięki mniejszym wymiarom, stabilności charakterystyk i możliwości lutowania na standardowych liniach SMD. Jednak ECM są nadal używane w urządzeniach budżetowych ze względu na niższy koszt komponentu ($0.15–0.30 wobec $0.25–0.60 dla MEMS).
Nowoczesne smartfony zawierają od 3 do 4 mikrofonów, których rozmieszczenie określa jakość nagrywania i redukcji szumów. Mikrofon główny (bottom) znajduje się na dolnym brzegu obok portu USB-C — nagrywa głos użytkownika podczas rozmowy i nagrywania wideo. Przedni (top) — na górnym brzegu do poleceń głosowych i drugiego kanału przy nagrywaniu stereo.
Mikrofon tylny (back) jest zwykle umieszczony obok aparatu na tylnym panelu i używany wyłącznie do redukcji szumów. Jego sygnał nie jest zapisywany w pliku audio — jest tylko odejmowany przez procesor cyfrowy od sygnału mikrofonu głównego. W niektórych flagowcach (iPhone 16 Pro, Samsung Galaxy S25) instalowany jest czwarty mikrofon — front camera notch dla poprawy nagrywania podczas rozmów wideo.
Nagrywanie stereo wideo realizowane jest przez kombinację dolnego i górnego mikrofonu. iOS automatycznie wybiera parę mikrofonów w zależności od orientacji urządzenia — przy nagrywaniu poziomym lewy kanał pochodzi z lewego brzegu, prawy — z prawego. W Androidzie ta logika zależy od implementacji producenta OEM i może się różnić między modelami.
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)
// Przetwarzanie bufora PCM
}
AudioSource.CAMCORDER wybiera mikrofon optymalny do nagrywania wideo — zwykle jest to dolny mikrofon główny z automatyczną regulacją wzmocnienia. Do nagrywania głosu używa się VOICE_RECOGNITION — to źródło wyłącza wszystkie filtry i redukcję szumów dla czystego sygnału do rozpoznawania mowy.
Aktywna redukcja szumów (Active Noise Cancellation, ANC) w smartfonach opiera się na metodzie różnicowej: drugi mikrofon (reference) nagrywa głównie szum tła, a główny (primary) — mieszankę głosu i szumu. Cyfrowy procesor sygnałowy (DSP) odejmuje sygnał reference od primary, pozostawiając tylko czysty głos.
Jakość redukcji szumów zależy od odległości między mikrofonami i ich kierunkowości. Typowe tłumienie szumu jednostajnego (samolot, wentylator) — 20–35 dB. Dla szumów impulsowych (trzaśnięcie drzwiami, uderzenie naczyń) stosuje się dodatkowy blok transient suppression, który zastępuje zniekształcony fragment aproksymowanym sygnałem sąsiednich próbek.
Deweloper może wpływać na algorytmy redukcji szumów tylko przez parametry sesji audio: w Androidzie — AudioManager.setParameters("noise_suppression=on/off"), w iOS — kategoria AVAudioSession .playAndRecord z opcją .allowBluetoothA2DP. Przy nagrywaniu do rozpoznawania redukcja szumów jest zwykle wyłączana — algorytmy STT działają dokładniej z oryginalnym sygnałem.
AudioRecord (Android) — niskopoziomowe API do bezpośredniego nagrywania danych PCM z mikrofonu. Aplikacja otrzymuje bufory z surowymi danymi audio, które można przetwarzać w czasie rzeczywistym: analiza głośności, analiza częstotliwościowa (FFT), VAD (Voice Activity Detection). Minimalny bufor oblicza się przez AudioRecord.getMinBufferSize() — użycie mniejszego rozmiaru powoduje opóźnienie lub błąd nagrywania.
AVAudioEngine (iOS) — modułowy graf do przetwarzania audio, gdzie węzeł wejściowy (AVAudioInputNode) podłącza się do głównego miksera lub bezpośrednio do handlera tap. Engine pozwala w czasie rzeczywistym analizować RMS (Root Mean Square) — wskaźnik głośności sygnału — oraz widmo częstotliwości przez AVAudioUnitEQ.
Kluczowe różnice platform: w iOS nagrywanie wymaga obowiązkowej aktywacji AVAudioSession z kategorią .playAndRecord lub .record; w Androidzie — uprawnienia RECORD_AUDIO (runtime permission) i źródła AudioSource. Flutter używa wtyczki record do abstrakcji tych różnic.
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 głośność: \(rms)")
}
try engine.start()
Kod ustawia tap na węźle wejściowym silnika AVAudioEngine. Każdy bufor audio zawiera dane float sygnału monofonicznego z mikrofonu. RMS oblicza się jako średnią kwadratową amplitudy — standardowy wskaźnik głośności dźwięku w zakresie od 0.0 (cisza) do około 0.5–1.0 (głośny głos).
Do oceny jakości mikrofonu używa się kluczowych parametrów. SNR (Signal-to-Noise Ratio) — stosunek poziomu sygnału do szumu własnego mikrofonu, mierzony w dBA. Im wyższy SNR, tym cichszy szum tła w nagraniu. Do rozmów głosowych wystarcza 62–64 dBA, do nagrywania muzyki — 68+ dBA.
AOP (Acoustic Overload Point) — maksymalny poziom ciśnienia akustycznego (SPL), jaki mikrofon może przetworzyć bez zniekształceń. Dla typowego mikrofonu MEMS AOP = 125 dB. Na koncertach (110–120 dB) nagranie będzie czyste, ale przy 130+ dB (fajerwerki w pobliżu) pojawią się zniekształcenia nieliniowe (THD > 10%).
Pasmo przenoszenia określa, jakie częstotliwości mikrofon nagrywa bez tłumienia. Dla głosu wystarcza 300–3400 Hz (standard telefoniczny, POTS). Dla muzyki i wideo — 20–20000 Hz. Mikrofony MEMS w smartfonach najnowszej generacji (Knowles SPH9855) zapewniają pasmo 30–18000 Hz z nierównomiernością ±3 dB.
Często zadawane pytania
Nowoczesne smartfony zawierają od 3 do 4 mikrofonów: główny (dolny brzeg, do rozmów i nagrywania wideo), przedni (górny brzeg, polecenia głosowe), tylny (panel tylny, redukcja szumów). Flagowce (iPhone 16 Pro, Galaxy S25) dodają czwarty mikrofon przy przednim aparacie dla poprawy nagrywania podczas rozmów wideo.
W Androidzie — poprosić o uprawnienie runtime RECORD_AUDIO i użyć AudioRecord lub MediaRecorder. W iOS — aktywować AVAudioSession z kategorią .playAndRecord i użyć AVAudioEngine lub AVAudioRecorder. Obie platformy wymagają wyraźnej zgody użytkownika przez okno systemowe.
SNR (Signal-to-Noise Ratio) — stosunek użytecznego sygnału do szumu własnego mikrofonu. Wartość 64 dBA oznacza, że podczas nagrywania głosu poziom szumu będzie o 64 dB niższy od poziomu głosu. Za dobry uważa się SNR 62–64 dBA dla rozmów i 68+ dBA dla nagrywania muzyki.
Typowe przyczyny: nie poproszono o uprawnienie runtime RECORD_AUDIO (Android 6+); nie określono AudioSource (np. CAMCORDER zamiast VOICE_RECOGNITION); urządzenie nie ma mikrofonu (Android TV); inny proces już przechwycił mikrofon. Sprawdź przez AudioRecord.getState() status inicjalizacji.
W Androidzie — pobrać bufor PCM przez AudioRecord.read(), obliczyć RMS jako sqrt(sum(samples²) / count). W iOS — ustawić tap na AVAudioInputNode przez installTap(forBus:) i podobnie obliczyć RMS z floatChannelData. RMS jest znormalizowany: 0.0 (cisza) do około 1.0 (maksimum ADC).
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również