自适应有损或无损的音讯压缩和解压缩演算方法与流程

文档序号:18731239发布日期:2019-09-21 00:33阅读:440来源:国知局
自适应有损或无损的音讯压缩和解压缩演算方法与流程

本发明是有关于一种自适应有损或无损的音讯压缩和解压缩演算方法,且特别是有关于一种音讯压缩的演算方法以提升压缩效率,以确保音频传输稳定与声音质量。



背景技术:

音讯文件格式目前存在着多种不同类型的文件格式,但无论格式为何,一般取得音频数据的方法是:采用固定的时间之间隔,对音频电压采样(量化),并将结果以某种分辨率储存,例如:CDDA(Compact Disc Digital Audio)每个采样为16位或2字节。再者,采样的时间间隔有不同的标准,例如:CDDA采用每秒44100次,DVD采用每秒48000或96000次。因此,取样频率、音频分辨率以及音频声道的数量(例如立体声为2声道)是音讯文件格式的影响条件,而音讯文件格式可以支持多种编码压缩方式,其可分为两种音讯档案的压缩格式:(一)无损音频压缩(Lossless Compression)例如:WAV,FLAC,APE,ALAC,WavPack(WV);(二)有损音频压缩(Lossy Compression)例如:MP3,AAC,OggVorbis,Opus。

两者的差异为,如果要确保音乐的原始质量,则选择无损音频压缩其优点是:经解压产生的数据与未压缩的数据完全相同,不会产生音频质量上的损失。此方式虽可以保留源文件的音频质量,但却对于实时传输造成极大的负荷,因此用于无线装置间的传输压缩,多半不会采取此方式。

另,有损音频压缩的特色:具有很大的压缩比率,且提供不错的音频质量,进而有助于无线装置之间的传输。有损压缩的音讯文件格式是基于声学与心理学的模型运算,会尽力抑制音频质量的损失,使一般人耳很难或根本无法察觉压缩后的差异,但若使用高阶音响器材拨放此类音频压缩格式,却很容易听到声音失真。

由于一般无损音讯压缩率依照乐曲不同的类型与内容,平均约有50%至70%压缩比率,每一原始音讯区块(frame)经过压缩后为大小不一,且变化剧烈。相比有损音讯压缩比率可低至10%且还能维持一定音频质量,最主要每一原始音讯区块经压缩后的大小一致,因此无线或有线装置于传送音频数据时,大都采用有损压缩的格式。

然于现有音讯压缩方法中国台湾发明专利公告号:TWI276047B『无失真音讯压缩/解压缩熵压缩编码的装置及其方法』所示,该装置包括一缓冲器,一时间轴预测器及一位分配的熵编译码器,其中该时间轴预测器会将此时点输入讯号值的预测值与此时点的原输入讯号值作减法运算而产生一预测误差讯号。然后,该预测误差讯号再输入根据一编码准则的该位分配的熵译码器,而编码成不同长度之数据区间。又熵压缩编码后的数据区间结构包括一32位的文件头(header)信息,文件头的后为真正的数据,但该数据实质上为一该数据的原本值与区间最小值的差。

该案计算方法运用递归最小平方器RLS(recursive least square)及最小平均平方器LMS(least mean square),该计算方式计算量大且收敛比较慢以及分割后的编码区间长度不一,也就是因为每段编码的区间长度不同,且每一编码区间都需要12-bit来表示区间的点数长度,如此一来将会造成无线装置实时传送的负担。



技术实现要素:

为了克服现有运算方法的不足,本发明主要目的在一目标带宽下,自适应采用有损(lossy)或无损(lossless)压缩方法。并支持固定带宽(fixed bit rate),使每一区块原始音讯数据压缩后的大小一致,以利网络或无线装置间的传输。

本发明另一目的提出一音讯压缩演算方法,可以提升压缩效率。本创作同时采用有损与无损音讯压缩,在压缩每一区块时判断若无损压缩结果符合目标带宽,符合者则采用无损音讯压缩,否则另采用有损音讯压缩。当目标带宽由低(200Kbps)渐次调高(1000Kbps),区块中采用无损音讯压缩的比例也会由0%渐渐提高到100%。

