录音时麦克风难免会有噪声,就是那种嘶嘶声,用音频编辑软件(比如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:
棕色表示输出到null file(即不关心输出),蓝色是纯噪声(没有人声)所在的时间段(本例是0秒到1秒区间),红色是SoX子命令名称,黄色是输出profile文件名
然后用SoX处理你的录音文件,后面跟上profile:
绿色是输入文件,棕色是输出文件(无噪声),红色是另一个SoX子命令,黄色是刚才生成的profile文件,蓝色是降噪等级(取值范围0-1,默认0.5)
最后给大家看下效果,上面是含噪声的波形,下面是去掉噪声的波形: