使用SOX从16位WAV转换为GSM

时间:2011-07-19 18:21:27

标签: wav asterisk gsm sox

我目前正致力于与Asterisk的电话集成和PHP Web界面。我想给用户一个选项,在wav文件中上传他们自己的自定义问候语,然后一旦它在服务器上将wav转换为8000hz的gsm文件。目前,我正在尝试使用sox来实现这一目标。

然而,似乎当我将8khz sav以外的任何东西转换为gsm时,gsm文件严重失真。它几乎就像它将文件减慢了10倍(wav格式的3秒介绍变成了30秒的gsm文件)我尝试了几种速度和重新采样的组合无济于事。理想情况下,我想采取任何上传并转换它的wav文件,而不会对用户施加太多责任来正确编码。我绝对不是一个发烧友,所以如果有人能指出我正确的方向,我将非常感激。

4 个答案:

答案 0 :(得分:2)

这是我用来将常规16位.wav文件转换为8位单声道.gsm文件的命令(工作正常):

sox input.wav -r 8000 -c1 output.gsm lowpass 4000 compand 0.02,0.05 -60,-60,-30,-10,-20,-8,-5,-8,-2,-8 -8 -7 0.05

答案 1 :(得分:0)

我已经看到过sox的情况,我需要分解更改并逐个管道它们而不是一个命令。

你的sox cmd是什么样的?

你能先将wav转换为8khz,然后转码,将一个sox调用的输出汇总到另一个吗?

答案 2 :(得分:0)

我用

sox foo.wav -r 8000 -c1 foo.gsm resample -ql

答案 3 :(得分:0)

我现在正在使用,有点晚了

sox somefile.wav -r 8000 -c1 output.gsm