میکروفون در دستگاههای موبایل — مبدل آکوستیک-الکتریکی که امواج صوتی را برای دیجیتالیسازی و پردازش بعدی به سیگنال الکتریکی تبدیل میکند. در گوشیهای هوشمند مدرن از میکروفونهای MEMS با اصل کار خازنی و ADC داخلی استفاده میشود. طبق گزارش Yole Group, 2025، سالانه بیش از ۶ میلیارد میکروفون MEMS ارسال میشود که ۳۵٪ از آنها در گوشیهای هوشمند نصب میشوند — ۳–۴ میکروفون در هر دستگاه.
نکات اصلی
میکروفون — دستگاه الکتروآکوستیکی که نوسانات فشار صوت را به سیگنال الکتریکی تبدیل میکند. بر اساس اصل کار به دو دسته دینامیکی (سیمپیچ در میدان مغناطیسی)، خازنی (تغییر ظرفیت) و پیزوالکتریک تقسیم میشوند. در دستگاههای موبایل اکثریت مطلق میکروفونهای خازنی MEMS به دلیل اندازههای مینیاتوری (۲.۵ × ۱.۵ میلیمتر) و سازگاری با نصب سطحی (SMD) هستند.
میکروفون از غشایی تشکیل شده که تحت فشار صوت نوسان میکند و یک الکترود ثابت که یک خازن را تشکیل میدهند. تغییر فاصله بین صفحات ظرفیت را تغییر میدهد که ولتاژ خروجی را مدوله میکند. در میکروفونهای MEMS غشا از پلیسیلیکون به روش فوتولیتوگرافی ساخته میشود — این یکسانی ویژگیهای همه میکروفونهای یک دسته را تضمین میکند.
سیگنال خروجی میکروفون MEMS — PDM (Pulse Density Modulation) — جریان تکبیتی با نرخ نمونهبرداری ۱–۴ مگاهرتز. کدکهای گوشی هوشمند PDM را از طریق فیلتر دیجیتال دسیماگر به PCM (Pulse Code Modulation) تبدیل میکنند و فرمت صوتی استاندارد ۱۶–۲۴ بیت با فرکانس ۴۴.۱–۹۶ کیلوهرتز برای پردازش توسط برنامه به دست میآید.
پیش از ظهور MEMS در دستگاههای موبایل از میکروفونهای خازنی الکترت (ECM) استفاده میشد. در آنها غشا بار الکتریکی دائمی (الکترت) داشت و نوسانات غشا ولتاژ متغیر ایجاد میکرد. میکروفونهای ECM بزرگتر هستند (۴–۶ میلیمتر) و نیاز به پیشتقویتکننده جداگانه دارند که سطح روی برد را افزایش میدهد.
| پارامتر | میکروفون MEMS | الکترت (ECM) |
|---|---|---|
| اندازه بدنه | ۲.۵ × ۱.۵ × ۱.۰ میلیمتر | ۴ × ۲.۵ × ۱.۵ میلیمتر |
| حساسیت | −۲۶ ± ۱ دسیبل (FS) | −۳۸ ± ۳ دسیبل (FS) |
| SNR (معمول) | ۶۴–۶۹ dBA | ۵۸–۶۴ dBA |
| AOP (حداکثر SPL) | ۱۲۵–۱۳۵ دسیبل | ۱۱۵–۱۲۵ دسیبل |
| مصرف جریان | ۱۵۰–۳۰۰ µA | ۳۰۰–۵۰۰ µA |
| محدوده دمایی | ۴۰−…۱۰۵+ °C | ۲۰−…۷۰+ °C |
میکروفونهای MEMS به دلیل ابعاد کوچکتر، پایداری ویژگیها و قابلیت لحیمکاری روی خطوط استاندارد SMD غالب هستند. با این حال ECM به دلیل هزینه کمتر قطعه (۰.۱۵–۰.۳۰ دلار در مقابل ۰.۲۵–۰.۶۰ دلار برای MEMS) همچنان در دستگاههای اقتصادی استفاده میشوند.
گوشیهای هوشمند مدرن شامل ۳ تا ۴ میکروفون هستند که موقعیت آنها کیفیت ضبط و حذف نویز را تعیین میکند. میکروفون اصلی (پایین) در لبه پایینی کنار پورت USB-C قرار دارد — صدای کاربر را هنگام مکالمه و فیلمبرداری ضبط میکند. جلویی (بالا) — در لبه بالایی برای دستورات صوتی و کانال دوم در ضبط استریو.
میکروفون عقبی معمولاً در کنار دوربین در پنل پشتی قرار دارد و صرفاً برای حذف نویز استفاده میشود. سیگنال آن در فایل صوتی ذخیره نمیشود — فقط توسط پردازنده دیجیتال از سیگنال میکروفون اصلی کسر میشود. در برخی پرچمداران (iPhone 16 Pro, Samsung Galaxy S25) میکروفون چهارم در بریدگی دوربین جلو برای بهبود ضبط در تماسهای تصویری نصب میشود.
ضبط استریوی ویدیو از طریق ترکیب میکروفونهای پایینی و بالایی انجام میشود. 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) در گوشیهای هوشمند بر اساس روش دیفرانسیلی است: میکروفون دوم (مرجع) عمدتاً نویز پسزمینه را ضبط میکند و میکروفون اصلی (اولیه) ترکیبی از صدا و نویز را. پردازنده سیگنال دیجیتال (DSP) سیگنال مرجع را از اولیه کم میکند و تنها صدای خالص باقی میماند.
کیفیت حذف نویز به فاصله بین میکروفونها و جهتگیری آنها بستگی دارد. سرکوب معمول نویز یکنواخت (هواپیما، فن) — ۲۰–۳۵ دسیبل. برای نویزهای ضربهای (کوبیدن در، برخورد ظروف) از بلوک اضافی 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-handler متصل میشود. Engine امکان تحلیل زمان واقعی RMS (Root Mean Square) — شاخص بلندی سیگنال — و طیف فرکانس را از طریق AVAudioUnitEQ فراهم میکند.
تفاوتهای کلیدی پلتفرمها: در iOS ضبط نیاز به فعالسازی اجباری AVAudioSession با دسته .playAndRecord یا .record دارد؛ در Android — مجوز RECORD_AUDIO (مجوز زمان اجرا) و منبع 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 به عنوان ریشه میانگین مربعات دامنه محاسبه میشود — شاخص استاندارد بلندی صدا در محدوده ۰.۰ (سکوت) تا حدود ۰.۵–۱.۰ (صدای بلند).
برای ارزیابی کیفیت میکروفون از پارامترهای کلیدی استفاده میشود. SNR (Signal-to-Noise Ratio) — نسبت سطح سیگنال به نویز ذاتی میکروفون، برحسب dBA اندازهگیری میشود. هرچه SNR بالاتر باشد، نویز پسزمینه در ضبط کمتر است. برای تماسهای صوتی ۶۲–۶۴ dBA کافی است، برای ضبط موسیقی — ۶۸+ dBA.
AOP (Acoustic Overload Point) — حداکثر سطح فشار صوتی (SPL) که میکروفون میتواند بدون کلیپینگ تبدیل کند. برای یک میکروفون MEMS معمولی AOP = ۱۲۵ دسیبل. در کنسرتها (۱۱۰–۱۲۰ دسیبل) ضبط تمیز خواهد بود، اما در ۱۳۰+ دسیبل (آتشبازی نزدیک) اعوجاج غیرخطی (THD > ۱۰٪) ظاهر میشود.
محدوده فرکانسی تعیین میکند که میکروفون چه فرکانسهایی را بدون تضعیف ضبط میکند. برای صدا ۳۰۰–۳۴۰۰ هرتز (استاندارد تلفن، POTS) کافی است. برای موسیقی و ویدیو — ۲۰–۲۰۰۰۰ هرتز. میکروفونهای MEMS در گوشیهای هوشمند نسل آخر (Knowles SPH9855) محدوده ۳۰–۱۸۰۰۰ هرتز با غیریکنواختی ±۳ دسیبل ارائه میدهند.
سوالات متداول
گوشیهای هوشمند مدرن شامل ۳ تا ۴ میکروفون هستند: اصلی (لبه پایینی، برای تماسها و فیلمبرداری)، جلویی (لبه بالایی، دستورات صوتی)، عقبی (پنل پشتی، حذف نویز). پرچمداران (iPhone 16 Pro, Galaxy S25) میکروفون چهارم را در کنار دوربین جلو برای بهبود ضبط در تماسهای تصویری اضافه میکنند.
در Android — درخواست مجوز زمان اجرا RECORD_AUDIO و استفاده از AudioRecord یا MediaRecorder. در iOS — فعالسازی AVAudioSession با دسته .playAndRecord و استفاده از AVAudioEngine یا AVAudioRecorder. هر دو پلتفرم نیاز به رضایت صریح کاربر از طریق دیالوگ سیستمی دارند.
SNR (Signal-to-Noise Ratio) — نسبت سیگنال مفید به نویز ذاتی میکروفون. مقدار ۶۴ dBA به این معنی است که هنگام ضبط صدا، سطح نویز ۶۴ دسیبل پایینتر از سطح صدا خواهد بود. SNR ۶۲–۶۴ dBA برای تماسها و ۶۸+ dBA برای ضبط موسیقی خوب محسوب میشود.
دلایل معمول: مجوز زمان اجرا RECORD_AUDIO درخواست نشده (Android 6+)؛ AudioSource مشخص نشده (مثلاً CAMCORDER به جای VOICE_RECOGNITION)؛ دستگاه میکروفون ندارد (Android TV)؛ فرآیند دیگری میکروفون را گرفته است. وضعیت مقداردهی اولیه را از طریق AudioRecord.getState() بررسی کنید.
در Android — دریافت بافر PCM از طریق AudioRecord.read()، محاسبه RMS به صورت sqrt(sum(samples²) / count). در iOS — تنظیم tap روی AVAudioInputNode از طریق installTap(forBus:) و محاسبه مشابه RMS از floatChannelData. RMS نرمالسازی شده: ۰.۰ (سکوت) تا حدود ۱.۰ (حداکثر ADC).
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید