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封装原生降噪逻辑:
- 安卓端:直接调用系统自带的
NoiseSuppressorAPI对AudioRecord流做实时降噪,无需额外引入依赖;也可集成Speex、WebRTC NS原生库实现自定义降噪等级调整。
安卓系统API调用示例:if (NoiseSuppressor.isAvailable()) { NoiseSuppressor ns = NoiseSuppressor.create(audioRecord.getAudioSessionId()); ns.setEnabled(true); } - iOS端:除了系统AVAudioSession自带的降噪能力外,也可集成WebRTC降噪模块,或者使用苹果自带的
SoundAnalysis框架实现自定义音频信号处理逻辑。
内容的提问来源于stack exchange,提问作者Selvakumar
相关产品推荐
相关产品推荐

