I am LAZY bones? AN ancient AND boring SITE

音频处理领域的瑞士军刀──SoX

SoX 是命令行下的一套音频处理组件,由于其功能强大,号称”音频处理领域的瑞士军刀”.
那么SoX到底有什么功能呢?它可以播放/转换/录制多种音频格式文件,包括但不限于mp3/wav/ogg/flac/avi/wmv/pcm/gsm等,要了解完整的支持格式,可以参见官网的介绍.
其中,播放/转换/录制 分别对应 paly/sox/rec 几个命令,没错,大名鼎鼎的play命令正是SoX的组件之一,哈哈,现在感觉到它的强大了吧?
下面用几个例子来进一步说明,由于工作关系,经常接触到PCM和GSM的音频,幸好有SoX.就以这些文件为例,mp3之类的常用文件格式就更轻松了:

播放wav文件:

play -t wav hello-world.wav

播放pcm文件,由于格式的不确定性,需要指定编码方式和码率,如果给的值不对,就会听到变调的声音了,哈哈:

play -t raw -r 8k -e a-law hello-world.pcm

播放gsm文件:

play -t gsm hello-world.gsm

把gsm文件转换成wav格式:

sox -t gsm hello-world.gsm hello-world.wav

把gsm文件转换成8k采样率A率的pcm格式:

sox -t gsm hello-world.gsm -t raw -r 8k -e a-law hello-world.pcm

把wav文件转换成8k采样率A率的pcm格式:

sox -t wav hello-world.wav -t raw -r 8k -e a-law hello-world.pcm

把声卡的声音录制成wav格式,默认应该是48k采样率16bit量化的双声道Signed PCM编码.这些参数都可以指定:

rec -t wav rec.wav

厉害吧~

另外,值得一提的是,由于libmagic包的故障,gentoo下的sox有时候不能根据扩展名来识别声音格式了,会报 no handler for detected file type `application/octet-stream; charset=binary’ 的错误,所以上述命令都加了-t参数直接指定格式,就没问题了.

最后修改时间: 2009年05月06日 15:11

本文章发表于: 2009年05月06日 15:08 | 所属分类:CLI软件. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

4 个评论 关于: “音频处理领域的瑞士军刀──SoX”

  1. chisiyuan 在 2009年05月06日 17:30 说:回复

    MS很强大,不过没用过。俺用的是mencoder或是ffmpeg。

  2. TualatriX 在 2009年05月06日 19:00 说:回复

    不错,好工具,而且难得的高版本,居然14了。

  3. boy89 在 2009年12月01日 21:09 说:回复

    只能一首一首的吗,能按列表播放不

    • bones7456 在 2009年12月02日 08:26 说:回复

      呃。。这个的目的不是播放器,要列表就自己写脚本喽,呵呵

bones7456 发表评论




取消