OptimFROG(
http://www.LosslessAudio.org)
是一个属于个人作品的无损音频压缩算法。顺带一提,由于无损音频压缩算法不是知觉音频编码,不需要对人耳的遮蔽效应进行建模等个人
能力难以做到的事情,因此无损音频压缩编码出现了很多个人作品。
所谓无损音频压缩,也即区别于MP3一类的有损音频压缩,其解压后的音频数据的每一个比特都与原来是完全一致的。OptimFROG虽然是个人作品,
但其
软件版本的支持性党党好:Windows、Linux和Mac平台一应俱全,并且支持各种主流媒体播放器,包括Windows Media
Player、foobar2000、Winamp
2/3/5、dBpowerAMP、XMPlay、QCD和XMMS。在文件格式的特性上,它也支持各种文件标记,包括ID3 v1.1、APE
v2、ID3v2等。
在压缩比方面,OptimFROG通常可以达到25%(对于较安静的古典音乐)~70%(嘈吵的摇滚乐)于原始音频数据大小的压缩比例。需要注意的是
由于
是无损压缩,因此不能把这个压缩比与有损压缩(比如MP3)相提并论。
OptimFROG
使用的音频压缩技术基于通常的立体声去相关概念,再加上理想化(线性)预测。此技术早于2001年12月在OptimFROG的4.0b版本出现。在当时
是所有无损压缩技术中压缩比最高的技术:至少有1.5%的提升。
OptimFROG目前的最新版本是4.520b1,于2006年4月26日释出。据作者
声称,该版本有以下显著特点:
- 逼近最好的无损音频压缩比;
- 优化支持所有的整数PCM波形格式,最大32位;
- 提供可用于多种音频播放器的输入插件;
- 速度快,使用AMD Athlon XP 1800+,默认模式下压缩CD质量音频数据可达
12.4b倍速,解码可达17.4倍速;在最快模式下压缩速度甚至可以达到28.1倍速,解码可达24.7倍速;
- 提供支持Win32, Linux, 以及 Mac 命令行版本;
- 提供简单易用而且功能强大的Windows图形界面前端: Kermit (由Speek制作);
- 可扩展、可流式传输的压缩格式,兼容多种文件标记方式;
- 提供优化选项,可进一步改善压缩比且不会增加解码负担;
- 在Win32平台下支持大于2GB的文件;
- 支持编码和解码的完全管道操作(注:一般用于Linux/Unix);
- 编码器支持无格式音频数据文件;
- 解码器支持快速校验压缩文件的完整性;
- 编码器可被 Exact Audio Copy 调用;
- 通过选项支持在压缩文件中存储原始音频数据的MD5校验和,并提供校验的功能;
- 自适应比特流错误并透明地实时恢复;
- 快速定位,并在播放插件中实现智能缓存;
- 支持 ID3v1.1 标记和APEv2标记,兼容ID3v2;
- 在foobar2000插件中支持HTTP流播放;
- 在foobar2000和Winamp3插件中支持回放增益;
- 支持创建自解压文件,解压程序段仅占54KB;
- 完整的SDK,可在任何应用中使用压缩的文件;
在OptimFROG的发展上,作者已经发展出了数个分支,并已经着手于将这些分支整合到主干中去。这些分支主要包括1)支持IEEE浮点数音频数据
和
2)混合有损压缩和无损压缩的双比特流(DualStream)。这两个分支目前各自具有的特点包括:
1) 支持IEEE浮点数音频数据
- 第一个支持IEEE浮点数的无损音频压缩编码器;
- 完全支持 16.8 type 1 (Cool Edit), 24.0 type 1 (Cool Edit) 和 0.24 type
3
(标准) 三种浮点数音频格式。支持标准和扩展的波形格式;
- 完全支持无穷、非数值、负零值等特殊浮点数值;
- 最优化支持整数数值的浮点数据;
- 对比常规的支持音频数据的数据压缩软件(比如WINRAR、WINACE等),在压缩率方面可获得平均10%~15%的提升。
- 对比常规的支持音频数据的数据压缩软件,在压缩速度方面可快2~10倍;
- 使用AMD Athlon XP
1800+,默认模式下编码44.1kHz/32位/立体声的数据可达到9.0倍速,解码可达到11.7倍速。
- 可通过选项对音频数据在实际压缩前进行预处理从而减少无效的尾数以增加压缩率。
2)双比特流(DualStream)
OptimFROG DualStream 是受到David Bryant,WavPack
的作者的启发而产生。Dual
Stream的目标是填补知觉音频编码和无损编码之间的鸿沟,以比常规无损压缩少一半或更少的比特率提供完全透明的音频编码,并允许渐进地提升有损压缩的
质量层次,直到无损编码。 OptimFROG DualStream与其他知觉音频编码相比有如下特(优)点:
- 不会在解码时产生爆音。其他知觉音频编码在处理非常响的音乐时即使用最高的比特率也都有可能因为合成滤波器的原因而在解码时产生超过整数数值
最大允许范围
的解码结果,从而导致爆音。
- 不会产生“前响(pre-echo)”(相对于回声)。其他知觉音频编码都会产生“前响”现象,即在实际播放的声音(通常是很短暂的信号)之
前会出现噪
声。
- 不会出现回声(post-echo)。其他知觉音频编码通过利用回声效应和听觉屏蔽效应(在一个非常响的声音后人的听觉会降低敏感度最多达
20毫秒)来节
省存储空间和掩盖超实际长度的信号。
- 不会出现超实际长度的信号(overshot)。由于其他知觉音频编码对音频的段落化处理会在音频信号部分改变其特征时应用了较高的量化级
别,从而在播放
时产生超实际长度的信号。
- 独立的聆听音量级别(Listening
Level)。其他知觉音频编码在特定音量级别下通过ATH方法把播放内容分频,但由于ATH方法依赖于聆听音量级别,因此不一定准确。
- 适合进行编辑和转换。其他知觉音频编码由于采用了心理声学模型,即使使用相同的编码器也会在反复的压缩处理后产生劣质的效果。
- 适合计算机音频数据处理。比如语音识别,其他知觉音频编码会使得音频数据变成垃圾(因为经过处理后的音频被分段滤波)。
- 全带宽(full band )。一些知觉音频编码通过滤波器截断超高频。
- 每通道独立的量化级别。一些知觉音频编码使用联合通道量化,导致声音音场空间收窄。
- 通过修正文件选项提供无损还原原始音频。
- 非常小功率的错误信号。平直且为纯粹的白噪声。
- 没有频域人为噪声(frequency domain artifacts)
缺点在于:没有考虑人的听觉系统限制;需要高于知觉音频编码的比特率。当然,实际上OptimFROG
DualStream与知觉音频编码所面向的目标不同,它们之间实在是没有什么可比性。尤其是,知觉音频编码适用于音频的最终成品,主要用于一般用途的聆
听和广播,比特率范围一般从96kbps到256kbps。无损音频压缩则是力图以最少的文件大小获得真正的无损还原。一般地,无损音频压缩的压缩比约在
60%左右,即约850kbps。
为消除在无损和接近无损之间的困难选择,Dual
Stream提供了创建校正文件的选项。校正文件与压缩文件互相分离,并在需要时用作无损还原用。压缩文件和校正文件加起来的大小相等于单一无损压缩文件
的大小。
虽然Dual Steam是受到WavPack的启发,但Dual
Stream应用的原理与WavPack的原理和实现是完全不相同的。因此,OptimFROG相比WavPack也有着自己的优点:
- 对于尖锐的瞬态信号,Dual Stream的失真少于WavPack15倍。
- 对于准固定领域,Dual Stream的失真也略少于WavPack。
- 真正分类的每通道独立的量化级别。
- 在质量模式下可对整个文件维持相同的质量。
- 没有overshot或postecho。
- 先进的噪音抑制选项,改善透明度。
- 无损压缩比优于WavPack最高大3%。
- 压缩文件格式支持快速定位。
- 压缩文件格式支持错误静音。
- 使用平均比特率压缩方式时,可控制具体的比特率。
但也存在着缺点,那就是OptimFROG DualStream比WavPack要慢。在Athlon XP
1800+上OptimFROG的解码速度是23.7倍数,慢于WavPack的31.4倍速达30%。而压缩则更慢,只有12.8倍速,而
WavPack是26.9倍速。
目前作者还在努力更新OptimFROG,正在进行的工作包括:
- Adobe Audition (之前的CoolEdit)全功能插件;
- 支持多声道;
- 压缩时创建恢复信息并可用于修复受损的文件;
- 支持uLaw 和 ALaw 数据类型;
- 在所有编码和解码模式下自动计算速度;
- 无缝连接多个OptimFROG文件;
- 一体化的图形操作界面和插件的自动安装包
- 在SDK中支持指定校正文件;
- 检查WAV文件的无效文件头;
OptimFROG的作者在网站上最后还说:“something completely different and new
;-)”。不过要等到什么时候才知道那个something是什么,就天晓得了。