2

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

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

4

4 回答 4

5

这是我用来将常规 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
于 2011-08-04T21:09:44.767 回答
0

我已经看到了 sox 的案例,我需要分解更改并一个接一个地管道它们,而不是在一个命令中。

你的 sox cmd 是什么样的?

您能否先将 wav 转换为 8khz,然后转码,将一个 sox 调用的输出通过管道传输到另一个?

于 2011-07-19T20:29:05.333 回答
0

我用

sox foo.wav -r 8000 -c1 foo.gsm resample -ql
于 2012-06-14T10:41:37.643 回答
0

有点晚了,我目前使用:

sox somefile.wav -r 8000 -c1 output.gsm
于 2019-12-04T12:01:29.197 回答