麦克风 — 定义、类型及在移动设备中的工作原理

作者: IT Sectr 发布日期: 2026-03-24 阅读时间: 10 分钟

移动设备中的麦克风 — 一种声电换能器,将声波转换为电信号,用于后续数字化和处理。现代智能手机使用 MEMS 麦克风,采用电容工作原理并内置 ADC。根据 Yole Group, 2025 的数据,每年出货超过 60亿 个 MEMS 麦克风,其中 35% 安装在智能手机中 — 每台设备 3–4 个麦克风。

要点

  • MEMS 麦克风 — 智能手机中的主要麦克风类型:硅振膜在声压作用下改变电容,信号由内置 ADC 数字化(PDM 输出)
  • 典型配置 — 现代智能手机包含 3–4 个麦克风:主麦克风(底部)、前置麦克风(顶部)和后置麦克风(用于降噪)
  • 降噪 (ANC) — 差分方法,主麦克风录制声音,辅助麦克风录制背景噪声,然后数字处理器将信号相减
  • AudioRecord (Android) 和 AVAudioEngine (iOS) — 在移动应用中从麦克风捕获音频流的主要 API
  • 44.1 kHz 采样率和 16 位 — 移动应用中语音和音乐录制的最低质量标准

什么是麦克风?

麦克风 — 一种电声设备,将声压振荡转换为电信号。按工作原理分为动圈式(磁场中的线圈)、电容式(电容变化)和压电式。在移动设备中,绝大多数是电容式 MEMS 麦克风,得益于其微型尺寸(2.5 × 1.5 毫米)和表面贴装(SMD)兼容性。

麦克风由在声压作用下振动的振膜和固定电极组成,形成电容器。极板之间距离的变化改变电容,从而调制输出电压。在 MEMS 麦克风中,振膜通过光刻法由多晶硅制成 — 这确保了一批次中所有麦克风特性的一致性。

MEMS 麦克风的输出信号 — PDM(脉冲密度调制) — 以 1–4 MHz 采样率的单比特流。智能手机的编解码器通过数字抽取滤波器将 PDM 解码为 PCM(脉冲编码调制),获得标准的 16–24 位、44.1–96 kHz 音频格式供应用处理。

MEMS 与驻极体麦克风

在 MEMS 出现之前,移动设备中使用 驻极体电容麦克风 (ECM)。其中振膜具有永久电荷(驻极体),振膜的振动产生可变电压。ECM 麦克风更大(4–6 毫米),需要单独的前置放大器,增加了电路板面积。

参数MEMS 麦克风驻极体 (ECM)
封装尺寸2.5 × 1.5 × 1.0 毫米4 × 2.5 × 1.5 毫米
灵敏度−26 ± 1 dB (FS)−38 ± 3 dB (FS)
SNR(典型值)64–69 dBA58–64 dBA
AOP(最大 SPL)125–135 dB115–125 dB
电流消耗150–300 µA300–500 µA
温度范围−40…+105 °C−20…+70 °C

MEMS 麦克风因其更小的尺寸、稳定的特性和可在标准 SMD 生产线上焊接而占据主导地位。然而,ECM 由于组件成本更低(0.15–0.30 美元对比 MEMS 的 0.25–0.60 美元)仍在低成本设备中使用。

多麦克风配置:主麦克风、前置、后置

现代智能手机包含 3 到 4 个麦克风,其位置决定了录音和降噪质量。主麦克风(底部)位于 USB-C 端口旁的下边缘 — 它在通话和视频录制时录制用户的声音。前置(顶部) — 在上边缘,用于语音命令和立体声录制时的第二声道。

后置麦克风通常位于后面板的摄像头旁边,专门用于降噪。其信号不记录在音频文件中 — 仅由数字处理器从主麦克风信号中减去。在一些旗舰机型(iPhone 16 Pro、Samsung Galaxy S25)中,前置摄像头的刘海处安装了第四个麦克风,以改善视频通话时的录音效果。

立体声视频录制通过底部和顶部麦克风的组合实现。iOS 根据设备方向自动选择麦克风对 — 横向录制时,左声道从左边缘采集,右声道从右边缘采集。在 Android 上,此逻辑取决于 OEM 制造商的实现,可能因型号而异。

Kotlin 中的音频源选择示例 (Android)

kotlin
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 — 此源会关闭所有滤波器和降噪功能,以获得干净的语音识别信号。

智能手机中的降噪原理

主动降噪 (ANC) 在智能手机中基于差分方法:第二个麦克风(参考)主要录制背景噪声,主麦克风(主要)录制语音和噪声的混合。数字信号处理器 (DSP) 从主要信号中减去参考信号,只留下干净的语音。

降噪质量取决于麦克风之间的距离及其方向性。均匀噪声(飞机、风扇)的典型抑制 — 20–35 dB。对于脉冲噪声(关门声、餐具碰撞声),使用额外的瞬态抑制模块,用相邻样本的近似信号替换失真部分。

开发人员只能通过音频会话参数影响降噪算法:在 Android 上 — AudioManager.setParameters("noise_suppression=on/off"),在 iOS 上 — AVAudioSession 类别 .playAndRecord 配合 .allowBluetoothA2DP 选项。为语音识别录制时,通常会关闭降噪 — STT 算法使用原始信号更精确。

