最佳语音压缩算法/格式

Posted

技术标签:

【中文标题】最佳语音压缩算法/格式【英文标题】:Best Voice Compression Algorithms/Formats 【发布时间】:2008-10-03 15:50:53 【问题描述】:

我们需要通过互联网分发一些原始语音音频。我们需要体面的质量,但它不需要具有音乐质量。我们主要关心的是消费者的可用性(即他们可以在哪里玩什么)以及下载的大小。我的经验表明,mp3 不能为语音音频产生最好的压缩数字,但我不知道最好的选择是什么。最终,我们希望自动化转换过程,让消费者可以选择他们想要的质量和尺寸级别。

【问题讨论】:

【参考方案1】:

你应该试试Opus。压缩命令行示例:

ffmpeg -i x.wav -b:a 32k x.opus

【讨论】:

【参考方案2】:

Start here.

正如您正确指出的那样,语音压缩不同于一般的音频压缩。您会发现许多专用于电话应用程序的编解码器,从 PCM 和 ADPCM 到后来的基于数据包的编码,例如用于 GSM 蜂窝网络的 CELP。

由于所使用的介质,VOIP 语音编码与语音编码略有不同。您可以在Speex software library 中找到用于语音编码/解码的良好、免费(无阻碍且开源 (BSD))的库。

同样,您选择哪种取决于您正在编码的语音和传输它的介质。另请注意,许多库都有多种算法可以根据情况使用,有些甚至会根据声音和网络的条件即时切换。

要获得更多帮助,请缩小您的问题范围。

-亚当

【讨论】:

对于自 2008 年以来遇到此问题的任何人,Opus 已取代 Speex。【参考方案3】:

现场语音音频(如 VoIP 电话)中最常用的压缩格式是 μ-Law(在美国使用 mu-Law/u-Law)和 a-Law(在欧洲使用等),它们,与未压缩的 PCM 不同,不支持那么宽的频率范围(较小的可能值范围会忽略必要频谱之外的声音,并且需要较少的存储空间)。

出于可用性考虑,最简单的方法是使用 mpeg 压缩 (mp2/3/4) 流式传输到标准媒体播放器,因为算法很容易获得并且通常非常快,并且几乎所有媒体播放器都应该支持它,但对于语音,您可能尝试指定较低的比特率或首先从较低质量的文件进行转换(WAV 可以有多个采样率,语音需要比音乐或效果低得多的采样率,它基本上就像视频上的每秒帧数)。或者,您可以使用 Real Media、WMA 或其他专有格式,但这会限制可用性,因为用户需要特定的第三方软件才能播放,尽管 WMA 具有出色的压缩比以及特定于语音音频的压缩选项。

【讨论】:

【参考方案4】:

假设您的用户将运行 Windows,您可以将 WMA 语音压缩编解码器与 Windows Media Encoder SDK 一起使用。如果做不到这一点,您可以使用 ACM 来使用 G723/G728、ADPCM、mu-law 或 a-law 之类的东西,其中一些在 Windows XP 及更高版本上作为标准安装。这些可以打包在 WAV 文件中。您需要进行一些试验才能找到正确的比特率/质量(可能不要打扰 mu-law 或 a-law)。使用语音数据,您可以以非常低的采样率逃脱 - 例如16000 或 8000,因为人声中没有超过 4Khz 的频率。

【讨论】:

【参考方案5】:

我认为AMR 是最好的语音编解码器之一。大约一年前我在使用它,我记得质量非常好,尺寸相当小。

一个缺点,尤其是在您的情况下,据我所知,它不受广泛的媒体播放器的支持。 QuickTime 和 RealPlayer 是我知道播放 .amr 文件的两个。

【讨论】:

【参考方案6】:

试试speex ... 不受专利的影响,无论是尺寸还是 CPU 都具有良好的性能。我一直很幸运在 iPhone 上使用它。

【讨论】:

以上是关于最佳语音压缩算法/格式的主要内容,如果未能解决你的问题,请参考以下文章

atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php

Elasticsearch之数据压缩算法

7zip的lzma和lzma2算法在啥情况下压缩率不一样

[译] 理解 zip 和 gzip 压缩格式背后的压缩算法

[扩展知识] 理解 zip 和 gzip 压缩格式背后的压缩算法

毕业设计/matlab系列基于ADPCM压缩标准的音频压缩和解压缩实现