为实现上述目的,本发明采用的技术方案是:一种自适应有损或无损的音讯压缩和解压缩演算方法,其特征在于,包括:根据原始音频格式条件与环境条件,将音频数据先切成固定的长度区段,进行有损音频压缩步骤后,若是失真小于一定的值,则进行无损音讯压缩,否则直接采用有损音讯压缩;经失真小于一定的值进行无损音讯压缩,来达到结果小于目标带宽值,是则采用无损音讯压缩;否则进入采用有损音讯压缩;其中有损与无损音讯压缩,支持固定带宽,每一区块原始音频数据经压缩后的大小一致,以利网络与无线装置传输;在压缩每一区块时判断若无损压缩结果符合目标带宽,则采用无损音讯压缩,否则则采用有损音讯压缩。

本发明主要提供压缩音讯透过无线或有线网络传送时,会依照环境以及声音质量的需求,将音频数据压缩至目标带宽,如320Kbps,以确保传输稳定与声音质量。带宽愈大,通常声音质量愈好,而无损压缩需要最大带宽,能达到和原始音频完全一致的声音质量。

附图说明

图1为本发明的音讯压缩演算方块图。

图2为本发明的有损音频压缩步骤方块图。

图3为本发明的有损音频解压缩步骤方块图。

图4为本发明的无损音频压缩步骤方块图。

图5为本发明的无损音频解压缩步骤方块图。

其中:将音频数据先切成固定的长度区段、1,进行有损音讯压缩、2,离散余弦变换、21,量化、22,进行压缩、23,与目标带宽相较、24,调大比例因子、241,调小比例因子、242,记录、25,读取、26,解压缩、27,量化还原、28,反离散余弦变换、29,失真小于一定的值、3,无损音讯压缩、4,预测运算一、41,预测运算二、42,压缩、43,记录、44,读取、45,解压缩、46,预测还原运算一、47,预测还原运算二、48,求得全部原始值、49,结果小于目标带宽值、5。

具体实施方式

请参阅图1,首先,根据原始音讯格式条件与现有的环境条件(带宽),而将音频数据先切成固定的长度区段1来进行有损音讯压缩2,这样的好处是有益于网络与无线装置之间的传输。

接着进行有损音频压缩步骤请同时参阅图2,步骤1:离散余弦变换21,将整个区段音频数据进行离散余弦变换(Discrete cosine transform,DCT),得到DCT系数(DCT coefficient);步骤2:量化22,将所有DCT系数除以一比例因子(scale factor),取整数后得到量化(quantization)系数;步骤3:进行压缩23,对量化系数进行无损压缩,得到压缩数据;步骤4:与目标带宽相较24,比较压缩结果,若大于目标带宽则调大比例因子241并重复步骤2量化22及步骤3进行压缩23;若小于目标带宽,则调小比例因子242并重复步骤2量化22及步骤3进行压缩23;最后步骤5:记录25,纪录该区段最后压缩数据与比例因子的值。

经有损音频压缩2步骤后若是失真小于一定的值3,则进行无损音频压缩4步骤;反之无则采用有损音频压缩步骤。再请同时参阅图3为有损音频解压缩步骤,步骤1:读取26,读取区段的压缩数据与比例因子(scale factor),步骤2:解压缩27,将压缩数据进行解压缩,得到量化系数,接着步骤3:量化还原28,将每一个量化系数乘以比例因子,近似于有损压缩步骤1得到的原始离散余弦变换系数;最后步骤4:反离散余弦变换29,进行反离散余弦变换(Inverse Discrete cosine transform),得到区段的音频数据,该音频数据近似于原始音频数据。

承上述,经有损音频压缩2步骤后是失真小于一定的值3进入无损音讯压缩4,再请参阅图4,

