在开发呼叫中心的过程中要播放语音,要把自己录制的语音的wav格式转换为gsm格式,asterisk中也支持wav格式,但是不清楚为什么wav文件大一些就无法播放,所以只有转换为gsm格式。
命令 :sox 00.wav -r 8000 -c 1 00.gsm resample -ql
下面的是在网上找到的一篇文章 文章来源
Sox是最为著名的Open Source声音文件格式转换工具。已经被广泛移植到Dos、windows、OS2、S
un、Next、Unix、Linux等多个操作系统平台。
Sox项目是由Lance Norskog创立的,后来被众多的开发者逐步完善,现在已经能够支持很多种声
音文件格式和声音处理效果。基本上常见的声音格式都能够支持。更加有用的是,Sox能够进行
声音滤波、采样频率转换,这对那些从事声讯平台开发或维护的朋友非常有用。当然,Sox里面
也包括一些DSP算法,有兴趣的朋友可以下载回去研究。Sox可以用于任何用途。但是发布源代码
时必须包括版权声明,发布二进制代码必须声明作者。
首先来一个简单的命令,如下:
sox file1.wav -v 0.6 file2.wav
-v是调整音量的选项,0.6是参数,它是一种线性调整,并不是调整到原先的0.6,而是幅值调整,fi
-le2.wav是输出文件。如果-v后面的数字比1大,则增加音量,反之则减少音量,如果是负数那么
在调整的同时还对音频进行反相变换,但也不是可以任意增加的,取值太大容易产生削波现象。要
取什么只好呢?键入下列命令:
sox file1.wav -n stat -v
命令输出结果如下"
1.003
这就得出不失真最大调整量了。上面的stat为效果器,作用是对音频文件做一个统计分析,并将结
果打印到标准错误文件,选项"-v"将打印跟音量调整有关的以"Volume Adjustment:’字样开始的
哪一行。至于-n表示输出文件为空。这样在不干扰音频文件的情况下可得到文件信息。
sox的语法格式如下所示:
sox 全局参数 格式化参数 输入文件1 格式化参数 输入文件2 ... 格式化参数 输出文
件 效果器
首先全局参数在最前面,每个输入文件都有相应的格式化参数,可以有多个输入文件,在来一个输
出文件,前面再加上格式化参数,最后是效果器。这到后面再说。
上面的语法格式很间洁,应该很容易明白。
在用SoX输出一个文件之前,用SoX附带的play命令先听一下效果是个不错的想法。
下面让我们做另外一件事,切掉音频文件。假如我们有一个文件,开头有10秒钟左右我们不想要,
那么我们可以这样做,首先看文件有多长:
sox 杨望.wav -n stat
得到下面输出信息:
Samples read: 20889600
Length (seconds): 236.843537
Scaled by: 2147483647.0
Maximum amplitude: 0.996857
Minimum amplitude: -0.993195
Midline amplitude: 0.001831
Mean norm: 0.084509
Mean amplitude: -0.000000
RMS amplitude: 0.119258
Maximum delta: 0.729645
Minimum delta: 0.000000
Mean delta: 0.058931
RMS delta: 0.080600
Rough frequency: 4743
Volume adjustment: 1.003
我们现在关心的是"Length (seconds):236.843537"这一行,它说明了这文件是236.843537秒长,
约等于237秒吧。再键入下列命令:
sox 杨望.wav 杨望1.wav trim 0 10
上面的命令说明了从文件开始截取10秒钟的文件,输出名字是杨望1.wav,0是文件开始,10是时间
概念,表示时长,而非文件长度。再调用SoX的play命令用耳麦听一下,确认了杨望1.wav就是要去
掉的长度以后,就可以开始截取操作了:
rm -rfv 杨望1.wav
sox 杨望.wav 杨望1.wav trim 10 227
输出文件杨望1.wav就是我们想得到的文件。上面的227是最终文件时间长度,等于237减去10。
SoX能够执行常见大多数音频格式转换,如:
sox 杨望.wav sox 杨望.mp3
在安装了mp3lame或libmad库支持以后,能将wav格式转为mp3格式。
下面谈谈文件的联和,假如不指定特别的参数,例如:
sox file1.mp3 file2.mp3 file3.mp3
象上式那样,将file1.mp3, file2.mp3按照次序连接在一起,输出文件是file3.mp3,对于SoX附带的