【问题标题】:Converting from 16-bit WAV to GSM using SOX使用 SOX 从 16 位 WAV 转换为 GSM
【发布时间】:2011-07-19 18:21:26
【问题描述】:

我目前正在与 Asterisk 和 PHP Web 界面进行一些电话集成。我想让用户选择在 wav 文件中上传他们自己的自定义问候语,然后在服务器上将 wav 转换为 8000hz 的 gsm 文件。目前,我正在尝试使用 sox 来完成此操作。

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

【问题讨论】:

  • 您当前使用的命令行参数是什么?

标签: wav asterisk gsm sox


【解决方案1】:

这是我用来将常规 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

【讨论】:

    【解决方案2】:

    我看到过一些使用 sox 的案例,我需要分解更改并一个接一个地管道而不是在一个命令中。

    你的 sox cmd 是什么样子的?

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

    【讨论】:

    • 好吧,如果我执行类似 'sox -r 8000 intro.wav intro.wav' 之类的操作,文件大小会大大减小,播放时我什么也听不到。
    • 你有一个示例音频文件让我尝试弄乱,你正在执行什么命令转换为 gsm?
    【解决方案3】:

    我用

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

    【讨论】:

    • 这在 Ubuntu 15.04 SoX v14.4.1 上失败
    【解决方案4】:

    有点晚了,我现在用的是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多