You need to enable JavaScript to run this app.
导航
Web 端音频降噪
最近更新时间:2024.12.24 15:40:07首次发布时间:2023.01.03 11:57:21

在实时音视频通话中,你可能会遇到噪声干扰,影响通话质量。你可以根据噪声的类型,选择不同的降噪方案。

  • 平稳噪声:持续均匀噪声,如空调、风扇或电子设备的嗡嗡声,是一种恒定且音量稳定的背景噪声。你可以利用浏览器内置的噪声或 RTC SDK 提供的 AI 降噪插件抑制功能抑制平稳噪声。
  • 非平稳噪声:出现时机或响度都不可预测的瞬时噪声。比如键盘敲击声、物体碰撞声等。你可以使用 RTC SDK 提供的 AI 降噪插件,抑制各种瞬时噪声。

开启浏览器的音频降噪功能,可抑制非平稳噪声

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

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

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

await engine.startAudioCapture();
await engine.publishStream(MediaType.AUDIO);

通过 AI 音频降噪插件,可抑制平稳噪声和非平稳噪声

前提条件

  1. 已集成 RTC SDK V4.47 或更高版本。

  2. 通过 RTC SDK 提供的音频采集模块实现了音频通话功能。

  3. AI 降噪插件支持如下 PC 端浏览器:

    1. Chrome 94+

    2. Edge 94+

  4. 为了更好的使用体验,建议设备满足以下要求:

    1. 双核 Intel Core i5+

    2. RAM 8 GB+

    3. 64 位操作系统

操作步骤

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

    • 直接引入。

    说明

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

    import RTCAIAnsExtension from '@volcengine/rtc/extension-ainr';
    
    • 自 v4.51.1 版本起,支持通过 UMD 方式引入。
    const {RTCAinrExtension} = window.VERTCExtensions;
    
  2. 注册 AI 降噪插件。

import VERTC from '@volcengine/rtc';
// 直接引入
import {EventTypes as AIAnsEventTypes} from '@volcengine/rtc/extension-ainr';
// 创建引擎实例
const engine = VERTC.createEngine('appid');

// 创建 AI 降噪插件实例
const AIAnsExtension = new RTCAIAnsExtension();
// 注册 AI 降噪插件
try {
  await engine.registerExtension(AIAnsExtension);
} catch (error) {
  // 注册失败,详细信息见:error.message
}
AIAnsExtension.on(AIAnsEventTypes.onUnsupported, ({message}) => {
  // 降噪插件运行时遇到不支持情况,详细信息见:message
})
  1. 开启内部音频采集。
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. 设置降噪模式。
    自 V4.65.0 版本起,你可以为指定音频流设置降噪模式。
// 自动模式
AIAnsExtension.setAnsMode(AnsMode.AUTO);

降噪模式说明如下:

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

注意事项

  1. 同时使用两种降噪方案时,通过 MediaTrackConstraints 设置的传统降噪参数生效情况如下:
插件状态autoGainControlechoCancellationnoiseSuppression
插件已注册未开启有效有效固定为 true
插件已注册已开启固定为 true有效固定为 false
  1. AI 降噪插件默认仅支持采样率为 48,000 Hz、音频帧大小为 480 的音频流。插件默认开启了采样率转换功能。
    如果待处理的音频流满足上述条件,你也可以参照以下设置,关闭采样率转换以获得更优性能。
const AIAnsExtension = new RTCAIAnsExtension({
  resample: false,
});