音频捕获:Android AudioRecord 和 iOS AVAudioEngine

AudioRecord (Android) — 用于直接从麦克风录制 PCM 数据的低级 API。应用程序接收包含原始音频数据的缓冲区,可进行实时处理:音量分析、频率分析 (FFT)、语音活动检测 (VAD)。最小缓冲区通过 AudioRecord.getMinBufferSize() 计算 — 使用更小的大小会导致延迟或录制错误。

AVAudioEngine (iOS) — 用于音频处理的模块化图,其中输入节点 (AVAudioInputNode) 连接到主混音器或直接连接到 tap 处理器。引擎允许实时分析 RMS(均方根)— 信号音量指标 — 以及通过 AVAudioUnitEQ 分析频谱。

平台的主要区别:在 iOS 上,录制需要强制激活类别为 .playAndRecord 或 .record 的 AVAudioSession;在 Android 上 — RECORD_AUDIO 权限(运行时权限)和 AudioSource 源。Flutter 使用 record 插件来抽象这些差异。

Swift 中的音频捕获示例 (iOS)

swift
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()

代码在 AVAudioEngine 引擎的输入节点上设置 tap。每个音频缓冲区包含来自麦克风的单声道信号的 float 数据。RMS 计算为幅度的均方根 — 标准音量指标,范围从 0.0(静音)到约 0.5–1.0(大声说话)。

麦克风特性:SNR、AOP、频率范围

评估麦克风质量使用关键参数。SNR(信噪比)— 信号电平与麦克风自身噪声的比率,以 dBA 为单位。SNR 越高,录音中的背景噪声越小。语音通话 62–64 dBA 足够,音乐录制需要 68+ dBA。

AOP(声学过载点)— 麦克风能够不失真转换的最大声压级 (SPL)。典型 MEMS 麦克风的 AOP = 125 dB。在音乐会上(110–120 dB),录音是干净的,但在 130+ dB(附近烟花)时会出现非线性失真 (THD > 10%)。

频率范围决定麦克风录制哪些频率而不衰减。语音需要 300–3400 Hz(电话标准,POTS)。音乐和视频需要 20–20000 Hz。最新一代智能手机中的 MEMS 麦克风(Knowles SPH9855)提供 30–18000 Hz 的范围,不均匀度为 ±3 dB。

常见问题

现代智能手机有多少个麦克风?

现代智能手机包含 3 到 4 个麦克风:主麦克风(底部边缘,用于通话和视频录制),前置(顶部边缘,语音命令),后置(后面板,降噪)。旗舰机(iPhone 16 Pro、Galaxy S25)在前置摄像头旁添加了第四个麦克风,以改善视频通话时的录音效果。

如何在移动应用中访问麦克风?

Android 上 — 请求 RECORD_AUDIO 运行时权限并使用 AudioRecord 或 MediaRecorder。在 iOS 上 — 激活类别为 .playAndRecord 的 AVAudioSession 并使用 AVAudioEngine 或 AVAudioRecorder。两个平台都需要用户通过系统对话框明确同意。

什么是麦克风的 SNR,什么值被认为是好的?

SNR(信噪比)— 有用信号与麦克风自身噪声的比率。64 dBA 的值意味着录音时噪声水平将比语音水平低 64 dB。通话 SNR 62–64 dBA 被认为良好,音乐录制需要 68+ dBA。

为什么应用在 Android 上无法从麦克风接收声音?

典型原因:未请求 RECORD_AUDIO 运行时权限(Android 6+);未指定 AudioSource(例如 CAMCORDER 而不是 VOICE_RECOGNITION);设备没有麦克风(Android TV);另一个进程已占用麦克风。通过 AudioRecord.getState() 检查初始化状态。

如何实时测量麦克风的音量?

Android 上 — 通过 AudioRecord.read() 获取 PCM 缓冲区,计算 RMS 为 sqrt(sum(samples²) / count)。在 iOS 上 — 通过 installTap(forBus:) 在 AVAudioInputNode 上设置 tap,并从 floatChannelData 类似地计算 RMS。RMS 已归一化:0.0(静音)到约 1.0(ADC 最大值)。

总结

  • MEMS 麦克风 — 智能手机中的主导类型,采用硅振膜、PDM 输出,尺寸为 2.5 × 1.5 毫米
  • 智能手机 包含 3–4 个麦克风,用于立体声录制、语音命令和主动降噪
  • 降噪 通过差分方法实现 — DSP 从主信号中减去参考麦克风信号,将噪声抑制 20–35 dB
  • Android AudioSource.CAMCORDER 选择最适合视频的麦克风;VOICE_RECOGNITION 关闭 STT 滤波器
  • 44.1 kHz / 16 位频率 — 最低质量标准,足以满足语音和音乐需求
  • 64+ dBA SNR 确保清晰的语音录制,没有明显的麦克风噪声
  • AOP 对录制大声事件很重要 — 典型 MEMS 的 125 dB 足以满足音乐会和户外拍摄

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读