我目前正致力于与Asterisk的电话集成和PHP Web界面。我想给用户一个选项,在wav文件中上传他们自己的自定义问候语,然后一旦它在服务器上将wav转换为8000hz的gsm文件。目前,我正在尝试使用sox来实现这一目标。
然而,似乎当我将8khz sav以外的任何东西转换为gsm时,gsm文件严重失真。它几乎就像它将文件减慢了10倍(wav格式的3秒介绍变成了30秒的gsm文件)我尝试了几种速度和重新采样的组合无济于事。理想情况下,我想采取任何上传并转换它的wav文件,而不会对用户施加太多责任来正确编码。我绝对不是一个发烧友,所以如果有人能指出我正确的方向,我将非常感激。
答案 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