用命令行去除音频文件的背景噪声

录音时麦克风难免会有噪声,就是那种嘶嘶声,用音频编辑软件(比如audacity)可以很方便的去除,但如果要处理大量这种文件,用命令行工具是更有效率的办法。

 

SoX号称音频处理的瑞士军刀,光manpage就40多页,功能不可谓不强大,

 

通用命令格式:

       sox [global-options] [format-options] infile1
            [[format-options] infile2] ... [format-options] outfile
            [effect [effect-options]] ...

       play [global-options] [format-options] infile1
            [[format-options] infile2] ... [format-options]
            [effect [effect-options]] ...

       rec [global-options] [format-options] outfile
            [effect [effect-options]] ...


概括成一句话,就是将多个输入文件非线性叠加后,再加入若干特效,最后生成一个输出文件

Input(s) → Combiner → Effects → Output(s)

 

但它的降噪功能并不强,只能去除背景噪声,而不能去除动态噪声(次声噪声之类的),不过对于录音来说,也够用了

 

降噪分两步:

 

首先给SoX提供你的背景噪声,好让它分析出噪声的profile

rec -n trim 0 1 noiseprof noise.profile

  • -n表示输出到null file(即不关心输出)
  • trim 0 1表示纯噪声(没有人声)所在的时间段为0到1秒区间
  • noiseprof是要使用的SoX子命令名称,表示提取噪声特征,即profile
  • noise.profile是输出的profile文件名

 

然后用SoX处理你的录音文件,后面跟上profile

sox v_0.wav v_0_clean.wav noisered noise.profile 0.3

  • v_0.wav是输入文件
  • v_0_clean.wav是输出文件(无噪声)
  • noisered是要使用的另一个SoX子命令,表示对输入文件进行噪声去除
  • noise.profile是上一条命令生成的profile文件
  • 0.3是降噪等级(取值范围0-1,默认0.5)

 

最后给大家看下效果,上面是含噪声的波形,下面是去掉噪声的波形

 

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页