You need to enable JavaScript to run this app. Flutter应用如何实现录音降噪?使用flutter_sound录音有杂音怎么解决?
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用如何实现录音降噪?使用flutter_sound录音有杂音怎么解决?

Flutter 录音降噪解决方案

1 现有 flutter_sound 配置优化(无需更换依赖,优先尝试)

  • 调整基础录音参数:过低的采样率、比特率是音质差的常见原因,建议将采样率设置为44100Hz及以上,比特率设置为128kbps及以上,编码格式优先选择AAC,参考配置代码:
    await recorder.openRecorder();
    await recorder.startRecorder(
      toFile: 输出音频路径,
      codec: Codec.aacADTS,
      sampleRate: 44100,
      bitRate: 128000,
      numChannels: 1,
    );
    
  • 开启系统内置降噪:安卓端将音频源设置为VOICE_RECOGNITION或VOICE_COMMUNICATION,两类音频源默认会触发系统自带的噪音抑制逻辑;iOS端配置AVAudioSession模式为record并开启noiseReduction属性,flutter_sound已支持相关配置项的调用。

2 第三方Flutter包方案

  • audio_noise_suppression:轻量降噪包,基于WebRTC的噪声抑制算法实现,支持实时录音流降噪和已录制音频文件后处理,对日常环境杂音、键盘声、风声这类稳态噪音抑制效果较好,可直接对接flutter_sound输出的音频流做处理。
  • ffmpeg_kit_flutter:适合非实时降噪场景,录制完成后调用FFmpeg的afftdn、arnndn等降噪滤镜对音频文件做优化,可灵活调整降噪强度,参考处理命令:
    ffmpeg -i 输入音频路径 -af "afftdn=nf=-25" 输出降噪后音频路径

3 原生平台自定义实现方案

如果现有包的降噪效果不符合需求,可通过MethodChannel封装原生降噪逻辑:

  • 安卓端:直接调用系统自带的NoiseSuppressor API对AudioRecord流做实时降噪,无需额外引入依赖;也可集成Speex、WebRTC NS原生库实现自定义降噪等级调整。
    安卓系统API调用示例:
    if (NoiseSuppressor.isAvailable()) {
      NoiseSuppressor ns = NoiseSuppressor.create(audioRecord.getAudioSessionId());
      ns.setEnabled(true);
    }
    
  • iOS端:除了系统AVAudioSession自带的降噪能力外,也可集成WebRTC降噪模块,或者使用苹果自带的SoundAnalysis框架实现自定义音频信号处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 17:45:04