如何将mp3转换为speex?

有什么好的方法可以将mp3文件转换为speex文件?我更倾向于那些能够提供一次性转换多个文件的简单解决方案和/或保持口语音频良好质量的答案。尽管任何解决方案都会受到欢迎,因为我甚至还没有找到一个可行的困难方法。
3个回答

示例:使用宽带将当前文件夹中的所有mp3文件转换为speex格式(输入率使用最佳SRC转换为16KHz - SoX)。
for f in *.mp3 ; do sox "$f" -r 16k -t wav - | speexenc -w - "${f%.*}.speex" ; done

根据偏好更改speex选项和/或SoX速率转换器的适当设置。对于口语音频示例,宽带应该是可以的。

我还需要安装sox(显而易见)和libsox-fmt-all(不太明显)。虽然在这种情况下,libsox-fmt-mp3可能已经涵盖了它。 - Rob Mosher
1是的,我假设SoX存在,就像任何有人在处理音频的地方一样,除了听音乐之外。我不知道您任务的目的是什么,但您可能也对OPUS(前身为Celt)感兴趣,它由知名开发者开发:http://celt-codec.org/ 听觉测试表明其胜过其他所有可用的解码器(Vorbis aoTuV,Apple HE AAC,...)http://people.xiph.org/~greg/opus/ha2011/ ,尽管比特流尚未固定,但已经向公众提供。 - zetah
需要注意的是,通过这个命令行生成的speex文件将不会保留来自mp3文件的任何元数据。 - Christian


虽然Opus是现在更好的选择,但你仍然可以使用FFmpeg(如果配置了--enable-speex):
for f in *.mp3
  do 
  ffmpeg -i "$f" -ar 32000 -q:a 10 "${f%.mp3}.spx"
done

这在我的设置上产生了相当合理的音频....