麦克风
实时音频输入监控,配备实时波形可视化、音量计量和详细的音频引擎诊断功能。
概览
麦克风工具可将您的设备变成实时音频监控器。它使用 Apple 的 AVAudioEngine 从选定的输入设备捕获音频,实时处理 PCM 缓冲区,并通过多个可视化面板呈现结果:圆形振幅仪表、原始音频波形、滚动音量历史图表以及综合技术细节仪表板。您可以在所有可用的音频输入设备之间切换——内置麦克风、蓝牙耳机(包括通过 HFP 连接的 AirPods)、有线耳机麦克风、USB 音频接口、CarPlay 和 AirPlay——无需离开工具。
当工具打开且已授予麦克风权限时,监控会自动开始。当您离开工具或应用进入后台时,音频捕获会自动停止,确保不会持续占用麦克风。
目录
屏幕顶栏
屏幕顶部的标题栏显示:
- 麦克风监控器标题。
- 录音状态指示器——带标签的彩色圆点:
- 活动(绿色)——音频引擎正在运行并捕获音频。
- 非活动(灰色)——监控已停止。
- 设备计数——当前可用的音频输入设备数量(例如"1 个设备")。
麦克风控制面板
麦克风控制面板是屏幕上的第一个卡片。其标题栏显示 RECORDING(录音中)或 STANDBY(待机)徽章,录音时会有闪烁的红点。
录音按钮
面板中央的大圆形按钮:
- 麦克风图标(蓝色)——点击开始监控。音频引擎启动,波形数据开始流动,所有 可视化面板激活。
- 停止图标(红色)——点击停止监控。音频引擎关闭,可视化冻结。
按钮下方的标签根据当前状态显示 TAP TO RECORD(点击录音)或 TAP TO STOP(点击停止)。
设备信息区域
录音按钮下方,面板显示当前活动音频输入的信息:
-
设备——活动输入设备的名称(例如"Built-in Microphone"、"AirPods Pro",或未检测到设备时显示"No Microphone")。
-
网格中的三张状态卡片:
卡片 描述 状态 活动(绿色)或非活动(红色)。 类型 设备类别:内置、耳机、蓝牙、USB 音频、CarPlay、AirPlay 或外部。 质量 当采样率为 48 kHz 或以上时显示 HIGH QUALITY(高质量),否则显示 STANDARD(标准)。 -
网格下方的两张技术规格卡片:
卡片 描述 采样率 活动音频会话采样率(例如"48.0 kHz")。 声道 设备支持的最大输入声道数。
音频输入设备选择器
设备选择器面板列出所有可用的音频输入设备,并允许您在它们之间切换。
- 内置麦克风——始终列在第一位,副标题为"内置设备麦克风"。未连接外部设备时默认选中。
- 外部设备——列在内置麦克风下方,每个设备显示:
-
设备名称(例如"AirPods Pro"、"USB Microphone")。
-
描述连接类型的副标题:
端口类型 副标题 Bluetooth A2DP Bluetooth A2DP Bluetooth HFP 蓝牙免提 Bluetooth LE Bluetooth LE Headphones 耳机 Headset Mic 耳机麦克风 USB Audio USB 音频 Other 外部设备
-
每个设备行都有一个单选按钮指示器(选中时填充)和一个对勾图标表示活动设备。点击其他设备可切换音频输入。在音频引擎重新配置期间,屏幕上会短暂显示加载指示器。
当设备连接或断开(例如插入 AirPods)时,列表会自动更新。工具会按优先级顺序自动选择最佳可用设备:蓝牙 HFP 优先,然后是耳机麦克风,最后是内置麦克风。
音量级别面板
音量级别面板提供当前音频振幅的详细实时视图。
圆形振幅仪表
面板中央的圆形仪表,根据当前振幅(0-100%)按比例填充。弧形使用从绿色(低)经黄色和橙色到红色(高)的角度渐变。当前振幅百分比以大数字显示在仪表中央。
音量条
仪表下方,一个水平条根据当前振幅从左向右填充。该条使用相同的绿到红渐变,并在 0%、25%、50%、75% 和 100% 处包含刻度标记。
音量指标
四张指标卡片以 2x2 网格显示:
| 指标 | 描述 |
|---|---|
| 当前 | 瞬时振幅百分比,按级别颜色编码(绿色 < 30%、黄色 < 60%、橙色 < 85%、红色 >= 85%)。 |
| 峰值 | 当前波形历史缓冲区中的最高振幅值。 |
| RMS | 从波形历史计算的均方根电平,代表平均信号能量。 |
| dBFS | 当前振幅以相对于满量程的分贝表示,计算公式为 20 × log10(amplitude)。值范围约从 -80 dB(静音)到 0 dB(满量程)。 |
音量状态栏
面板底部的状态栏显示:
- 信号质量——当 dBFS 高于 -20 dB 时显示"STRONG SIGNAL"(强信号,绿色),否则显示"MODERATE SIGNAL"(中等信号,橙色)。
- 削波警告——当振幅超过 95% 时,会显示带警告图标的红色"CLIPPING"标签,表示音频信号可能正在失真。
实时音频波形面板
实时音频波形面板以实时示波器风格的可视化方式显示原始 PCM 音频数据。
波形可视化
主区域显示从原始音频缓冲区采样(每帧最多 1024 个采样)渲染的滚动波形。波形以青色绘制在深色背景上,并带有专业的网格覆盖层:
- 网格——用于视觉对齐的垂直和水平参考线。
- 中心线——标记过零点的虚线青色线。
- dB 刻度标记——左边缘的标签,位于 +0 dB、-20 dB、-40 dB、-60 dB 和 -∞ 处。
- 发光效果——波形后面的微妙径向发光,随信号强度增强。
- 反射——中心线下方波形的淡镜像副本,增加视觉深度。
面板标题栏中显示带脉动绿点的 LIVE 指示器和当前采样计数(例如"1024 samples")。
信号电平指示器
在波形区域的右边缘,一个垂直的 10 段 LED 风格指示器根据信号强度按比例点亮。段按颜色编码:绿色(低)、黄色(中等)、橙色(高)、红色(非常高)。
波形状态栏
面板底部栏显示:
- Signal——RMS 信号强度百分比,按颜色编码(灰色 < 20%、绿色 < 50%、橙色 < 80%、红色 >= 80%)。
- Peak——当前原始缓冲区的峰值采样值。
- 采样率和位深度——显示在右侧(例如"48kHz 24-bit")。
音量分析面板
音量分析面板显示音频振幅随时间变化的滚动历史图表,功能类似于传统音量表。
时间范围选择器
在面板标题栏中,分段控件让您选择图表中显示的时间范围:
| 范围 | 采样数 |
|---|---|
| 1s | 50 |
| 5s | 250 |
| 10s | 500 |
音量图表
主区域渲染振幅历史(滚动缓冲区中最多 60 个数据点)的填充波形图表。图表根据振幅级别使用绿到红渐变填充,带有微妙的发光效果和下方的镜像反射。
绘制的参考线包括:
- 详细网格,主线每 50%,次线每 10%。
- 在 25%、50% 和 75% 振幅处的虚线参考线,按级别颜色编码。
- 左侧的百分比刻度(0%–100%)。
- 底部显示采样范围的时间刻度。
VU 表条
在图表的右边缘,一个垂直的 20 段 VU 表根据当前振幅从下到上填充。段按颜色编码:绿色(0-50%)、黄色(50-75%)、橙色(75-90%)、红色(90-100%)。
统计栏
面板底部并排显示四个统计数据:
| 统计数据 | 描述 |
|---|---|
| Min | 当前波形历史中的最小振幅(蓝色)。 |
| Max | 当前历史中的最大振幅(红色)。 |
| Average | 历史缓冲区中的平均振幅(黄色)。 |
| Now | 最新的振幅值,按级别颜色编码。 |
技术细节面板
技术细节面板是一个综合仪表板,展示音频引擎、音频会话和硬件配置的完整状态。监控活动期间,所有值每 0.5 秒更新一次。
性能指标
| 指标 | 描述 |
|---|---|
| Sample Rate | 活动音频会话采样率(例如"48.0 kHz")。 |
| Buffer Size | 音频引擎缓冲区大小(以帧为单位,例如 1024)。 |
| Input Latency | 音频会话报告的输入延迟(以毫秒为单位)。延迟超过 10 ms 时高亮显示。 |
| IO Buffer | I/O 缓冲区持续时间(以毫秒为单位)。 |
音频电平
| 指标 | 描述 |
|---|---|
| Peak Level | 峰值振幅百分比。检测到削波(超过 95%)时以红色高亮显示。 |
| RMS Level | 均方根振幅百分比。 |
| dBFS | 相对于满量程的分贝。高于 -20 dB 时以黄色高亮显示。 |
| Signal Quality | 根据信噪比得出:Excellent(优秀,SNR > 40 dB)、Good(良好,SNR > 20 dB)、Fair(一般,SNR > 10 dB)或 Poor(差)。 |
设备配置
| 指标 | 描述 |
|---|---|
| Current Route | 当前活动音频输入设备的名称。 |
| Input Channels | 可用的最大输入声道数。 |
| Polar Pattern | 输入数据源的首选极性模式(例如 Omnidirectional 全向)。 |
会话状态
| 指标 | 描述 |
|---|---|
| Engine Status | Running(运行中,绿色)或 Stopped(已停止,红色)。 |
| Category | 活动 AVAudioSession 类别(例如 PlayAndRecord)。 |
| Mode | 活动音频会话模式(例如 VoiceChat)。 |
| Options | 活动类别选项(例如"BT • Mix")。 |
路由变更
当检测到音频路由变更时,此区域会显示:
| 指标 | 描述 |
|---|---|
| Last Change | 最近一次路由变更的时间戳。 |
| Reason | 变更原因:New Device Available(新设备可用)、Device Disconnected(设备断开)、Category Changed(类别更改)、Route Override(路由覆盖)、Wake From Sleep(从睡眠 唤醒)、No Suitable Route(无合适路由)、Configuration Change(配置更改)或 Unknown(未知)。 |
系统信息
| 指标 | 描述 |
|---|---|
| Timestamp | 当前系统时间。 |
| Samples | 当前原始波形缓冲区中的采样数。 |
| Uptime | 系统运行时间(以秒为单位)。 |
附加性能
| 指标 | 描述 |
|---|---|
| Output Latency | 音频会话报告的输出延迟(以毫秒为单位)。 |
| Preferred Rate | 工具请求的首选采样率。 |
| Preferred Buffer | 工具请求的首选 I/O 缓冲区持续时间(以毫秒为单位)。 |
| Preferred Channels | 首选输入声道数。 |
引擎详情
| 指标 | 描述 |
|---|---|
| Input Format | 音频引擎输入节点的完整 AVAudioFormat 描述(采样率、声道、位深度、交错方式)。 |
| Output Format | 音频引擎输出节点的完整 AVAudioFormat 描述。 |
| Node Count | 连接到音频引擎的节点数量。 |
| Max Frames | 手动渲染最大帧数(仅在引擎处于手动渲染模式时显示)。 |
质量指标
| 指标 | 描述 |
|---|---|
| Average Level | 波形历史缓冲区中的平均振幅。 |
| Dynamic Range | 峰值 dBFS 电平与噪底(-60 dB 参考)之间的差值(以 dB 为单位)。 |
| Noise Floor | 以 dBFS 表示的 RMS 电平,代表背景噪声电平。 |
| Clipping | 如果峰值振幅超过 95% 则显示"Yes"(红色,高亮),否则显示"No"(绿色)。 |
会话状态详情
| 指标 | 描述 |
|---|---|
| Session Active | 如果有其他音频正在播放则显示"Background Audio",否则显示"Active"。 |
| Audio Hint | 如果系统建议静音次要音频则显示"Should Silence",否则显示"Can Mix"。 |
硬件详情
| 指标 | 描述 |
|---|---|
| Max Output Channels | 支持的最大输出声道数。 |
| Input Available | 音频输入硬件是否可用。 |
| Input Gain | 当前输入增益值(如果可设置),或 N/A。 |
| Input Data Source | 活动输入数据源的名称(例如"Bottom"底部、"Front"前置、"Back"后置)。 |
| System Volume | 当前系统输出音量(0.00–1.00)。 |
会话格式信息
活动输入数据源的原始描述,提供完整的系统级详细字符串。
隐私声明
屏幕底部有一个带盾牌图标的隐私声明,说明不会存储、录制或传输任何音频数据——所有处理都在设备上实时本地进行。
权限
- 麦克风权限——所有功能都需要此权限。音频引擎首次初始化时会自动出现系统权限提示。
- 如果权限尚未确定,Lirum 会显示一个带有 Grant Access(授予访问权限)按钮的权限屏幕,触发系统提示。
- 如果权限之前被拒绝,Lirum 会显示 Open Settings(打开设置)按钮 ,重定向到 iOS 设置应用,用户可以在那里重新启用麦克风访问权限。
技术细节
- 该工具使用 AVAudioEngine,在总线 0 上安装输入监听以捕获 PCM 音频缓冲区。使用 1024 帧的缓冲区大小。
- 音频会话配置为
.playAndRecord类别和.voiceChat模式,启用了.allowBluetooth和.mixWithOthers选项。这确保蓝牙 HFP 设备(如 AirPods)可被发现为输入源。 - 请求 5 ms 的首选 I/O 缓冲区持续时间,以实现响应式可视化。
- 对于非蓝牙设备,请求 48 kHz 的首选采样率。对于蓝牙 HFP 设备,采样率由系统决定以避免格式冲突。
- RMS 振幅使用公式从 PCM 缓冲区计算:
sqrt(sum(sample^2) / count),然后乘以 5 的系数并限制在 [0, 1] 范围内。 - dBFS(相对于满量程的分贝)计算公式为
20 * log10(amplitude)。 - 原始波形更新限制为 60 fps 以防止过多的 UI 更新。
- 波形历史缓冲区最多保存 60 个数据点,在每个显示链接帧上从振幅缓冲区处理。
- 以最高 120 fps 运行的 CADisplayLink 通过对帧之间收集的振幅采样取平均值来驱动波形历史更新。
- 音频引擎详细信息每 0.5 秒通过定时器轮询一次。
- 切换输入设备时,音频引擎会完全拆除并使用新的音频会话重新创建,以确保使用正确的格 式。过渡期间会显示加载覆盖层(最少 300 ms 显示时间以确保流畅的用户体验,带有 2 秒超时回退)。
- 蓝牙格式处理——对于蓝牙设备,监听安装时使用
nil格式,让系统自动选择适当的格式,避免 HFP 设备可能出现的无效格式错误。 - 音频路由变更通过
AVAudioSession.routeChangeNotification观察。当新设备出现或现有设备被移除时,工具会自动更新设备列表,如果正在录音,则使用最佳可用设备重新启动。路由变更会被节流(最小 300 ms 间隔)以防止重启循环。 - 设备自动选择优先级:蓝牙 HFP、耳机麦克风、内置麦克风。
- 当工具消失或应用进入后台时,音频引擎会停止,音频会话会完全停用(切换到
.ambient类别并使用.notifyOthersOnDeactivation停用),以释放麦克风并允许其他应用恢复音频播放。
注意事项与限制
- 该工具监控实时音频输入电平。它不会录制、保存或传输任何音频数据。
- 切换输入设备时,Lirum 会在音频引擎重新配置期间短暂显示加载指示器。这通常需要不到一秒钟。
- 与内置麦克风相比,蓝牙耳机和 USB 麦克风可能报告不同的增益电平和采样率。
- 在蓝牙 HFP 设备(例如 AirPods)上,由于免提配置文件的限制,采样率可能较低(例如 16 kHz 或 8 kHz)。
- 当振幅超过满量程的 95% 时,削波指示器会触发。持续削波可能表示输入增益过高或声源 距离麦克风太近。
- 当应用进入后台或被最小化时,音频监控会自动停止,确保不会持续占用麦克风。