Mikrofonen i mobila enheter — en akustisk-elektrisk omvandlare som omvandlar ljudvågor till elektrisk signal för efterföljande digitalisering och bearbetning. I moderna smartphones används MEMS-mikrofoner med kapacitiv funktionsprincip och inbyggd ADC. Enligt data från Yole Group, 2025 levereras årligen över 6 miljarder MEMS-mikrofoner, varav 35% installeras i smartphones — 3–4 mikrofoner per enhet.
Huvudpunkter
Mikrofon — en elektroakustisk enhet som omvandlar ljudtrycksvängningar till elektrisk signal. Efter funktionsprincip delas de in i dynamiska (spole i magnetfält), kapacitiva (kapacitansändring) och piezoelektriska. I mobila enheter utgör kapacitiva MEMS-mikrofoner den absoluta majoriteten tack vare sina miniatyriska mått (2.5 × 1.5 mm) och kompatibilitet med ytmontering (SMD).
En mikrofon består av ett membran som vibrerar under ljudtryck och en fast elektrod, som bildar en kondensator. Förändring av avståndet mellan plattorna ändrar kapacitansen, vilket modulerar utspänningen. I MEMS-mikrofoner tillverkas membranet av polykisel med fotolitografisk metod — detta säkerställer identiska egenskaper för alla mikrofoner i en batch.
Utgångssignalen från en MEMS-mikrofon — PDM (Pulse Density Modulation) — är en enbitsström med samplingsfrekvens 1–4 MHz. Smartphonens codec avkodar PDM till PCM (Pulse Code Modulation) genom ett digitalt decimeringsfilter och erhåller standard audioformat 16–24 bitar med frekvens 44.1–96 kHz för bearbetning av applikationen.
Innan MEMS kom till mobila enheter användes elektretkapacitiva mikrofoner (ECM). I dessa hade membranet en permanent elektrisk laddning (elektret) och membranets vibrationer skapade en varierande spänning. ECM-mikrofoner är större (4–6 mm) och kräver en separat förförstärkare, vilket ökar arean på kretskortet.
| Parameter | MEMS-mikrofon | Elektret (ECM) |
|---|---|---|
| Husstorlek | 2.5 × 1.5 × 1.0 mm | 4 × 2.5 × 1.5 mm |
| Känslighet | −26 ± 1 dB (FS) | −38 ± 3 dB (FS) |
| SNR (typisk) | 64–69 dBA | 58–64 dBA |
| AOP (max. SPL) | 125–135 dB | 115–125 dB |
| Strömförbrukning | 150–300 µA | 300–500 µA |
| Temperaturområde | −40…+105 °C | −20…+70 °C |
MEMS-mikrofoner dominerar tack vare mindre dimensioner, stabila egenskaper och lödbarbet på standard SMD-linjer. ECM används dock fortfarande i budgetenheter på grund av lägre komponentkostnad ($0.15–0.30 jämfört med $0.25–0.60 för MEMS).
Moderna smartphones innehåller 3 till 4 mikrofoner, vars placering bestämmer inspelningskvalitet och brusreducering. Den primära mikrofonen (nedre) sitter på nedre kanten bredvid USB-C-porten — den spelar in användarens röst under samtal och videoinspelning. Den främre (övre) — på övre kanten för röstkommandon och andra kanalen vid stereoinspelning.
Den bakre mikrofonen är vanligtvis placerad bredvid kameran på baksidan och används uteslutande för brusreducering. Dess signal spelas inte in i ljudfilen — den subtraheras bara av den digitala processorn från den primära mikrofonens signal. I vissa flaggskepp (iPhone 16 Pro, Samsung Galaxy S25) installeras en fjärde mikrofon i främre kamerans hack för att förbättra inspelningen under videosamtal.
Stereovideoinspelning realiseras genom kombination av nedre och övre mikrofoner. iOS väljer automatiskt mikrofonpar beroende på enhetens orientering — vid liggande inspelning tas vänster kanal från vänster kant, höger från höger kant. På Android beror denna logik på OEM-tillverkarens implementering och kan skilja sig mellan modeller.
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-buffertbearbetning
}
AudioSource.CAMCORDER väljer den optimala mikrofonen för videoinspelning — vanligtvis är detta den nedre primära mikrofonen med automatisk förstärkningsreglering. För röstinspelning används VOICE_RECOGNITION — denna källa stänger av alla filter och brusreducering för ren signal avsedd för taligenkänning.
Aktiv brusreducering (Active Noise Cancellation, ANC) i smartphones baseras på differentiell metod: den andra mikrofonen (referens) spelar in huvudsakligen bakgrundsbrus och den primära — blandning av röst och brus. Den digitala signalprocessorn (DSP) subtraherar referenssignalen från den primära och lämnar bara ren röst.
Kvaliteten på brusreducering beror på avståndet mellan mikrofonerna och deras riktningsverkan. Typisk dämpning av jämnt brus (flygplan, fläkt) — 20–35 dB. För impulsbrus (dörrslag, diskdunk) används ett extra transient suppression-block som ersätter det distorderade segmentet med en approximerad signal från närliggande sampel.
Utvecklaren kan påverka brusreduceringsalgoritmerna endast via ljudsessionens parametrar: på Android — AudioManager.setParameters("noise_suppression=on/off"), på iOS — AVAudioSession-kategori .playAndRecord med alternativ .allowBluetoothA2DP. Vid inspelning för taligenkänning stängs brusreducering vanligtvis av — STT-algoritmer fungerar mer exakt med originalsignalen.
AudioRecord (Android) — lågnivå-API för direkt inspelning av PCM-data från mikrofonen. Appen tar emot buffertar med råa ljuddata som kan bearbetas i realtid: volymanalys, frekvensanalys (FFT), VAD (Voice Activity Detection). Minimal buffert beräknas via AudioRecord.getMinBufferSize() — användning av mindre storlek orsakar fördröjning eller inspelningsfel.
AVAudioEngine (iOS) — en modulär graf för ljudbearbetning, där inmatningsnoden (AVAudioInputNode) ansluts till huvudmixern eller direkt till tap-handlern. Motorn möjliggör realtidsanalys av RMS (Root Mean Square) — signalvolymindikator — och frekvensspektrum via AVAudioUnitEQ.
Viktiga plattformsskillnader: på iOS kräver inspelning obligatorisk aktivering av AVAudioSession med kategori .playAndRecord eller .record; på Android — tillstånd RECORD_AUDIO (runtime-tillstånd) och ljudkälla AudioSource. Flutter använder plugin-programmet record för att abstrahera dessa skillnader.
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-volym: \(rms)")
}
try engine.start()
Koden sätter en tap på inmatningsnod i AVAudioEngine-motorn. Varje ljudbuffert innehåller float-data från den monofoniska signalen från mikrofonen. RMS beräknas som roten ur medelvärdet av amplituden i kvadrat — standardindikatorn för ljudvolym i intervallet 0.0 (tystnad) till cirka 0.5–1.0 (hög röst).
För att bedöma mikrofonkvalitet används nyckelparametrar. SNR (Signal-to-Noise Ratio) — förhållandet mellan signalnivå och mikrofonens egenbrus, mätt i dBA. Ju högre SNR, desto tystare bakgrundsbrus i inspelningen. För röstsamtal räcker 62–64 dBA, för musikinspelning — 68+ dBA.
AOP (Acoustic Overload Point) — maximal ljudtrycksnivå (SPL) som mikrofonen kan omvandla utan klippning. För en typisk MEMS-mikrofon är AOP = 125 dB. På konserter (110–120 dB) blir inspelningen ren, men vid 130+ dB (närliggande fyrverkeri) uppstår olinjär distorsion (THD > 10%).
Frekvensomfånget bestämmer vilka frekvenser mikrofonen spelar in utan dämpning. För röst räcker 300–3400 Hz (telefonstandard, POTS). För musik och video — 20–20000 Hz. MEMS-mikrofoner i smartphones av senaste generationen (Knowles SPH9855) ger ett omfång på 30–18000 Hz med ojämnhet på ±3 dB.
Vanliga frågor
Moderna smartphones innehåller 3 till 4 mikrofoner: primär (nedre kant, för samtal och videoinspelning), främre (övre kant, röstkommandon), bakre (bakpanel, brusreducering). Flaggskeppen (iPhone 16 Pro, Galaxy S25) lägger till en fjärde mikrofon vid frontkameran för att förbättra inspelningen under videosamtal.
På Android — begär runtime-tillstånd RECORD_AUDIO och använd AudioRecord eller MediaRecorder. På iOS — aktivera AVAudioSession med kategori .playAndRecord och använd AVAudioEngine eller AVAudioRecorder. Båda plattformarna kräver uttryckligt användarsamtycke via en systemdialog.
SNR (Signal-to-Noise Ratio) — förhållandet mellan användbar signal och mikrofonens egenbrus. Ett värde på 64 dBA innebär att vid röstinspelning kommer brusnivån att vara 64 dB lägre än röstnivån. SNR 62–64 dBA anses bra för samtal och 68+ dBA för musikinspelning.
Typiska orsaker: runtime-tillstånd RECORD_AUDIO har inte begärts (Android 6+); ingen AudioSource angiven (t.ex. CAMCORDER istället för VOICE_RECOGNITION); enheten har ingen mikrofon (Android TV); en annan process har redan fångat mikrofonen. Kontrollera initialiseringsstatus via AudioRecord.getState().
På Android — hämta PCM-buffert via AudioRecord.read(), beräkna RMS som sqrt(sum(samples²) / count). På iOS — sätt en tap på AVAudioInputNode via installTap(forBus:) och beräkna RMS på liknande sätt från floatChannelData. RMS är normaliserat: 0.0 (tystnad) till cirka 1.0 (max ADC).
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också