使用SOX将16位WAV文件转换为GSM格式

3

我目前正在与Asterisk和PHP Web界面进行一些电话集成的工作。 我想给用户提供上传自定义问候语的选项,以wav文件的形式上传,然后将其转换为8000hz的gsm文件。 目前,我正在尝试使用sox来完成此操作。

但是,似乎当我在8khz sav和gsm之间进行转换时,除了gsm文件外,其他任何文件格式都会严重失真。 它几乎像是将文件速度降低了10倍(3秒的wav格式介绍变成了30秒的gsm文件)。 我已经尝试了几种速度和重新采样的组合,但都没有成功。 理想情况下,我希望能够将上传的任何wav文件转换,而不需要让用户承担太多编码责任。 我肯定不是一个发烧友,所以如果有人能指点我正确的方向,那将不胜感激。


你正在使用的当前命令行参数是什么? - Aaron Ray
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

0

有点晚了,我目前使用的是:

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

0

我曾经遇到过使用sox的情况,我需要将改动分开并逐个进行管道传输,而不是一条命令中完成所有改动。

你的sox命令是什么样的?

你能先将wav文件转换为8khz,然后进行转码,将一个sox调用的输出传输到另一个调用吗?


如果我像这样做:'sox -r 8000 intro.wav intro.wav',文件大小会大幅减小,而且播放时听不到任何声音。 - tdk2fe
你有一个示例音频文件可以让我尝试处理吗?还有,你用的是哪个命令将其转换为GSM格式的? - Andrew Kuklewicz

0

我使用

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

这在Ubuntu 15.04 SoX v14.4.1上失败了。 - Paullo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接