Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2073739
  • 博文数量: 354
  • 博客积分: 4955
  • 博客等级: 上校
  • 技术积分: 4579
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-21 11:46
文章分类

全部博文(354)

文章存档

2015年(1)

2013年(4)

2012年(86)

2011年(115)

2010年(67)

2009年(81)

我的朋友

分类:

2011-02-23 11:00:03

SoX就一个exe,用法为:
SoX [ general options ] [ format options ] infile1 [ [ format options ] infile2 ... ] [ format options ] outfile [ effect [ effect options ] ... ]

解释:
1). 输入文件可以为多个,至少为一个,输出文件为一个,上述[]表示的都是可选项。

2). SoX后跟的首先是general options(可选),指的是整个exe运行过程中的配置信息,如-h表示打印版本和用法信息,-V则把转换过程的信息也一并打印出来。

3). 对输入文件来说,format options可选。大部分音频文件在文件头部分都有格式信息,这时就不需要format options,但是有一些没有文件头、直接存储音频数据的文件则需要指明其格式,这时候就必须要求有format options。

4). 输出文件如果省略format options,则格式信息跟输入文件一样,如果要改变格式,则必须指明format options。

5). 转换过程中还可以给输出文件加一些音频效果,就是最后的effect选项,我们一般用不着,这里不细说了。

6). format options指的是如下几项:
  ① -t filetype:从文件名后缀可以得到一部分类型信息,但有的后缀名同时涵盖好几种类型或从文件头不能真正确定文件类型,则需要-t来指明。
  ② -r rate:采样率,当输入输出文件指明的采样率不一样时,则进行升降采样率的操作,有好几种升降采样率的方法,在effect中可以指明,不设置effect即采用默认方法。
  ③ -v volume:音量,即幅度信息。大于1.0增加音量,小于1.0减小音量,负值则改变音频数据的相位。
  ④ -s/-u/-U/-A/-a/-i/-g/-f:音频编码方式,分别为:有符号线性、无符号线性、u率、A率、ADPCM、IMA_ADPCM、GSM、浮点数。
  ⑤ -b/-w/-l/-d:量化位数,分别为:8bit、16bit、32bit、64bit。
  ⑥ -c channels:声道数。
  ⑦ -x:需要进行字节序调整,调整基元以量化位数为准。
  ⑧ -e:放在最后一个输入文件之后,作为输出文件的参数,但其后不用写输出文件,这样所有操作都直接作用于输入文件。注意,此时无输出文件,同时输出文件的参数也只能有-e,不能有其他的,但是还是可以有effect项。

SoX的应用格式就是这样,下一篇我会给出一些例子以加深理解。



这里给出一些用法的一些例子,加深理解。 首先给出一条建议,给所有的调用加上-V这个general option,这样转换的内部信息会显示出来。

1). SoX根据文件后缀判断文件类型,比如将Apple的AIFF格式转换为Microsoft的WAV格式,直接写出对应的文件名即可:
sox filename.aiff filename.wav

2). 一般我们要进行采样率和量化位数的转换,例如我们要把一个11.025K采样、16bit的WAV文件转化为8K采样、8bit的WAV文件,则写成下式:
sox infile.wav -r 8000 -b outputfile.wav

3). 如果输入文件为RAW格式,则需指定输入文件的format options,如将一个单声道、8K采样、8bit无符号PCM数据转化为WAV格式,则可以这样写:
sox -r 8000 -u -b -c 1 filename.raw filename.wav

4). 当把一个PCM编码文件转换为U律或者A律,可能会出现一些杂音或者破音,此时可以将输出的幅度降低一些,用到的是-v这个选项:
sox infile.wav -U -v .8 outputfile.wav

5). 如果需要将11.025K转换为8K,但是在转换之前加一个截止频率为3.7K的低通滤波器,则可以这么写(中间的|表示管道,前后用-分别代表输出文件和输入文件):

sox infile.wav -t raw -s -w -c 1 - lowpass 3700 | sox -t raw -r 11025 -s -w -c 1 - -r 8000 -U -b -c 1 outputfile.wav

6). 如果你对某种文件格式不清楚,想把它转化为认识的格式如WAV,则可以将输入文件格式设为auto,让sox自己去判断:
sox -V -t auto filename.snd filename.wav

7). 将sox用于批处理,可以这样写:
FOR %X IN (*.RAW) DO sox -r 11025 -w -s -t raw $X $X.wav

最 后交待一下sox的内部处理机制:sox处理一般压缩格式如U律、A律、ADPCM或者GSM,首先将文件读入,然后解压缩为32bit的有符号数,然后 再转换为所需要的格式。在解压缩输入文件时必然引入噪声,这个噪声又被压缩,传递到输出文件中,所以如果要对输出文件加很多effect的话,则一般是先 生成一个PCM格式的中间文件,然后对中间文件加所有的effects,最后再输出成所需的压缩格式,这样引入噪声最小。

阅读(16052) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~