Ang mikropono sa mga mobile device — isang akustik-electrik na transduser na nagko-convert ng mga sound wave sa electrical signal para sa digitalisasyon at pagproseso. Sa mga modernong smartphone, ginagamit ang mga MEMS mikropono na may capacitive principle at built-in na ADC. Ayon sa datos ng Yole Group, 2025, taun-taon ay ipinapadala ang 6 bilyon na MEMS mikropono, kung saan 35% ay naka-install sa mga smartphone — 3–4 mikropono bawat device.
Mga Pangunahing Punto
Mikropono — isang electroacoustic device na nagko-convert ng mga oscillation ng sound pressure sa electrical signal. Ayon sa prinsipyo ng pagpapatakbo, nahahati sila sa dynamic (coil sa magnetic field), capacitive (pagbabago ng kapasidad) at piezoelectric. Sa mga mobile device, ang karamihan ay capacitive MEMS mikropono dahil sa miniature size (2.5 × 1.5 mm) at compatibility sa surface-mount technology (SMD).
Ang mikropono ay binubuo ng isang membrane na nag-o-oscillate sa ilalim ng sound pressure at isang nakatigil na electrode, na bumubuo ng isang capacitor. Ang pagbabago ng distansya sa pagitan ng mga plates ay nagbabago ng kapasidad, na nagmo-modulate ng output voltage. Sa MEMS mikropono, ang membrane ay gawa sa polysilicon gamit ang photolithography — tinitiyak nito ang pagkakakilanlan ng mga katangian ng lahat ng mikropono sa isang batch.
Ang output signal ng MEMS mikropono — PDM (Pulse Density Modulation) — isang one-bit stream na may sampling frequency na 1–4 MHz. Ang mga codec ng smartphone ay nagde-decode ng PDM sa PCM (Pulse Code Modulation) sa pamamagitan ng digital decimation filter, na nakakakuha ng standard audio format na 16–24 bit na may frequency na 44.1–96 kHz para sa pagproseso ng app.
Bago dumating ang MEMS sa mga mobile device, ginamit ang electret capacitor mikropono (ECM). Sa mga ito, ang membrane ay may permanenteng electrical charge (electret), at ang mga oscillation ng membrane ay lumikha ng variable voltage. Ang mga ECM mikropono ay mas malaki (4–6 mm) at nangangailangan ng hiwalay na preamplifier, na nagpapataas ng area sa board.
| Parameter | MEMS mikropono | Electret (ECM) |
|---|---|---|
| Sukat ng housing | 2.5 × 1.5 × 1.0 mm | 4 × 2.5 × 1.5 mm |
| Sensitivity | −26 ± 1 dB (FS) | −38 ± 3 dB (FS) |
| SNR (tipikal) | 64–69 dBA | 58–64 dBA |
| AOP (max. SPL) | 125–135 dB | 115–125 dB |
| Konsumo ng kuryente | 150–300 µA | 300–500 µA |
| Saklaw ng temperatura | −40…+105 °C | −20…+70 °C |
Ang MEMS mikropono ay nangingibabaw dahil sa mas maliit na sukat, stability ng mga katangian at solderability sa standard SMD lines. Gayunpaman, ang ECM ay patuloy na ginagamit sa mga budget device dahil sa mas mababang halaga ng component ($0.15–0.30 kumpara sa $0.25–0.60 para sa MEMS).
Ang mga modernong smartphone ay naglalaman ng 3 hanggang 4 na mikropono, na ang pagkakalagay ay tumutukoy sa kalidad ng pag-record at noise cancellation. Ang pangunahing mikropono (ibaba) ay matatagpuan sa ibabang gilid malapit sa USB-C port — nire-record nito ang boses ng user habang tumatawag at nagve-video. Ang harap (itaas) — sa itaas na gilid para sa voice command at pangalawang channel sa stereo recording.
Ang likurang mikropono ay karaniwang inilalagay malapit sa camera sa likurang panel at ginagamit lamang para sa noise cancellation. Ang signal nito ay hindi nire-record sa audio file — ito ay ibinabawas lamang ng digital processor mula sa signal ng pangunahing mikropono. Sa ilang flagship (iPhone 16 Pro, Samsung Galaxy S25), naka-install ang ikaapat na mikropono sa front camera notch para mapabuti ang pag-record sa mga video call.
Ang stereo video recording ay naisasakatuparan sa pamamagitan ng kombinasyon ng ibaba at itaas na mikropono. Awtomatikong pinipili ng iOS ang pares ng mikropono depende sa orientation ng device — sa landscape recording, ang kaliwang channel ay kinukuha mula sa kaliwang gilid, kanan mula sa kanang gilid. Sa Android, ang logic na ito ay depende sa implementasyon ng OEM manufacturer at maaaring mag-iba sa pagitan ng mga modelo.
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)
// Pagproseso ng PCM buffer
}
Pinipili ng AudioSource.CAMCORDER ang pinakamainam na mikropono para sa video recording — karaniwan ito ang ibabang pangunahing mikropono na may automatic gain control. Para sa voice recording, ginagamit ang VOICE_RECOGNITION — ang source na ito ay nagdi-disable ng lahat ng filter at noise cancellation para sa malinis na signal para sa speech recognition.
Active noise cancellation (ANC) sa mga smartphone ay batay sa differential method: ang pangalawang mikropono (reference) ay nagre-record ng pangunahing background noise, at ang pangunahing mikropono (primary) — pinaghalong boses at ingay. Ang digital signal processor (DSP) ay nagbabawas ng reference signal mula sa primary, nag-iiwan lamang ng malinis na boses.
Ang kalidad ng noise cancellation ay depende sa distansya sa pagitan ng mga mikropono at ng kanilang directivity. Tipikal na pagsugpo ng uniform noise (eroplano, bentilador) — 20–35 dB. Para sa impulsive noise (pagsara ng pinto, pagkabasag ng pinggan) ginagamit ang karagdagang transient suppression block na pumapalit sa distorted segment ng approximated signal ng mga kalapit na sample.
Ang developer ay maaaring maka-impluwensya sa noise cancellation algorithms lamang sa pamamagitan ng mga parameter ng audio session: sa Android — AudioManager.setParameters("noise_suppression=on/off"), sa iOS — AVAudioSession category .playAndRecord na may opsyon na .allowBluetoothA2DP. Kapag nagre-record para sa pagkilala, ang noise cancellation ay karaniwang naka-off — ang STT algorithms ay gumagana nang mas tumpak sa orihinal na signal.
AudioRecord (Android) — low-level API para sa direktang pag-record ng PCM data mula sa mikropono. Ang app ay tumatanggap ng mga buffer na may raw audio data na maaaring iproseso sa real-time: volume analysis, frequency analysis (FFT), VAD (Voice Activity Detection). Ang minimum buffer ay kinakalkula sa pamamagitan ng AudioRecord.getMinBufferSize() — ang paggamit ng mas maliit na sukat ay nagdudulot ng pagkaantala o error sa pag-record.
AVAudioEngine (iOS) — isang modular graph para sa audio processing, kung saan ang input node (AVAudioInputNode) ay kumokonekta sa main mixer o direkta sa tap handler. Ang engine ay nagpapahintulot ng real-time analysis ng RMS (Root Mean Square) — indicator ng volume ng signal — at frequency spectrum sa pamamagitan ng AVAudioUnitEQ.
Mga pangunahing pagkakaiba ng platform: sa iOS, ang pag-record ay nangangailangan ng mandatoryong pag-activate ng AVAudioSession na may category na .playAndRecord o .record; sa Android — permission na RECORD_AUDIO (runtime permission) at AudioSource. Ginagamit ng Flutter ang record plugin para sa abstraction ng mga pagkakaibang ito.
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()
Ang code ay nagse-set ng tap sa input node ng AVAudioEngine engine. Ang bawat audio buffer ay naglalaman ng float data ng monophonic signal mula sa mikropono. Ang RMS ay kinakalkula bilang root mean square ng amplitude — ang standard na indicator ng volume ng tunog sa range na 0.0 (tahimik) hanggang ~0.5–1.0 (malakas na boses).
Para sa pagtatasa ng kalidad ng mikropono, ginagamit ang mga pangunahing parameter. SNR (Signal-to-Noise Ratio) — ratio ng signal level sa sariling ingay ng mikropono, sinusukat sa dBA. Kung mas mataas ang SNR, mas tahimik ang background noise sa recording. Para sa voice calls, sapat na ang 62–64 dBA, para sa music recording — 68+ dBA.
AOP (Acoustic Overload Point) — ang maximum na sound pressure level (SPL) na kayang i-convert ng mikropono nang walang clipping. Para sa tipikal na MEMS mikropono, AOP = 125 dB. Sa mga concert (110–120 dB), magiging malinis ang recording, ngunit sa 130+ dB (paputok sa malapit) lilitaw ang non-linear distortion (THD > 10%).
Ang frequency range ay tumutukoy kung aling mga frequency ang nire-record ng mikropono nang walang attenuation. Para sa boses, sapat na ang 300–3400 Hz (telephone standard, POTS). Para sa musika at video — 20–20000 Hz. Ang MEMS mikropono sa mga pinakabagong smartphone (Knowles SPH9855) ay nagbibigay ng range na 30–18000 Hz na may non-uniformity na ±3 dB.
Mga Madalas Itanong
Ang mga modernong smartphone ay naglalaman ng 3 hanggang 4 na mikropono: pangunahin (ibabang gilid, para sa tawag at video recording), harap (itaas na gilid, voice command), likuran (likurang panel, noise cancellation). Ang mga flagship (iPhone 16 Pro, Galaxy S25) ay nagdadagdag ng ikaapat na mikropono malapit sa front camera para mapabuti ang pag-record sa mga video call.
Sa Android — humiling ng runtime permission na RECORD_AUDIO at gumamit ng AudioRecord o MediaRecorder. Sa iOS — i-activate ang AVAudioSession na may category na .playAndRecord at gumamit ng AVAudioEngine o AVAudioRecorder. Ang parehong platform ay nangangailangan ng tahasang pahintulot ng user sa pamamagitan ng system dialog.
SNR (Signal-to-Noise Ratio) — ratio ng kapaki-pakinabang na signal sa sariling ingay ng mikropono. Ang halagang 64 dBA ay nangangahulugan na kapag nagre-record ng boses, ang ingay level ay 64 dB na mas mababa kaysa sa voice level. Ang SNR na 62–64 dBA ay itinuturing na mahusay para sa tawag at 68+ dBA para sa music recording.
Mga karaniwang dahilan: hindi hiniling ang runtime permission na RECORD_AUDIO (Android 6+); hindi tinukoy ang AudioSource (hal. CAMCORDER sa halip na VOICE_RECOGNITION); walang mikropono ang device (Android TV); ibang proseso ang naka-capture na sa mikropono. Suriin ang status ng initialization sa pamamagitan ng AudioRecord.getState().
Sa Android — kunin ang PCM buffer sa pamamagitan ng AudioRecord.read(), kalkulahin ang RMS bilang sqrt(sum(samples²) / count). Sa iOS — mag-set ng tap sa AVAudioInputNode sa pamamagitan ng installTap(forBus:) at kalkulahin ang RMS mula sa floatChannelData. Ang RMS ay na-normalize: 0.0 (tahimik) hanggang humigit-kumulang 1.0 (maximum ADC).
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din