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

录音时麦克风难免会有噪声,就是那种嘶嘶声,用音频编辑软件(比如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

棕色表示输出到null file(即不关心输出),蓝色是纯噪声(没有人声)所在的时间段(本例是0秒到1秒区间),红色是SoX子命令名称,黄色是输出profile文件名


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

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

绿色是输入文件,棕色是输出文件(无噪声),红色是另一个SoX子命令,黄色是刚才生成的profile文件,蓝色是降噪等级(取值范围0-1,默认0.5)


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


用命令行去除音频文件的背景噪声_第1张图片

你可能感兴趣的:(linux软件)