You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac版Safari麦克风音频录制数秒后意外音量骤降问题求助

问题分析

这是Safari的**自动增益控制(AGC)**对持续固定音高信号的误判导致的。AGC原本为语音通话设计,会动态调整麦克风增益,当检测到持续稳定的单音(比如固定音高哼唱)时,可能误将其识别为非语音的稳态背景噪音,从而主动降低增益,导致音量骤降;而正常说话的语音有明显的音量和频率变化,AGC会保持正常的增益调节。

解决方案

修改getUserMedia的音频配置,显式禁用自动增益控制、回声消除和噪音抑制功能,避免AGC干扰固定音高的采集:

const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
const isSafari = navigator.userAgent.indexOf("Safari") != -1;

const createStream = async () => {
  // For iOS Safari, reset to play-and-record to allow mic to work
  if ((isIOS || isSafari) && navigator.audioSession) {
    await navigator.audioSession.setType("play-and-record"); // 使用正确的异步方法设置会话类型
  }

  const stream = await navigator.mediaDevices.getUserMedia({
    video: false,
    audio: {
      autoGainControl: false, // 核心:禁用自动增益控制
      echoCancellation: false,
      noiseSuppression: false,
      // 可选:指定固定采样率提升采集稳定性
      sampleRate: 44100
    }
  });
  addStream(stream);
  return stream;
};
关键说明
  • 原代码直接给navigator.audioSession.type赋值的方式无效,Safari要求使用setType()异步方法修改音频会话类型,需加await确保设置生效。
  • 关闭AGC是解决问题的核心,默认情况下Safari会开启AGC优化语音采集,但该逻辑不适用于固定音高的哼唱场景。
  • 测试时请确保系统层面的麦克风增益设置为固定值,避免系统级音量调节干扰采集结果。

内容的提问来源于stack exchange,提问作者bry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:32:10