我们有一些原始语音音频,需要通过互联网分发。我们需要体面的质量,但它不需要具有音乐质量。我们主要关心的是消费者的可用性(即他们可以播放什么以及在哪里播放)和下载的大小。我的经验表明,mp3 不会产生最佳的语音音频压缩数字,但我不知道最好的选择是什么。最终,我们希望将转换过程自动化,以允许消费者选择他们想要的质量与尺寸水平。
6 回答
你应该试试Opus 。压缩命令行示例:
ffmpeg -i x.wav -b:a 32k x.opus
正如您正确指出的那样,语音压缩不同于一般的音频压缩。您会发现许多专用于电话应用程序的编解码器,从 PCM 和 ADPCM 到后来的基于数据包的编码,例如用于 GSM 蜂窝网络的 CELP。
尽管如此,由于所使用的介质,VOIP 语音编码与语音编码略有不同。您可以在Speex 软件库中找到用于语音编码/解码的良好、免费(无阻碍和开源 (BSD))库。
同样,您选择哪种取决于您正在编码的语音和传输它的介质。另请注意,许多库有几种算法可以根据情况使用,有些甚至会根据声音和网络的条件即时切换。
要获得更多帮助,请缩小您的问题范围。
-亚当
现场语音音频(如 VoIP 电话)中最常用的压缩格式是 μ-Law(在美国使用 mu-Law/u-Law)和 a-Law(在欧洲使用等),这与未压缩PCM,不支持那么宽的频率范围(较小的可能值范围会忽略必要频谱之外的声音,并且需要较少的存储空间)。
出于可用性考虑,最简单的方法是使用 mpeg 压缩 (mp2/3/4) 流式传输到标准媒体播放器,因为算法很容易获得并且通常非常快并且几乎所有媒体播放器都应该支持它,但对于语音,您可以尝试指定较低的比特率或首先从较低质量的文件进行转换(WAV 可以有多个采样率,语音需要比音乐或效果低得多的采样率,它基本上就像视频上的每秒帧数)。或者,您可以使用 Real Media、WMA 或其他专有格式,但这会限制可用性,因为用户需要特定的第三方软件才能播放,尽管 WMA 具有出色的压缩率以及特定于语音音频的压缩选项。
假设您的用户将运行 Windows,您可以将 WMA 语音压缩编解码器与 Windows Media Encoder SDK 一起使用。否则,您可以使用 ACM 来使用 G723/G728、ADPCM、mu-law 或 a-law 之类的东西,其中一些在 Windows XP 及更高版本上作为标准安装。这些可以打包在 WAV 文件中。您需要进行一些试验才能找到合适的比特率/质量(可能不要打扰 mu-law 或 a-law)。对于语音数据,您可以使用非常低的采样率(例如 16000 或 8000),因为在人类口语中没有超过 4Khz 的频率。
我认为AMR是最好的语音编解码器之一。大约一年前我在使用它,我记得质量非常好,尺寸也很小。
一个缺点,尤其是在您的情况下,据我所知,它不受广泛的媒体播放器的支持。QuickTime 和 RealPlayer 是我知道播放 .amr 文件的两个。
试试speex ... 不受专利的限制,在尺寸和 CPU 方面都有良好的性能。我一直很幸运在 iPhone 上使用它。