A mikrofon mobil eszközökben — egy akusztikus-elektromos átalakító, amely hanghullámokat alakít át elektromos jellé a későbbi digitalizáláshoz és feldolgozáshoz. A modern okostelefonokban MEMS-mikrofonokat használnak kapacitív működési elvvel és beépített ADC-vel. A Yole Group, 2025 adatai szerint évente több mint 6 milliárd MEMS-mikrofont szállítanak, amelyek 35%-át okostelefonokba szerelik — eszközönként 3–4 mikrofont.
Főbb pontok
Mikrofon — egy elektroakusztikus eszköz, amely a hangnyomás rezgéseit elektromos jellé alakítja. Működési elv szerint dinamikus (tekercs mágneses mezőben), kapacitív (kapacitásváltozás) és piezoelektromos típusokra oszlanak. Mobil eszközökben a túlnyomó többség kapacitív MEMS-mikrofon, köszönhetően a miniatűr méreteknek (2.5 × 1.5 mm) és a felületi szerelési (SMD) kompatibilitásnak.
A mikrofon egy membránból áll, amely a hangnyomás hatására rezeg, és egy rögzített elektródából, amelyek kondenzátort alkotnak. A lemezek közötti távolság változása megváltoztatja a kapacitást, ami modulálja a kimeneti feszültséget. MEMS-mikrofonokban a membrán poliszilíciumból készül fotolitográfiás eljárással — ez biztosítja az összes mikrofon azonos jellemzőit egy tételen belül.
A MEMS-mikrofon kimeneti jele — PDM (Pulse Density Modulation) — egy egybites adatfolyam 1–4 MHz mintavételezési frekvenciával. Az okostelefon kodekei a PDM-et PCM-mé (Pulse Code Modulation) dekódolják egy digitális decimációs szűrőn keresztül, így szabványos 16–24 bites audio formátumot kapnak 44.1–96 kHz frekvenciával az alkalmazás általi feldolgozáshoz.
A MEMS megjelenése előtt mobil eszközökben elektret kondenzátor mikrofonokat (ECM) használtak. Ezekben a membrán állandó elektromos töltéssel (elektret) rendelkezett, és a membrán rezgései változó feszültséget hoztak létre. Az ECM-mikrofonok nagyobbak (4–6 mm) és külön előerősítőt igényelnek, ami növeli a nyomtatott áramköri lapon elfoglalt helyet.
| Paraméter | MEMS-mikrofon | Elektret (ECM) |
|---|---|---|
| Ház mérete | 2.5 × 1.5 × 1.0 mm | 4 × 2.5 × 1.5 mm |
| Érzékenység | −26 ± 1 dB (FS) | −38 ± 3 dB (FS) |
| SNR (tipikus) | 64–69 dBA | 58–64 dBA |
| AOP (max. SPL) | 125–135 dB | 115–125 dB |
| Áramfelvétel | 150–300 µA | 300–500 µA |
| Hőmérséklet tartomány | −40…+105 °C | −20…+70 °C |
A MEMS-mikrofonok dominálnak a kisebb méretek, a jellemzők stabilitása és a szabványos SMD sorokon való forraszthatóság miatt. Az ECM-eket azonban továbbra is használják költségvetési eszközökben az alacsonyabb komponensköltség miatt ($0.15–0.30 szemben a MEMS $0.25–0.60 árával).
A modern okostelefonok 3–4 mikrofont tartalmaznak, amelyek elhelyezkedése meghatározza a felvétel és a zajszűrés minőségét. Az elsődleges mikrofon (alsó) az alsó élen található az USB-C port mellett — ez rögzíti a felhasználó hangját beszélgetés és videofelvétel során. Az elülső (felső) — a felső élen hangparancsokhoz és a második csatornához sztereó felvételnél.
A hátsó mikrofon általában a kamera mellett a hátlapon helyezkedik el, és kizárólag zajszűrésre használják. A jele nem kerül rögzítésre az audio fájlban — csak a digitális processzor vonja ki az elsődleges mikrofon jeléből. Néhány zászlóshajóban (iPhone 16 Pro, Samsung Galaxy S25) egy negyedik mikrofon is található az előlapi kamera notchában a videohívások minőségének javítására.
A sztereó videofelvétel az alsó és felső mikrofonok kombinációjával valósul meg. Az iOS automatikusan kiválasztja a mikrofonpárt az eszköz tájolásától függően — fekvő felvételnél a bal csatorna a bal érről, a jobb a jobb érről származik. Androidon ez a logika az OEM gyártó implementációjától függ, és modellenként eltérő lehet.
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 puffer feldolgozása
}
Az AudioSource.CAMCORDER kiválasztja a videofelvételhez optimális mikrofont — általában ez az alsó elsődleges mikrofon automatikus erősítésszabályozással. Hangfelvételhez a VOICE_RECOGNITION használatos — ez a forrás kikapcsol minden szűrőt és zajszűrést a tiszta jel érdekében beszédfelismeréshez.
Aktív zajszűrés (Active Noise Cancellation, ANC) az okostelefonokban differenciális módszeren alapul: a második mikrofon (referencia) főként a háttérzajt rögzíti, az elsődleges (primer) pedig a hang és zaj keverékét. A digitális jelfeldolgozó (DSP) kivonja a referencia jelet a primer jelből, így csak a tiszta hang marad.
A zajszűrés minősége a mikrofonok közötti távolságtól és irányítottságuktól függ. Az egyenletes zaj (repülőgép, ventilátor) tipikus elnyomása — 20–35 dB. Impulzív zajok (ajtócsapódás, edénycsörrenés) esetén egy további tranziens elnyomó blokkot használnak, amely a torzított szakaszt a szomszédos minták közelítő jelével helyettesíti.
A fejlesztő csak az audio munkamenet paraméterein keresztül befolyásolhatja a zajszűrési algoritmusokat: Androidon — AudioManager.setParameters("noise_suppression=on/off"), iOS-en — AVAudioSession kategória .playAndRecord az .allowBluetoothA2DP opcióval. Felismeréshez történő rögzítéskor a zajszűrést általában kikapcsolják — az STT algoritmusok pontosabban működnek az eredeti jellel.
AudioRecord (Android) — alacsony szintű API a PCM adatok közvetlen rögzítéséhez a mikrofonból. Az alkalmazás nyers audio adatokat tartalmazó puffercket kap, amelyek valós időben feldolgozhatók: hangerő analízis, frekvencia analízis (FFT), VAD (Voice Activity Detection). A minimális puffert az AudioRecord.getMinBufferSize() segítségével számítják ki — kisebb méret használata késleltetést vagy rögzítési hibát okoz.
AVAudioEngine (iOS) — moduláris gráf audiofeldolgozáshoz, ahol a bemeneti csomópont (AVAudioInputNode) a fő keverőhöz vagy közvetlenül a tap-kezelőhöz csatlakozik. Az engine lehetővé teszi az RMS (Root Mean Square) — a jel hangerejének mutatója — és a frekvenciaspektrum valós idejű elemzését az AVAudioUnitEQ-n keresztül.
A platformok fő különbségei: iOS-en a rögzítés kötelezően aktiválni kell az AVAudioSession-t .playAndRecord vagy .record kategóriával; Androidon — RECORD_AUDIO engedély (futásidejű engedély) és AudioSource forrás. A Flutter a record plugint használja e különbségek absztrahálására.
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 hangerő: \(rms)")
}
try engine.start()
A kód egy tap-et helyez el az AVAudioEngine motor bemeneti csomópontján. Minden audio puffer a mikrofon monofonikus jelének float adatait tartalmazza. Az RMS az amplitúdó négyzetes középértékeként számítható — a hangosság szabványos mutatója a 0.0 (csend) és a ~0.5–1.0 (hangos beszéd) tartományban.
A mikrofon minőségének értékeléséhez kulcsfontosságú paramétereket használnak. SNR (Signal-to-Noise Ratio) — a jelszint és a mikrofon saját zajának aránya, dBA-ban mérve. Minél magasabb az SNR, annál csendesebb a háttérzaj a felvételen. Hanghívásokhoz 62–64 dBA elegendő, zenei rögzítéshez — 68+ dBA.
AOP (Acoustic Overload Point) — a maximális hangnyomásszint (SPL), amelyet a mikrofon képes torzítás nélkül átalakítani. Egy tipikus MEMS-mikrofon esetében AOP = 125 dB. Koncerteken (110–120 dB) a felvétel tiszta lesz, de 130+ dB-nél (közeli tűzijáték) nemlineáris torzítás jelenik meg (THD > 10%).
A frekvencia tartomány meghatározza, hogy a mikrofon milyen frekvenciákat rögzít csillapítás nélkül. Hanghoz 300–3400 Hz (telefon szabvány, POTS) elegendő. Zenéhez és videóhoz — 20–20000 Hz. A legújabb generációs okostelefonok MEMS-mikrofonjai (Knowles SPH9855) 30–18000 Hz-es tartományt biztosítanak ±3 dB egyenetlenséggel.
Gyakran Ismételt Kérdések
A modern okostelefonok 3–4 mikrofont tartalmaznak: elsődleges (alsó él, hívásokhoz és videofelvételhez), elülső (felső él, hangparancsok), hátsó (hátlap, zajszűrés). A zászlóshajók (iPhone 16 Pro, Galaxy S25) egy negyedik mikrofont adnak az előlapi kamera közelében a videohívások minőségének javítására.
Androidon — kérje a RECORD_AUDIO futásidejű engedélyt, és használja az AudioRecord vagy MediaRecorder osztályt. iOS-en — aktiválja az AVAudioSession-t .playAndRecord kategóriával, és használja az AVAudioEngine vagy AVAudioRecorder osztályt. Mindkét platform megköveteli a felhasználó kifejezett hozzájárulását egy rendszer párbeszédablakon keresztül.
SNR (Signal-to-Noise Ratio) — a hasznos jel és a mikrofon saját zajának aránya. A 64 dBA érték azt jelenti, hogy hangfelvételkor a zajszint 64 dB-lel alacsonyabb lesz a hang szintjénél. A 62–64 dBA SNR jó hívásokhoz, a 68+ dBA pedig zenei rögzítéshez számít jónak.
Tipikus okok: a RECORD_AUDIO futásidejű engedély nincs lekérve (Android 6+); nincs megadva AudioSource (pl. CAMCORDER a VOICE_RECOGNITION helyett); az eszköz nem rendelkezik mikrofonnal (Android TV); egy másik folyamat már lefoglalta a mikrofont. Ellenőrizze az inicializálás állapotát az AudioRecord.getState() segítségével.
Androidon — szerezze be a PCM puffert az AudioRecord.read()-en keresztül, számítsa ki az RMS-t sqrt(sum(samples²) / count) képlettel. iOS-en — helyezzen el egy tap-et az AVAudioInputNode-on az installTap(forBus:) segítségével, és hasonlóan számítsa ki az RMS-t a floatChannelData-ból. Az RMS normalizált: 0.0 (csend) és körülbelül 1.0 (ADC maximum) között.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is