步骤1:预测运算一41,将整个区段音频数据进行线性预测编码(Linear predictive coding,LPC),得到一组LPC系数(LPC coefficient),公式一:

Y(n)为第n个预测值,X(n-i)为原始值,Ai为LPC系数,p为LPC系数个数,p<=n,其中原始值与LPC系数均为整数。

步骤2:预测运算二42,预测误差值E(n)等于原始值X(n)减去预测值Y(n),而E(n)通常远小于X(n),公式二:

E(n)=X(n)-Y(n)

步骤3:压缩43,对误差值进行无损压缩,得到压缩数据;最后步骤4:记录44,记录p个LPC系数以及前p个原始值与该区块与压缩数据。此为无损音频压缩4之步骤,来达到结果小于目标带宽值5,是的话则采用无损音讯压缩;反之若为否,则进入采用有损音讯压缩。

然采用无损压缩格式,于无损解压缩步骤请参阅图5所揭,步骤1:读取45读取p个LPC系数与区段压缩数据;步骤2:解压缩46,将压缩数据进行解压缩得到误差值;步骤3:预测还原运算一47,由公式一,前p个原始值与LPC系数可以得到预测值Y(p+1);步骤4:预测还原运算二(48),由公式二,原始值X(p+1)=Y(p+1)+E(p+1);最后重复预测还原运算一、二(47、48)以求得全部原始值49。

以下为每一区段在做无损压缩时可以事先预算音频数据,以选择采用压缩率较好的实施例。

实施例一:无损压缩步骤

1.输入一组整数Xn,乘2取绝对值并记录正负号于最低位(Least Significant Bit,LSB),得到一组正整数Dn。

2.计算正整数Dn个别的位长度,得到一组正整数Bn。

3.将正整数Dn和正整数Bn分割成同样长度的区块,计算出每个区块中最大的位长度Bh,而Br=Bh-K,K为一常数,通常为3或4。

4.将每个区块中的Dn分为二部分,bit 0至bit Br,称为余数Rn,直接记录不予压缩,bit Br+1至bit Bh加入待压缩数列Un。

5.对Un进行熵编码(entropy Encoding)压缩运算,得到压缩数据Cn。

6.储存压缩数据Cn、余数Rn以及每个区块中最大的位长度Bh。

实施例一:无损解压缩步骤

1.读取压缩数据Cn、余数Rn以及每个区块中最大的位长度Bh。

2.对压缩数据Cn进行解压缩运算,得到待压缩数列Un

3.将待压缩数列Un和余数Rn组合成正整数Dn

4.正整数Dn除2,再加上正负号得到整数Xn

实施例二:无损压缩步骤

1.输入一组整数Xn,乘2取绝对值并记录正负号于最低位(Least Significant Bit,LSB),得到一组正整数Dn。(同实施例一的步骤1)

2.计算正整数Dn个别的位长度,得到一组正整数Bn。(同实施例一的步骤2)。

3.将正整数Bn进行线性预测编码,得到一组LPC系数(LPC coefficient)。

4.用公式一进行预测运算,得到预测值Pn。

5.将正整数Dn分为二部分,bit 0至bit Pn,称为余数Rn,直接记录不予压缩,其余位加入待压缩数列Un,若预测值Pn>=正整数Bn,则加入0。

6.对待压缩数列Un进行熵编码(entropy Encoding)压缩运算,得到压缩数据Cn。

7.储存压缩数据Cn,余数Rn跟LPC系数。

实施例二:无损解压缩步骤

1.读取压缩数据Cn跟LPC系数。

2.对压缩数据Cn进行熵编码(entropy Encoding)解压缩运算,得到待压缩数列Un。

3.用公式一进行预测运算,得到预测值Pn,依据预测值Pn读取余数Rn。

4.将待压缩数列Un和余数Rn组合成正整数Dn。

5.正整数Dn除2,再加上正负号得到整数Xn。

以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利权利;同时以上的描述,对于熟本技术领域的专门人士应可明了及实施,因此其他未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述的申请专利范围中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1