您的位置:首页 > 产品设计 > UI/UE

True Audio (TTA) --- A lossless codec

2011-10-22 21:42 127 查看
【Linpiu】从True audio 主页上看,其压缩率不是很高。我想这也是其没有像FLAC, APE 那么流行的原因。在些记录一下,下次会好好学习其中的算法。

True Audio (缩写为TTA,网址: http://www.true-audio.com/)是由一组俄罗斯程序员开发的一种无损音频压缩编码技术。其主要的特点是免费、简单以及注重实时性。TTA的优点在于:


开放源码,但不是基于GPL,而是更为松散的Open Source许可;

效率很好,并曾获得Technion (Israel Institute of Technology, 由 Intel 赞助)的 Tamir Barak 和 Noam Koenigstein 专门面向多处理器环境下的优化。

专门面向硬件实时编码进行优化,并具备部分硬件播放支持;

支持多声道音频和高采样位数音频;

支持ID3v1和ID3v2标记

兼容播放增益;

对错误的容错性好。

可支持Matroska(即MKV)容器文件格式。



TTA的缺点在于:


不具备混合/有损模式;

不支持RIFF段落;

不支持管道操作。


TTA的无损压缩是基于适应预测滤波技术,其实与大多数无损音频压缩编码在本质上区别不大。该类无损压缩技术的最大缺点是压缩/解压速度并不高,而 TTA 则着重于这一方面进行优化,在提供足够的压缩比的前提下努力维持相对较高的处理速度。TTA支持多声道、8/16/24位采样位数的标准WAV格式文件作为压缩处理的输入。压缩比例主要视音频(音乐)类型而定,比例可从30%~70%不等。目前,开发小组正致力于优化TTA编解码器以便能更容易地在不同的硬件上实现支持。

TTA 提供了完整的基于DirectShow技术的流分离、编码和解码插件。支持Matroska(http://www.matroska.org/)容器文件格式。由于现在大多数Windows平台的播放器都支持DirectShow方式,所以TTA文件可以在大多数媒体播放器上进行播放。另一方面,由于 TTA提供的DirectShow插件不仅仅是解码插件,还包括了流分离和编码插件,因此TTA可以很方便地与各种应用进行整合。

在硬件方面,TTA专门针对硬件厂商进行了代码优化,并向业界提供在产品中整合TTA支持的帮助。最先提供TTA格式播放支持的硬件设备是Neuston Corporation (http://www.neuston.com/)的DVD播放机Neuston Maestro DVX-1201(该产品貌似已停产)。DVX-1201实际上是一台以DVD为介质的多媒体播放机,除了支持TTA格式外,还支持播放 MP3/MP4/Ogg Vorbis/DivX等格式。该机还可以通过固件升级的形式更新对新媒体格式的支持,属于比较罕见而且是比较专业的设计。



Neuston Maestro DVX-1201 DVD Player

与LA(LosslessAudio,另一种无损音频压缩技术,参见本站介绍:LA - LosslessAudio 无损音频编码及无损压缩原理介绍)相似的是,TTA也在网页上公开介绍了自己的技术细节。而且,由于TTA是开放源码的方案(LA是封闭源码), TTA公开的技术细节比LA的内容要详细得多。由于翻译水平有效,如觉得文中有错,请参考原文网址:,并给作者来信指出。

TTA的无损压缩技术介绍

众所周知,没有有效的算法可以无损地压缩随机的输入数据。音频压缩算法所能获得的高压缩比,主要依赖于所使用的算法对数据的特性的熟悉和处理程度。无损数据压缩(不是无损音频压缩)并不是什么新技术。被广泛使用的压缩软件工具,早期的诸如PkZip、Compress和Gzip,现在的WinZip、 WinRAR和7-Zip等,都是专门面向文本和二进制数据文件的压缩工具。这些工具可以实现文件的无损压缩,解压后的文件和原文件比较是一个比特都不会偏差。但是,这些压缩工具所使用的算法或多或少地都是基于Lempel-Ziv算法,对多媒体数据并没有显示出任何优势。虽然这些工具在压缩文本文件时可达超过2:1的压缩比,但压缩多媒体文件时经常是没有任何效果。

所有基于Lempel-Ziv的压缩工具,其原理都是一样的:在被压缩的数据中寻找重复的段落,并把后面的段落替换为指向该种段落第一次出现的位置的指针。由于指针的长度远小于段落的长度,于是,压缩便实现了。对于音频文件,数据就是音频采样值,但是,在音频数据中很难找到一模一样的重复的音频采样值段落,所以这种压缩算法行不通。另一方面,这种压缩算法并没有考虑和利用音频采样数据的特点:相邻的采样值之间极强的相关性。因此,所有现代的多媒体压缩算法都包含有数据去相关处理环节以降低音频数据这种统计相关性,即这些算法通常包含两个处理环节:声道内去相关处理和预测建模。

去相关处理后的剩余信号通常可以用熵编码技术进行无损压缩。实际上,所有支持多声道音频的音频压缩器都使用了以下技术中的一种:Huffman Coding 荷夫曼编码、Run Length Coding 游程编码或Rice Coding Rice 编码,并通过以下主要的处理步骤实现压缩:

分段进行信号分解

声道内信号去相关

信号建模(预测)

熵编码

TTA 无损音频压缩器的结构同样包括以上处理步骤。在进行到信号建模(预测)阶段时,输入的信号的建模由一个两阶段的适应滤波器完成。原始信号和预测后的信号之间的区别被进行熵编码,而剩余信号则通过Rice编码进行压缩。

最优化的分段大小极大地依赖于建模阶段所选择的压缩算法。通常的情况下,为了能还原有缺陷的文件,分段的大小应尽可能的小。但分段越小,则意味帧越多,因此浪费在帧结构上的字节数就会增加,从而降低了压缩比。而增大分段的大小,则会使编辑压缩后的数字流变得困难。在统计建模上也要求分段的大小不能太大,否则无法正确地进行信号建模。TTA压缩器使用了动态(适应)信号建模,这种算法只对大的帧有效。因此,TTA最后选择的帧长度是比1秒钟多一点的。

输入的多声道数据需要进行声道内去相关处理。比如双声道音频,两个声道的数据会被转换为“平均”和“差异”两条数据通道,所使用的方法很简单:平均 = (声道1+声道2)/2;差异 = 声道1 - 声道2。为了不导致数据丢失,这两条公式被转换为:差异 = 声道1 - 声道2;平均 = 声道1 - 差异/2。对于声道之间有着良好相关性的多声道音频数据,这个步骤的处理通常可以显著地增加压缩率。

在建模阶段,TTA无损音频压缩器尝试实现通过一个函数去逼近信号,而该函数的运算结果与原始信号的差值(又称为剩余信号residue、差异信号 difference 或误差信号error)必须尽可能的小。与其他阶段(声道内去相关和剩余信号编码)对比,建模阶段的处理有很大的区别。下面是在TTA压缩器中使用的一些主要方法:

通过一系列的多项预测器进行信号的逼近;

以线形预测方法( Linear predictive coding,LPC)进行信号建模;

以适应滤波器进行信号建模。

其中,以适应滤波器进行信号建模得到的结果是最好的。该方法使用了IIR(Infinite impulse response,无限脉冲响应) 滤波器,滤波器的工作参数在处理过程中需要不断地根据信号进行适应变化。基础的系统元素为p-维非递归滤波器,一般可以通过以下表达式描述:

(1)



其中:
x'
是对新采样值x
的预测值;
v[n,k] 是滤波器权重系数的下一个值;
r 是信号延时。

滤波器权重系数通过以下公式定义:

(2)



其中:
m 是定义滤波器适应速度的系数;
e
是输出信号(误差信号)的下一个值;
sgn 是信号值signal[]的符号。

剩余信号:e[n] = x[n] − x'[n]的最小值可以通过不同的多种算法获得,比如基于统计逼近的Widrow-Hoff的最小均方误差算法(LMS) 或递归最小平方算法 (RLS)。虽然第二种算法有更高的收敛速度,但它需要充足的处理器资源。因此,TTA使用了LMS算法。TTA压缩器算法收敛通过最快下降方法实现,而且,为简化计算,TTA使用了Widrow-Hoff的梯度随机逼近算法。作为对收敛速度的理想化的标准,TTA使用了滤波器误差的模的最小值。

独立于可能是比较武断的滤波器系数矩阵v的值,该算法会聚于平均(converges at the average)并当参数m满足条件1/λmax > m > 0时能保持稳定。λmax 是用于输入信号的自相关矩阵特征值的最大值。输出剩余滤波信号被定义为真实信号和预测值之间的差,其计算方法是以真实信号与横断滤波器(见参考1)的权重系数进行卷积。该(第p维的权重卷积向量的)滤波器的脉冲特性在每一个离散时间矩(见参考2)上被更新。

TTA无损音频压缩器的算法与上面的描述相比稍微有点不同。输入的信号经历了两阶段的滤波。在第一阶段,我们使用零级别预测器作为滤波器,因此误差信号可以如下的公式来定义:

e[n] = x[n] − kx[n − 1], 其中k非常接近1。
接下来,在滤波的最后阶段,TTA使用一组类似于上面描述的宽带滤波器。以上技术的组合,在所有被试验过的技术中在预测精度和处理速度方面都是最有效的。但不足之处是分段尺寸较小,以及由此造成难以对压缩流进行编辑。

当模型被建立后,编码器从原始信号中减去逼近信号。如果模型不正确,则原始信号和预测信号的差别就是剩余信号,并会在随后的处理中进行无损压缩编码。TTA利用了差异信号通常具有拉普拉斯(Laplas)分布的事实,而且有一组特殊的荷夫曼编码,即Rice编码,可以有效和快速地对这些信号进行编码压缩,并且不需要创建字典。Rice编码过程包括寻找一个符合信号分布的用于代码合成的参数。如果信号的分布状态改变了,则该理想参数也会改变,因此需要能在必要时能估计该参数的技术。如果预测有效,剩余信号会包含比原始信号要少的比特数。更甚地,通常剩余信号会被较小尺寸的具有自己独有的Rice参数的分段分开。选择较小的分段大小会同样影响编码效率。由于TTA无损音频压缩器使用适应编码技术并结合动态Rice参数定义来编码剩余信号,在此情况下不执行由较小段落导致的剩余信号分割。

参考文献:

A.V.Djourik, P.G.Zhilin. Siberian Solar Radiotelescope: The PCA format for the SSRT data compression. Numerical methods and programming, The Lomonosov Moscow State University, 4 (2003), 278-282.

M.Hans, R.Schafer. Lossless Audio Coding. Technical Report. CSIP TR-97-07. Atlanta, 1997.

T.Robinson. SHORTEN: Simple lossless and near-lossless waveform compression. Technical report, Cambridge University Engineerig Department. Cambridge, December 1994.

P.C.Craven, M.J.Law, and J.R.Stuart. Lossless Compression using IIR Prediction Filters. 102nd AES Convention. Munich, March 1997.

R.F.Rice, Some practical universal noiseless coding techniques. Technical Report. JPL-79-22, Jet Propulsion Laboratory. Pasadena, 1979.

Linking: http://www.wavecn.com/content.php?id=148
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: