You need to enable JavaScript to run this app.
导航
Web 端音频降噪
最近更新时间:2025.08.07 14:21:45首次发布时间:2023.01.03 11:57:21
复制全文
我的收藏
有用
有用
无用
无用

在实时音视频通话中,背景噪声可能会影响通话质量,RTC SDK 提供了两种降噪方式:浏览器内置降噪和 AI 音频降噪插件。本文档将介绍如何选择和集成适合你业务场景的降噪方式。

选择降噪方式

你可以根据噪声类型,选择不同的降噪方式。

噪声类型特点推荐降噪方式
平稳噪声持续且音量稳定的背景噪声,如空调、风扇或电子设备的嗡嗡声。
  • 浏览器内置降噪
  • AI 音频降噪插件
  • 非平稳噪声出现时机或响度都不可预测的瞬时噪声,如键盘敲击、物体碰撞、人声干扰。AI 音频降噪插件

    方式 1:开启浏览器内置降噪(可抑制平稳噪声)

    开始采集发布音频前,调用 setAudioCaptureConfig 并将 noiseSuppressionechoCancellationautoGainControl 均设置为 true

    以上选项的完整说明参见 MediaTrackConstraints

    // 必须在 startAudioCapture() 和 publishStream() 之前设置
    await engine.setAudioCaptureConfig({
        noiseSuppression: true,
        echoCancellation: true,
        autoGainControl:true,
    });
    
    await engine.startAudioCapture();
    await engine.publishStream(MediaType.AUDIO);
    

    方式 2:通过 AI 音频降噪插件(可抑制平稳噪声和非平稳噪声)

    前提条件

    • 已集成 RTC SDK V4.47 或更高版本。
    • 已实现了音频通话功能。具体操作,可参见实现音频通话
    • AI 降噪插件仅支持以下 PC 端浏览器:Chrome 94+、Edge 94+、Firefox 80+、Safari 14.1+
    • 设备建议(为保证最佳体验):
      • 双核 Intel Core i5+
      • RAM 8 GB+
      • 64 位操作系统

    操作步骤

    1. 在你的项目中引入 AI 降噪插件,可通过以下任一方式:

      • 方式1:直接引入

      确保插件来自本地工程中已引入的 RTC SDK。避免因插件版本不匹配导致的引用错误。

      import RTCAIAnsExtension from '@volcengine/rtc/extension-ainr';
      
      • 方式2:通过 UMD 方式引入(仅 v4.51.1 及以上版本支持)
      const {RTCAinrExtension} = window.VERTCExtensions;
      
    2. 初始化插件并检查浏览器是否支持。

      // 创建插件实例
      const AIAnsExtension = new RTCAIAnsExtension();
      
      // 检查当前浏览器环境是否支持 AI 降噪插件
      const isSupported = await AIAnsExtension.isSupported();
      
    3. 注册 AI 插件并设置监听事件。

      import VERTC from '@volcengine/rtc';
      // 直接引入
      import {EventTypes as AIAnsEventTypes} from '@volcengine/rtc/extension-ainr';
      // 创建引擎实例
      const engine = VERTC.createEngine('appid');
      
      // 注册 AI 降噪插件
      try {
        await engine.registerExtension(AIAnsExtension);
      } catch (error) {
        // 注册失败,详细信息见:error.message
      }
      AIAnsExtension.on(AIAnsEventTypes.onUnsupported, ({message}) => {
        // 降噪插件运行时遇到不支持情况,详细信息见:message
      })
      AIAnsExtension.on(AIAnsEventTypes.onOverload, ({elapsedTime}) => {
        // 系统负载过高,降噪插件运算耗时过长。建议降低档位或者关闭降噪插件。
      })
      AIAnsExtension.on(AIAnsEventTypes.onError, ({message}) => {
        // 降噪插件运行时遇到错误。详细信息见:message
        // 根据错误信息情况可以考虑尝试恢复降噪插件运行,或者关闭降噪插件
        AIAnsExtension.resume();
      })
      
    4. 开启内部音频采集。

    engine.startAudioCapture();
    
    1. 开启/关闭 AI 降噪。
      你可以在通话过程中随时开启或关闭 AI 降噪,将立即生效。
    • 自 V4.65.0 版本起,你可以为指定音频流开启 AI 降噪功能。
    // 为外部屏幕流开启降噪
    AIAnsExtension.enable({
      streamIndex: StreamIndex.STREAM_INDEX_SCREEN,
      sourceType: AudioSourceType.AUDIO_SOURCE_TYPE_EXTERNAL,
    });
    // 对内部主流关闭降噪
    AIAnsExtension.disable({
      streamIndex: StreamIndex.STREAM_INDEX_MAIN,
      sourceType: AudioSourceType.AUDIO_SOURCE_TYPE_INTERNAL,
    });
    
    • 不指定音频流时,默认为内部主流。使用 V4.65.0 之前的版本,默认对内部主流开启降噪。
    // 开启降噪
    AIAnsExtension.enable();
    // 关闭降噪
    AIAnsExtension.disable();
    
    1. 设置降噪模式。
    // 自动模式
    await AIAnsExtension.setAnsMode(AnsMode.AUTO);
    

    降噪模式说明如下:

    模式取值说明
    LOW'low'适用于微弱平稳噪声。
    MEDIUM'medium'适用于抑制中度平稳噪声,如空调声、风扇声。。
    HIGH'high'适用于抑制嘈杂非平稳噪声,如键盘声、敲击声、碰撞声、动物叫声。
    AUTO'auto'启用音频降噪能力。具体的降噪算法由 AI 降噪插件决定。

    更多说明

    同时使用两种降噪方式

    当同时配置了浏览器内置降噪并注册了 AI 降噪插件时, MediaTrackConstraints 设置的传统降噪参数生效情况如下:

    插件状态autoGainControlechoCancellationnoiseSuppression
    插件已注册未开启有效有效固定为 true
    插件已注册已开启固定为 true有效固定为 false

    关闭采样率转换提升 AI 降噪插件的性能

    AI 降噪插件默认处理 48kHz 采样率、音频帧大小为 480 的音频流,并默认开启了采样率转换功能。如果待处理的音频流满足上述条件,可参照以下设置,关闭采样率转换以获得更优性能。

    const AIAnsExtension = new RTCAIAnsExtension({
      resample: false,
    });