音频编码解码器(精选8篇)
音频编码解码器 篇1
随着数字化移动终端的日益普及以及地面数字多媒体广播标准的广泛应用,BSAC(Bit-Sliced Arithmetic Coding,比特分片算术编码)成为目前最流行的的音频压缩标准之一。BSAC采用了精细粒度可分级技术,适合运用在非平稳通信信道或多播环境中传输实时音频流,为了使其优势得到较好实现,且出于对开发时间的考虑,本文选择TI DaVinci(达芬奇)平台。
为了使BSAC能够在DaVinci平台上实现,必须使其符合xDM接口标准,这也是本文的研究重点,本文还对BSAC音频压缩编码在DM6446平台上的应用程序进行了开发。
1 BSAC编码概述
MPEG-4 BSAC是在AAC基础上发展而来的,保留了AAC编码中引入的心理声学模型、尺度因子编码,用算术编码代替了AAC的Huffman编码,同时改变了码率的分级系数和量化的频谱成分,并提供差错复原技术,从而极大改善了在易出错信道上传输的音频信号质量。AAC可分级性允许的典型步长为16 kbit/s,而BSAC能使每个音频频道以1 kbit/s的步长从16 kbit/s变化到64 kbit/s,实现码率的可分级,立体声以步长2 kbit/s实现分级[1]。通常情况下,噪声和多径传播会引起信道容量的减少,进而影响移动通信网络和数字广播系统的性能,BSAC的精细粒度可分级技术可以对动态自适应纠错编码提供支持,因此能够有效抑制移动通信网络和数字广播系统性能的降低。
2 xDAIS和xDM算法接口标准
TI公司开发的标准xDAIS(eXpressDSP Algorithm Interface Standard)使通过组件构建复杂系统的过程变得更加快捷和可靠,也使编解码算法的改进和移植更加方便[2]。所有xDAIS标准的算法必须实现IALG接口[3],IALG接口函数的调用顺序如图1所示。xDM(eXpressDSP Digital Media Standard)是在xDAIS基础上增加了一些双核通信的协议,从而适合DaVinci技术应用的开发,xDM比xDAIS增加了两个扩展函数process()和control()。
3 DaVinci软件架构
DaVinci的软件架构能够使片上系统的硬件和软件无缝地组合起来,它规定了应用程序和算法库之间统一、标准的API接口,从而大大缩短了系统研究与开发的时间。DaVinci软件架构如图2所示。用户层进行Linux应用程序的开发,通过EPSI(Easy Peripheral Software Interface,外围软件接口)API来访问和操作I/O及控制各种外设,通过Codec Engine(编解码引擎)提供的VISA(Video,Image,Speech,Audio)API来调用DSP侧兼容xDM标准的音视频编码器算法[4]。
4 BSAC音频编码器实现
4.1 编码器开发流程
TMS320DM6446是采用双核架构(DSP+ARM)的SoC芯片,通过Codec Engine和Codec Server(编解码服务器)来管理ARM和DSP的协同工作。DSP端通过DSP/BIOS运行高性能的BSAC音频编码,ARM端通过Monta Vista Linux操作系统实现对外设的管理以及音频的采集和处理。
BSAC编码器的开发流程如图3所示。首先在DSP集成开发环境CCS3.3工程下将BSAC编码器按xDM标准进行封装,生成编码库文件bsacenc.l64P,加上配置文件(.xs .xdc package.bld)生成能够被Codec Engine配置套件所用的Codec包(ti.sdo.codecs.bsacenc),然后配置DSP的操作系统DSP/BIOS,以及通过XDC工具配置其他组件,生成DSP端的可执行代码(Codec Server),最后ARM端通过Codec Engine的VISA API接口函数调用符合xDM标准的BSAC编码算法。
4.2 Codec包封装
4.2.1 BSAC算法的xDM封装
将BSAC编码器构建成符合xDM标准的算法,IALG接口函数中的algNumAlloc(),algActivate(),algControl(),algDeactivate()可不完成任何处理,为了减少函数的调用,节省代码空间,本文设计的BSAC编码器将上述函数指针置为NULL。BSAC算法实例接口函数IBSACENC_Fxns如图4所示。IBSACENC_Fxns结构体的第一个成员表示模块BSACENC的地址,用来标明具体模块实例;BSACENC_TI_alloc()表示BSAC编码器申请的内存资源,本文申请了3块内存空间,分别用来存储BSAC算法实例对象,采集的原始音频数据,编码后的输出码流;BSACENC_TI_init()初始化BSAC算法实例对象,只有该函数成功返回后,算法实例才能开始处理数据;BSACENC_TI_Moved()允许移动BSAC算法实例对象,重新定位存储器资源;BSACENC_TI_process()实现将输入的PCM数据进行BSAC编码,并输出编码后的码流及帧长;BSACENC_TI_control()实现对BSAC音频编码器参数(如比特率、采样率、通道模式、量化位数等)的设置及BSAC算法状态信息的查询;BSACENC_TI_free()释放BSACENC_TI_alloc()申请的内存空间。
4.2.2 Codec包创建
为了使兼容xDM标准的BSAC音频编码算法能够被编解码引擎调用,须将该算法打包生成1个Codec,即“包”。1个包对应1个目录,目录中包含了1个独立组件需要的所有文件以及相关的元数据。
本文使用TI RTSC(实时系统组件)编解码器包向导来创建BSAC Codec包,首先下载安装必要组件(ceutils(Codec Engine工具),cg_xml(代码生成工具)),设置XDCPATH(具体方法如下所示),然后在xdc工具安装路径下执行./xs ti.sdo.codecutils.genpackage-g,生成codec包所需的5个配置的文件:1)package.xdc定义的BSAC codec包的名称为ti.sdo.codecs.bsacenc,包含了1个算法模块BSACENC;2)package.xs定义了BSAC Codec包所需要的库文件名称(lib="lib/bsacenc.l64P");3)package.bld定义了build相关的属性;4)BSACENC.xdc声明和定义了模块BSACENC,该文件名必须和package.xdc文件中定义的模块名称(BSACENC)一致;5)BSACENC.xs实现了BSACENC.xdc中声明的方法。具体代码为:
export XDCPATH="/home/user/dvsdk_2_00_00_22/codec_engine_2_23_01/packages;
/home/user/dvsdk_2_00_00_22/xdais_6_23/packages;/home/user/dvsdk_2_00_00_22/ceutils_1_06/packages"
4.3 Codec Server创建
在将BSAC编码器打包成Codec后,为了支持Codec Engine调用运行在DSP上的音频编码算法,必须生成一个DSP端的可执行代码Codec Server(bsacenc.x64P),该服务器结合了Codecs,Framework组件和系统代码。为了生成Codec Server,需要一些配置文件如.tcf,.cfg,main()等。Tconf脚本语言的配置文件bsacenc.tcf配置了DSP/BIOS,它分配了数据和代码段的存储空间、使能任务管理器和动态分配堆,创建和初始化其他DSP/BIOS数据对象等。main()用来初始化Codec Engine。通过XDC配置其余组件(如框架组件、DSP/BIOS Link、Codec Engine),BSAC Server配置文件(bsacenc.cfg)部分代码如下所示,它定义了Server的模块属性,获得编码模块BSACENC,说明Codec Server中可用的算法bsacenc。具体代码为:
/*======== Server Configuration ========*/
var Server = xdc.useModule('ti.sdo.ce.Server');
Server.threadAttrs.stackSize = 16384;
Server.threadAttrs.priority = Server.MINPRI;
var BSACENC =xdc.useModule('ti.sdo.codecs.bsacenc.ce.BSACENC');
Server.algs = [
{name: "bsacenc", mod: BSACENC, groupId: 1, threadAttrs: {
stackMemId: 0, priority: Server.MINPRI + 2}
},
];
4.4 ARM端BSAC 应用程序创建
ARM端的应用程序主要是完成Codec Engine的配置及BSAC编码器的多线程设计。Codec Engine的配置文件是通过*.cfg文件存储的,本文的BSAC编码器引擎配置文件部分代码如下所示,它定义了引擎的名字,设置了全局模块来使配置文件生效,设置引擎的运行环境和与Codec Server相对应的名称。BSAC应用程序的Linux多线程程序设计主要包括原始音频信号的采集,音频信号的压缩编码,最后编码后的码流存到本地磁盘用于解码输出。具体代码为:
var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
var os = xdc.useModule('ti.sdo.ce.osal.linux.Settings');
osalGlobal.os = os;
/* ======== Engine Configuration ======== */
var Engine = xdc.useModule('ti.sdo.ce.Engine');
var demoEngine = Engine.createFromServer(
"encode",
"./bsacenc.x64P",
"ti.sdo.servers.encode"
);
5 测试结果与分析
BSAC编码器在封装的过程中,进行了一些优化操作,如浮点运算转换为定点运算、结构的优化、将使用频繁的变量直接存储到DSP的L1DSRAM中等,这样可大大降低DSP的占用率且提高编码算法的稳定性。实验表明,经代码优化后,DSP的占用率从36%减少到18%,大大节约了DSP资源,为同时执行多种编码器提供了可能。本文的BSAC编码器能够支持多种采样率(48 kHz,44.1 kHz,24 kHz),量化精度能实现8位或16位,并且能够压制出不超过96 kbit/s码率的码流。经反复测试,编码器稳定性能相对较好,编码速度快,能够达到音频编码的实时要求,且压缩后的码流经解码器还原的声音从主观感觉上无法分辨与原始音频的差别。
6 结束语
针对达芬奇平台双核架构的特点,本文采用TMS320DM6446实现了BSAC音频编码器的设计,与传统的方法相比,大大缩短了开发时间。本文介绍了xDM算法接口标准及DaVinci的软件架构,成功地将BSAC算法按照xDM接口标准进行了封装,并且在TMS320DM6446的DSP上实现,在ARM端开发的BSAC音频编码应用程序可根据用户需求,自行设置不同的采样率及码率,编码性能均较好。
参考文献
[1]ISO/IEC JTC1/SC29/WG11.Information technology-coding of audiovi-sual objects Part3:Audio[S].2001.
[2]赵勇.DAVINCI技术原理与应用指南[M].南京:东南大学出版社,2008.
[3]刘书洋,李凤亭.基于DSP平台的AVS实时编码系统设计[J].电视技术,2009,33(S1):60-64.
[4]张起贵.最新DSP技术:“达芬奇”系统、框架和组件[M].北京:国防工业出版社,2009.
音频编码解码器 篇2
摘 要:本文提出了作者在实践中总结出的各种视音频文件素材的编码转换方法,并说明了编码转换中的一些原理和技术环节。
关键词:视音频文件格式、编码转换、文件头信息
我们经常从网上、CD 、VCD 中找到很多精彩的视频、动画、图片和声音。在将这些素材导入到非线编辑软件过程中,最大的问题就是格式不一致或编码类型不符合。这给编辑工作带来了极大的遗憾。笔者经过摸索和实验,总结出一套常见素材格式编码转换的方法,在此与大家分享。
首先我们看一下常见能遇到哪些文件格式。视频文件格式常有的: MPEG-1(.mpg .mpeg) 、MPEG-2(.mpg .mpeg) 、MPEG-4(.avi .mp4) 、AVI(.avi) 、divX(.avi) 、WMA(.wma) 、ASF(.asf) 、MOV(.mov) 、RM(.rm) 、DAT ( VCD 中) 、VOB(DVD 中 ) 。要说明的是 MPEG-1 和 MPEG-2 的文件后缀名均为 .mpg ,只是二者编码方式不同。 AVI 文件本身就是一个集合,而非特指某种具体的编码方式,可能包括的编码有 MPEG-1 , MPEG-2 , MPEG-4 ( Microsoft MPEG-4 Video code )和 DIVX 等。 DIVX 和 Microsoft MPEG-4 Video code 同是 mpeg-4 的编码方式,不同的是 DIVX 由 Microsoft MPEG-4 Video codec V3.0 修改而来,是 Divxnet works 公司开发的标准 。在 VCD 影碟中存放的视频文件为 DAT ,在 DVD 影碟中的视频文件是 VOB 。
常见的音频文件格式有: WAV 、MP3 、MPEG 、WMA 、RAM 、CDA 。其中 WAV 本身有多种编码方式,在使用过程中要加以注意。
常见静止图片格式分为点阵图和矢量图,点阵图有 BMP 、JPEG 、TGA 、PSD 等,矢量图有 CDR 、DWG 等 。我们现在的非线编软件大多只使用点阵图,所以原图若是矢量图形,要首先使用矢量图形编辑软件将其导出为点阵图形后再加处理。
还有一些动画文件 FLASH 、GIF 通过格式转换 都可加以利用。
再谈谈转换方法,分为硬件转换和软件转换,区别是是否有专用的硬件板卡参与。在保证转换质量的前提下,我们使用软件来转换,这也比硬件更容易实现。
(一)视频文件和动画文件的转换
通常我们的要求是转为 AVI 或 MPEG-1 MPEG-2 ,这正是大多非线编软件允许导入的文件格式。
1、WinMPG Video Convert
可将 MPEG WMV ASF MP4 MOV SWF DAT(VCD) VOB(DVD) 转为 AVI 。具体的 AVI 编码可自由设定。也可将 AVI 转为 MPEG-1 MPEG-2 (.mpg .mpeg) 。我们使用 WinMPG Video Convert 的好处在于它支持输入较多的文件格式,且对输出 文件可详细设定视音频的编码方式。下图是输出为 AVI 文件时的编码选择窗口。
对于视频部分可以选择编码方式、分辨率、帧率,音频选项除可选择编码方式、采样频率外,还可详细设定码率、质量、是否立体声,甚至可设过滤器,对某一频段之外的声音进行屏蔽,这对除去噪声有很大帮助,见下图。
此外,使用此方法可以选择 AVI to MPG1 和 AVI to VCD ,二者 的共同点是都是输出 MPEG-1 ,只是前者可以手动设置帧率和分辨率(下图),后者输出文件默认按照 VCD 标准,视频为 25.0 fps, 分辨率 352*288 (4:3) ,音频为采样频率 44100 Hz, 双声道。
2、Real 7ime Converter
支持将 RM 等 RealPlayer 流媒体文件 转为 AVI 文件 ,使用前要求系统装有 real player 。
可设置输出 AVI 的编码方式(下图),
经测试, Real 7ime Converter 对视频文件转换是实时的,转换时间等于或稍大于媒体长度。
3、Super DVD Ripper
用于将 DVD 中的 VOB 视频转换为 AVI 。
4、TMPGEnc Plus
支持 AVI 、MPEG-1 转为 MPEG-1 、MPEG-2 。使用向导模式可转换为标准的 VCD 或 DVD ,若要对输出文件进行编码设定,必须使用手工方式。
此方法的主要特点在于对输出的 MPEG 有更详细的编码设置,如设置 MPEG-2 的级别和类别、GOP结构、量化矩阵、码流类型等。对于一些非线编软件或板卡有特殊导入要求的,TMPGEnc Plus将派上用场。
可对 GOP 结构进行设定
5、exe2swf、swf Browser、swf2video
用于全面处理 flash 文件。
exe2swf 可将已生成了可执行文件( .exe )的 flash 文件还原为 swf 文件。
swf Browser 用于对 swf 文件进行分析,可单独将其中的片断 clip 、图像、声音单独提出。
swf2video pro 可以将 swf 转为 AVI (下图) 。
6、gif2avi.exe
用于将 GIF 动画转为 AVI 。
其中 RLE8 Compression 是一种图像的无损压缩方法,只适合压缩 256 色图像数据。
7、视频捕捉HyperCam
用于将 PC 屏幕操作抓为 AVI 文件,可用于宣传片的制作。
要说明的是,由于不支持 DirectX 视频的抓取,所以对屏幕中播放的影片、游戏画面, HyperCam 无能为力。
我们已将各种视频文件转换为大多非线编软件可以导入的格式,但是对于一些依赖板卡的软件来说,必须转换成板卡定义的标准格式才行。比如国产的`创意 21 软件,由于其使用 Matrox 板卡,对通用的视频格式无法导入,这时我们可以利用板卡自带的 DigiTools 软件来实现转换(见下图)。转换输出的文件编码格式为 Matrox MPEG-2 I-frame ,使用 16 进制编辑器查看,可看出 AVI 文件编码中有 Matrox 板卡定义的文件头信息,这也正是非线编软件无法导入同样编码的其它视频文件的原因:对于没有此包头信息的文件,不予接受。
Matrox 板卡的转换工具
(二)音频文件转换
通常非线编软件可导入的音频格式为 wav 或 mp3 。
•windows自带的录音机
常用非线编软件对导入文件有编码方式、采样频率和量化级数的要求。我们常常发现拿来的 wav 文件不被编辑软件识别。最简单的方法是使用操作系统自带的录音机软件对这三方面进行转换和设置。
2、Streambox Ripper
将 RA 、RM 、CDA 、MP3 、WAV 转为 WAV 或 MP3 ,与此同时可设置采样频率及码率。此方式的独特之处在于,可使用均衡器对输出文件针对频段进行音量调整,这样一是可以减少杂音,二是可以改变声音效果。
3、WMA Workshop
WMA 是微软定义的音频文件格式,此格式的文件便于网络传输,同时又保持了较高的音质,在国内外的音乐站点上尤其流行,但是大多数非线编软件却不支持此类格式导入。 WMA Workshop 正可将 WMA 转为 MP3 或 WAV(PCM) 。
可在 Options 中对输出文件进行具体设置
4、WAVmaker
对 MIDI 文件的每个音轨进行重新采样、量化和编码后形成 wav 文件。
5、音频捕捉Audio Record Wizard
对于电话线、麦克风、线入、CD 、辅助(就是声卡)、单声道混音和立体声混音的音频输入,可以使用音频捕捉软件捕捉到从声卡经过的声音流,转为电脑文件。比如我们选择捕捉源为“线入”,可以把接到声卡 Line In 的磁带录音机或 CD 机中播放的声音捕捉下来,很轻松的将磁带声音转换为计算机文件。我们还可选择“立体声混音( Stereo Mixer )”,将电子琴或其他 MIDI 设备的声音录入为电脑文件。
音频捕捉的方式看似可以转换所有的声音文件,但其工作原理并非在源文件的基础上进行格式和编码的转换,而是对“播出”后的效果进行重新采样,因此这种“普适性”是以质量可能的损失为代价的。
(三)不同格式的图片转换
非线编软件图片导入通常要求图片格式为 BMP 、JPEG 、TGA ,除了格式要求之外,还要注意颜色表示的区别,有索引颜色、RGB 颜色、CMYK 颜色等。对于含有遮罩 的图片,图片格式设置为 TGA , 量化级数 32 位, 将遮罩部分 存储为 alpha 通道。这些都可使用 Photoshop 来实现 。
结尾
音频编码解码器 篇3
1 数字音频编码器音频编码原理
此音频编码器采用MPEG-2音频编码方式, 码流压缩使用MPEG AAC格式, 输入接口为数字非平衡音频输入接口, 单台编码器能够实现最多10路立体声音频编码, 编码器的输出通过ASI传输输出接口。
AAC即先进音频编码, 是把高分辨率波器组、预测技术、霍夫曼编码的编码效率和其他功能结合在一起, 可以用很低的数据率实现高质量音频信号的传输。MPEG ACC系统支持8k Hz到96k Hz取样频率, 中央卫星广播系统音频采样频率为48k Hz, 每声道最大的数据率为288kb/s。AAC编码器结构如图1所示。
2 数字音频编码器在实际系统中的应用
数字音频编码器运行在独立工作模式下, 或受控于数字业务管理器。中央卫星广播平台系统数字音频编码器采用的是独立工作模式。
音频编码器的配置管理通过编码器的内部HTTP服务器提供网络请求, 为平台、端口、业务、PSI以及警报管理提供完整配置。使用浏览器或互联网中任何计算机与编码器连接, 进行配置管理。
2.1 数字音频编码器独立于数字业务网管的配置
在网管服务器上打开NMX Domain Manager网管软件, 出现Domain Manager界面, 点击窗口左上绿色服务启动键, 使Local PC下显示所有服务状态由Stop变为Running, 每条服务器显示灯由红色变为绿色。同时TFTP Server daemon及Bootp server daemon界面同时打开。
打开Digital Service Manager软件, 在NMX-Digital Server Manger界面中间显示红色图标100LU, 双击该红色图标, 进入编码器网管配置界面。
选择“Create Physical Devices”下“Multi-channel Encoder”, 新建一个编码器图标。在“Create Object”对话框中设置编码器属性。
在“Create Object”对话框中, 设置编码器名称, IP地址与设置IP地址一致, MAC地址与其MAC地址设置一致, Hardware Model属性设置为“Divi Com Audio Encoder”;Desired Software Version属性设置为配置的所在地址。
断电重启编码器。在IE浏览器地址栏中输入编码器IP地址, 就可对编码器进行访问及节目配置。
编码器升级的目的是为了编码器可脱离网管控制, 远程配置输入输出, 实现独立单机运行。
在中央应急广播系统的网络里, 任意联通的终端, 在浏览器输入需要配置的数字音频编码器的IP, 即可对编码器进行配置。
通过编码器网页显示确认编码器配置状况。如果是曾经使用过编码器, 设备里保存原有节目配置的, 点击Setup Initial Configuration, 在Load Templates网页对话框中, Clear Config清除所有原有配置, 再进行新的配置。如果是全新的设备, 就直接选左侧的Audio Encoder (AIC) slot1, Audio Encoder (AIC) slot2, Audio Encoder (AIC) slot3, Audio Encoder (AIC) slot4, 添加新的节目。每个板卡对应两套节目, 建议一次新建一个节目进行设置, 防止ID冲突, 导致配置错误。
新节目流的配置信息如表1所示。节目PSI信息的设置如表2所示。
2.2 数字音频编码器正常工作状态
指示灯能够说明设备运行的状态, 掌握指示灯显示的信息, 就能准确地确认设备的运行状态。
前面板的指示灯信息如表3所示, 背板指示灯信息如表4所示。每个音频输入卡包含一个状态指示灯, 音频端口指示灯信息如表5所示。
3 数字音频编码器在实际系统中的维护
3.1 维护内容
(1) 对编码器的运行状态进行远程网络监控, 实现对设备的工作状态、运行参数和告警信息进行记录和查询。对编码器输出信号的质量进行远程监测监听。通过远程监控和监测监听, 可以第一时间发现设备故障, 并及时恢复信号输出质量。
(2) 检查和清洁过滤网的频率要适合于编码器的操作环境。每两个月检查和清洁过滤网一次, 来确保机箱有适当的气流通过。
(3) 每次巡视设备时, 对音频编码器的线缆接头、连线进行检查, 确认线缆接头及连线牢固可靠;对设备的电源线进行查看, 确认是否有电源松动和发热现象;倾听编码器运行的声音, 确认设备风扇运转正常, 确保设备散热良好。
(4) 每半年对数字音频编码器进行内部除尘;紧固内部线缆接头, 确保连线牢固;对编码器的配置进行确认及输出指标进行测试验证。
通过上述几点维护项目的实施, 可以确保数字编码器运行寿命, 并注意设备的运行环境温度和各项指标, 注意设备的告警, 及时查明原因。
3.2 典型故障及处理
(1) 数字音频编码器风扇故障
编码器在运行时出现异响, 不影响设备远程输入输出信号监测正常, 音频信号输出监听正常。为了编码
器更好地工作及设备散热, 解决办法为更换设备风扇。特别注意的是此数字音频编码器的风扇供电线需要焊接。
(2) 数字音频编码器通信板卡故障
编码器音频信号输出监听正常, 但是远程监测总显示与设备失去连接, 本地查看设备网口显示灯状态异常。解决办法为替换编码器通信板卡。
(3) 数字音频编码器输出板卡故障
便携式设备用超低功耗编码解码器 篇4
其中K为与电池容量、电池电压和电源变换器效率有关的因数,A为系统功耗,B为音频CODEC功耗。为了保持在小和薄形状因数前题下提高电池寿命,要求功率和音频信号通路中的所有元器件必须降低功耗。
为此欧胜微电子 (W o l f s o n Microelectronics) 推出新一代超低功耗音频CODEC WM8905, 使音频功能便携装置电池寿命大大降低,使音频回放时间延长高达40个小时。
W M 8 9 0 3超低功耗C O D E C
WM8903功能框图示于图1,其特点如下:
·SmartDACTM技术—这是一种独特的低功率DAC开关架构,使DAC到耳机的功耗只有4.4毫瓦,可通过编程调节“性能与输出功率”曲线的能力使系统设计者能优化每一种使用情况 (处于连接或移动等不同状态) 。
·W类放大器技术—采用了一种自适应双驱动电荷泵和直流伺服芯片架构。W类耳机放大器能够智能地追踪实际的音乐信号级别,并使用一种自适应双驱动器的电荷泵来优化功耗。这种架构不仅优化了功耗,也无需大的直流阻塞耳机电容器,极大地节省了PCB空间和音频子系统的BOM。通过改进的低音响应,使音频性能得以提升。
·Silent SwitchTM技术—该技术通过集成复杂的钳位和音序器电路使“pops&clik” (喇叭上电噼叭声) 最小。
·动态范围控制器—采用一个“快速释放”的脉冲噪音过滤器,在响亮的脉冲噪音存在的情况下,可提高录制声音的解析度,优化了录制的声音质量。
·控制定序器—延迟时间可编程的定序器可启动/关断WM8903的多个单元, 可显著地减少“噼叭声”, 并且简化了软件驱动器开发时间。
·数字麦克风接口—此接口能提供较高的SNR (信噪比) 和改善灵敏度匹配。
应用
WM8903是专为显著延长音频功能便携设备的回放时间而设计,主要应用于便携式音频应用,包括PMP/MP3播放器、多媒体手机、手持游戏系统、数字视频相机、录音机等。图2示出WM8903在便携式媒体播放器中的应用。
参考文献
音频编码解码器 篇5
在多媒体应用中,AC3音频标准是被广泛应用到的国际标准,AC3技术起源于为高清晰度电视(HDTV)提供高质量声音,它是一种高质量,低复杂度的多声道声音编码压缩技术,支持5个全带宽声道和一个部分带宽声道,即完全独立的左、右、中置、左环绕、右环绕和超重低音声道。它是一种高效灵活的数字压缩标准,在家庭影院、娱乐媒体设备等领域得到了广泛应用[1]。
2 解码流程
AC3解码从输入的数码流同步开始,经过差错校验,指数解码,比特指派,解尾数,去耦合,逆变换,加窗重叠到最后PCM码流输出等几个步骤。
首先,每个给定声道的指数从输入帧中解出来,接着,比特指派操作开始进行,它利用指数和比特指派参数计算出每个打包的尾数所对应的字长,尾数再从输入帧中被解包出来,并利用指数进行规则化。最后,进行部分的反变换,处理结果经向下混合后存入合适的向下混合缓冲区,等待接着进行输出处理。一旦输入处理结束,解码器可以开始进行输出处理。对于每个输出声道,向下混合缓冲区和它相应的128个字的半块延迟缓冲区被加窗及合成产生256个字的PCM输出样本[2]。
3 CW5521芯片结构简介
CW5521是ChipWrights公司CW5xxx系列中的一款高性能数字信号处理器,该芯片采用了单指令多数据 (SIMD) 架构。其内部结构如图1所示[3]:
CW5521只有一个串行处理单元,类似于传统的精简指令集处理器。它负责访问控制寄存器、管理程序计数器等。其主要作用是控制程序计数器以及处理应用程序的执行,也可以为并行处理器提供地址、宽度、格式上的信息。CW5521的主内存(PMEM)是一个芯片内嵌入的256KB的SRAM, 它可以直接为处理器提供应用数据、查询表格、代码变量等。被分成8个8K×32的交叉访问的块,也就是说,每一个指令周期内可以读/写8个32位的数据,从而很大程度上降低了内存瓶颈的效应[4]。
4 基于CW5521的AC3解码优化
4.1 DSP端算法实现
这里需将PC平台上跑通的程序移植到DSP端使其初步运行。DSP平台与PC平台最显著的区别体现在读写文件的方式上。在PC上可以调用输入输出库中与文件操作的有关函数,但在DSP端却不能。DSP是通过DMA传送,把存在SDRAM上的待处理文件传入DSP的Prime Memory (PMEM) 中,再对其进行处理。这里要做的工作主要有:定义输入数据缓存的数据结构,调用DMA的相关操作函数,修改文件读取方式等。
4.2 并行处理优化
设计的理念就是合理使用片主内存(PMEM), 并使其运行能充分利用16个并行处理单元。对于函数和数据映射区域进行调整,把经常用的数据定义为全局变量,这样可以避免动态存储处理栈数据的时耗,并将其存储在PMEM中。PMEM的数据转换速度是片外RAM的4倍,因此可以大大减少数据调用造成的串行延时。对函数进行并行化处理,针对并行化效果差的函数,尤其是多重循环体,要进行循环拆解,将多重循环拆解为单重循环。减少存储区数据的读取和存储,尤其是片外RAM数据的调用。将频繁调用的函数,特别是算术基本运算的小函数定义成宏或者内联函数,以减少函数调用所耗费的时间。尽量使用位运算来代替乘除法和取模运算,使得代码更加简练有效。
下面就解码算法子带合成滤波模块中运算量最大的修正离散余弦反变换(IMDCT)给出改进的适合于DSP的快速实现算法。
IMDCT的定义如下:
根据Profiler的可视化报告可以知道哪些函数运算开销较大,然后可以定位到相应C代码处对运算量大的地方,主要是循环过程,用类C的汇编语言来改写这部分的实现。CAS (C-like ASsembly)便是针对CWvX DSP来实现并行优化所使用的汇编语言。
4.3 通用AC3接口设计及测试
为方便其它工程及程序调用,这里将原解码过程进行差分,封装到AC3DecodeOpen () ,AC3Decode(), AC3Decodeclose () 这几个函数中。首先,AC3DecodeOpen () ,这就是之前所说的进行一系列初始化和内存分配的过程,让其返回指针state。然后是解码AC3Decode(),前面的部分与之前的区别在后半段。之前,在解码六个声音块时,每解码完一块就进行PCM输出。现在在此函数中,开辟了一个输出缓冲区,对于每块的输出, 顺序的放在缓冲区中,然后一起写到设备文件中,返回值是要解码的一帧的长度。最后是AC3Decodeclose () ,这个函数最为简单,就是一系列和open对应的free的语句,来释放内存。
对与接口的调用,通用的方法如下:在解码函数中,当读入缓冲区中的字节数大于某一阈值后开始解码。这里也更改了解码函数中的参数,增加了一个标志缓冲区内剩余字节数的指针类型的形参,方便在死循环中作为输入使用。然后在解码函数AC3Decode () 的结尾,增加语句,使每解完一次码,就将指针定位到下次的起始位置,然后更改缓冲区内剩余字节数。
然后主函数中,还是在死循环外部打开文件,首先读入一次, 然后定义三个标志指针(例如inputPtr, Inputbuffer, inputfill),并将它们都指向最初读入缓冲区。其中这三个指针的作用是:inputPtr标志每次解码的输入地址,这个值在循环中是不断改变的;Inputbuffer标志在每解码之后将剩余字节拷贝到的地址(left表示剩余字节), 即:memcpy (inputbuffer, inputPtr, left) ;inputfill是用来标记剩余字节拷贝完成之后结尾位置,即:inputfill=inputbuffer+left。然后在将新读入的字节放在以这个位置为起点的内存里。如此不断循环解码。
结论
以上介绍了AC3数字音频解码系统,可以看出AC3解码可以通过一系列的循环嵌套来实现。在CW5521开发板上进行测试,可以发现此解码器可以占用较少的CPU, 优化后的解码时间约占优化前的解码时间的八分之一,达到了实时性的要求。目前,正是由于AC3可以将单声道,立体声和多声道节目串接在一起无缝接输出,并且一种码流可以适应从单声道低端用户到多声道家庭影院的不同需求,成为了世界上绝大多数国家高清或标清数字电视的音频制式。所以,了解这种音频格式的解码系统不断地优化发展可以方便的将其应用到更多方面。
参考文献
[1]景士俊.DOLBYAC_3解码器的C语言实现和验证.成都:电子科技大学.2002
[2]汪斌.音频编解码算法及软硬件协同设计研究.杭州:浙江大学.2004
[3]谢洪彪.刘明辉.基于CW5521的H.264视频解码器的实现与优化.科学技术与工程。2008年1期。
DRA分层音频编码技术 篇6
关键词:DRA,分层编码,数字音频广播
在分层音频编码上, 国外已经研究了几种精细分层的有损数字音频编码方法及无损音频编码, 主要包括:1) ISO/IEC 14496-3 MPEG-4 BSAC (Bit Sliced Arithmetic Coding) 比特片算术编码[1], 在这种编码算法中, 基于对MDCT (修正离散余弦变换) 变换后的变换域系数 (频谱系数) 被量化为整数后, 从低频到高频分成多个组, 每个组谱系数从高位到低位形成比特片方式进行算术编码, 因此可以实现非常精细的分层 (或者伸缩) 编码。2) 在MPEG-4第三部分和MPEG-2第七部分中都提供了可伸缩采样率编码算法AAC-SSR (Advanced Audio CodingScalable Sampling Rate) , 首先是由Sony提出的, 编码架构也类似于其独有的ARTAC (Adaptive Transform Acoustic Coding) 编码。其基本算法是:首先将输入的数字音频信号通过4带的多相正交滤波器组 (Polyphase Quadrature Filter, PQF) 分割成4个频带, 然后这4个频带分别进行1个256点MDCT (512样点窗长) 或8个32点 (64样点窗长) MDCT。这种技术的好处在于每个频带内可以独立选择长块或短块MDCT, 因此对高频可使用短块编码增强时间分辨率;而对低频使用长块编码获得高频率分辨率。3) MPEG-4 SLS (Scalable Lossless Coding) 有两种方式。一种是有损音频编码层 (如AAC) 和无损误差增强层, 这样就保证了与原来有损编码的后向兼容。另外一种是没有有损编码层, 仅仅无损增强层。在这两种方式中, 无损增强层能够实现精细分层, 提供低质量、高质量以及无损质量。
第一种分层编码算法为了实现精细分层, 需要考虑限制频谱分区长度等, 而导致需要较多额外开销降低了编码效率;第二种分层编码算法由于应用了4个PQF, 造成带间存在混迭, 因此相邻部分的变换域系数编码效率会下降;而第三种分层也是一种极其精细的分层编码技术, 同样存在需要较多额外开销的问题。
中国数字音频 (调频) 广播 (CDR) 系统已经分别颁布了信道标准[2]和复用标准, 其中在信道传输技术规范中, 调制技术支持粗分层调制, 且信道编码支持不等错保护技术, 因此数字音频信源编码技术最好能够适配信道传输技术, 而上述的几种分层编码技术不太合适, 同时已颁布的我国多声道数字音频编码技术规范DRA[3]也不支持分层方式。为此本文提出了一种新的基于DRA分层编码方法, 简称为DRA+L, 在使用很小额外开销的条件下提供2层的帧结构, 同时保证了与原DRA兼容。
1 DRA分层编码结构
图1给出了DRA基本帧结构示意图[3], 在帧头信息中有1 bit指明是否在帧尾存在辅助数据部分, 其目的就是为以后应用需求而进行功能及性能增强所保留的扩展单元, 这样也确保了增强后的编码算法仍与原DRA兼容。另外需要注意的是, DRA帧头信息中的帧长度信息的计算并不包含辅助数据部分, 因此辅助数据部分需要独立定义自身的长度, 便于解码器拆分辅助数据单元, 并且易于快速同步。
1.1 辅助数据一般结构
辅助数据结构示意图如图2所示, 其中DRA帧头信息中的帧长信息是以32比特 (4 byte) 为单位。辅助数据中每个数据块下面小括号内的数字表示其占用的长度, 单位为bit。X1, Xn分别为第1个和第n个辅助类型的数据长度, 单位为byte。在辅助数据的开始是辅助数据的长度指示, 当辅助数据比较短时 (小于256 byte) , 直接使用8 bit基本长度信息描述;否则辅助数据长度通过16 bit扩展长度与前面的8 bit基本长度共同描述, 即在256基础上累加16 bit无符号二进制数所表示的数值作为整个辅助数据长度。
每种辅助数据的类型由三部分组成:第一部分是本类型附属数据的长度, 用12 bit描述 (以byte为单位) ;第二部分为本类型附属数据的具体类型, 以4 bit表示, 最后一部分是本类型辅助数据的有效载荷。
1.2 分层编码的数据结构
DRA分层编码就是在国标DRA算法的基础上通过分层编码辅助数据的增强扩展而实现的。分层编码可根据编码的声道数进一步分为单声道/立体声的分层和5.1环绕声分层, 其码流结构分别如图3和图4所示的两层结构 (即基本层和增强层) 。
1) 单声道/立体声分层帧结构
在单声道/立体声分层编码模式时, 分层编码的基本层就是在它所分配的码率限制下通过国标DRA编码单声道或立体声;分层编码的增强层首先是辅助数据的总长度, 辅助数据内部仅包含一种辅助数据类型, 即分层编码类型。分层编码类型包括:12 bit分层编码类型长度、4 bit分层编码类型指示和分层编码扩展的有效载荷。在有效载荷的开始, 通2 bit声道模式“00”用于表示当前DRA分层编码是是单声道/立体声分层编码;有效载荷的其他部分则为单声道/立体声残差的DRA编码信息。
2) 环绕声分层编码帧结构
在5.1环绕声分层编码模式时, 分层编码的基本层就是前置左右声道对的DRA编码;增强层的结构与单声道/立体声分层的增强层相似, 但有效载荷的开始2 bit声道模式置为“10”, 并且有效载荷的其他部分为其余声道 (中央声道、超重低音及左右环绕声道对) 的DRA编码信息。
3) 低码率DRA分层编码帧结构
当在数字音频 (调频) 广播等应用中, 有时需要在一个模拟调频节目内传输多路数字立体声信号或环绕声信号, 因此要求DRA可提供更高编码效率而降低码率, 这时需要在DRA算法的基础上增加一些增强编码工具, 例如带宽扩展及参数立体声等, 实现低码率DRA编码算法。参照DRA分层编码结构图3和图4, 可以通过简单修改给出低码率DRA分层编码结构。
(1) 单声道/立体声低码率DRA分层
单声道低码率DRA分层:基本层包括单声道低频部分的DRA编码、辅助信息长度信息、带宽扩展类型辅助数据 (包括带宽扩展辅助数据的长度、类型及数据) ;增强层包括图3中辅助信息长度之后的所有部分 (其中残差DRA编码也是编码单声道的低频部分的残差信号) 。
立体声低码率DRA分层:当不采用参数立体声时, 基本层包括立体声对低频部分的DRA编码、辅助信息长度信息、带宽扩展类型辅助数据;增强层包括图3中辅助信息长度之后的所有部分。当采用参数立体声时, 基本层包括立体声对下混为单声道后的单声道低频部分DRA编码、辅助信息长度信息、带宽扩展类型辅助数据 (在数据内部包含参数立体声编码数据) ;增强层包括图3中辅助信息长度之后的所有部分。
(2) 环绕声低码率DRA分层
基本层包括左右立体声对低码率DRA编码信息 (包括左右立体声对低频部分的DRA编码或者下混后的单声道低频部分的DRA编码、辅助信息长度和带宽扩展类型辅助数据) ;增强层为图4辅助信息长度之后的所有部分 (其中中央声道C采用低码率DRA单声道编码方法, 左右环绕声道对采用低码率DRA声道对编码方法) 。
2 分层编码算法
2.1 单声道和立体声分层编码算法
图5给出了单声道/立体声分层编码的原理框图, 其中基本层为单声道或立体声的DRA编码 (图中虚线框内的两个模块带宽扩展 (BWE) 编码和参数立体声 (PS) 编码是低码率DRA编码的增强单元) , 其中DRA完全符合国家标准规范的压缩算法;增强层则是对残差信号的编码, 用于进一步改善解码信号的精度。下面主要介绍3个部分:DRA残差信号的计算、DRA残差信号量化和DRA残差信号的码书编码。
1) DRA残差信号的计算
GB/T 22726—2008国标中实现DRA的标准算法简单示意图如图6所示 (为了清晰, 特将解码端也做了简单描述, 其中解码端模块见图6的虚线框图) 。时域数据x[n]经过MDCT变换到频域得到谱系数X[k], 将频域系数分成多个子带, 对其中属于子带b的谱系数除以一个量化步长Δb, 然后取整 (nint) 得到量化后的谱系数X̂[k], 其中每个量化步长Δb和谱系数X̂[k]通过各种方式传输到解码端。在解码端对量化后谱系数X̂[k]乘以量化步长Δb, 得到逆量化的谱系数X͂[k], 对其做IMDCT得到解码后的时域系数x͂[n]。
DRA分层算法简单示意图如图7所示的中间模块。由图7可以看到, 基本层和图6的编码端完全一致, 也即完全兼容。增强层包括:取整得到的量化后的谱系数X̂[k]在增强层乘以量化步长Δb恢复出量化后的谱系数X͂[k], 然后用原始谱系数X[k]减去量化后的谱系数X͂[k], 得到残差谱系数E[k]。将残差谱系数E[k]分成多个子带, 对其中属于子带e的谱系数除以一个残差谱系数量化步长Δe, 取整 (nint) 得到量化后的残差谱系数Ê[k]。增强层需要传输残差谱系数量化步长Δe和量化后的残差谱系数Ê[k]。在解码端对量化后谱系数X̂[k]乘以量化步长Δb, 得到逆量化的谱系数X͂[k];对量化后残差谱系数Ê[k]乘以残差谱系数量化步长Δe, 得到逆量化的残差谱系数E͂[k]。最后将基本层得到的逆量化的谱系数X͂[k]和增强层得到的逆量化的残差谱系数E͂[k]相加, 并对和做IMDCT得到解码后的时域系数x͂[n]。
2) 残差信号的量化
由于残差信号的概率分布与原始音频信号的概率分布不同, 特别是0附近的小信号概率明显增大, 因此残差信号的量化算法是对DRA量化算法的改进, 主要是重新定义了量化码书1和2的都为4维Huffman编码 (其他码书相同) , 分别对应量化频谱系数的绝对值在1和2的情况, 并且重新训练并编制了新的Huffman码书, 提高了编码效率。
残差信号的量化步长采用差分编码Huffman编码方式表示 (第一个量化步长用7 bit绝对值表示) , 而DRA标准是量化步长绝对值Huffman编码方式。
3) 残差信号的码书选择及应用范围
不同于DRA编码规范中固定用5 bit表示码书段个数, 残差信号的码数段个数对平稳帧仍用5 bit, 但对瞬态帧仅用4 bit。
码书的应用范围划分进一步简化, 并且从Huffman编码改为游程编码。如果是平稳帧时, 每16个谱线为1个编码子带, 即每16个谱线用1个Huffman码书。所以1 024个谱线有64个编码子带。码书的应用范围先用5 bit表示最多32个编码子带, 如果应用范围大于32个编码子带, 则再用5 bit, 这时最多可以表示64个编码子带;如果是瞬态帧, 每8×n Block Num (n Block Num取值可参考文献[3]) 个谱线为一个编码子带, 即每8×n Block Num个谱线用一个Huffman码书。所以128×n Block Num个谱线有16个编码子带。码书的应用范围先用3 bit表示最多8个编码子带, 如果应用范围大于8个编码子带, 则再用3 bit, 这时最多可以表示16个编码子带。
对每个码书段的码书索引量化方式由Huffman编码改为更简单的哥伦布编码。
2.2 环绕声分层编码算法
与立体声分层编码算法相比, 图8所示的DRA环绕声分层编码算法比较简单。基本层是对左 (L) 和右 (R) 声道对进行DRA编码;增强层是对中央声道 (C) 进行DRA编码, 对超重低音 (LFE) 声道进行DRA编码, 以及对左环绕 (Ls) 和右环绕 (Rs) 声道对进行DRA编码。声道在编码时可能开启和差立体声模块, 一般不使用强度立体声工具。
当低码率DRA环绕声分层编码时, 其中的DRA编码替换为低码率DRA编码即可, 其中声道对编码可能开启参数立体声编码模块, 提高低码率 (例如低于128 kbit/s环绕声情况) 下的编码效率和主观声音质量。
3 DRA分层编码的试验及分析
DRA环绕声分层编码是在DRA环绕声分层编码算法的基础上通过简单调整各声道编码数据实现分层的, 仅仅引入了很少的额外辅助数据, 占整帧数据的比例很小, 因此环绕声分层编码的总声音质量和DRA环绕声相当, 环绕声分层编码基本层的主观声音质量与相应码率的DRA立体声质量一样;而DRA单声道/立体声分层编码采用残差方式, 与原DRA编码差别较大, 下面将重点分析这种情况下的声音质量比较。而低码率DRA分层编码的性能可对照DRA分层编码结果, 本文不再累述。
3.1 DRA分层编码的额外开销分析
由于单声道/立体声分层编码主要通过残差方式实现, 因此这里主要分层环绕声分层编码的额外开销问题, 表1给出了48 k Hz采样率下不同典型码率时环绕声分层编码额外开销情况。由于DRA帧长是32比特的倍数, 以及基本层和增强层具有同样的长度, 同时应用中实际比特率一般应低于典型设置的比特率, 因此表1中给出了实际比特率。
3.2 DRA分层编码性能客观测试结果
考虑到DRA分层编码属于感觉音频编码技术, 因此基于心理声学模型的客观测试软件能够较准确地衡量这种编码算法。主要测试条件及内容如下:
1) 测试软件:本文采用基于ITU-R BS.1387标准[4]的商用客观测试软件CRC-SEAQ。
2) 测试音频片段:12个48 k Hz和16 bit量化的MPEG立体声测试序列。
3) 码率:DRA分层@64 kbit/s基本层+64 kbit/s增强层和DRA分层@64 kbit/s基本层。
4) 输出:客观差别分ODG (数值越接近0越好) 。
测试结果如图9所示, 其中前12列分别对应12个不同的MPEG测试序列, 最后一列为12个测试序列得分的平均值。上面的折线表示DRA分层编码ODG分数, 下面的折线为DRA分层编码中仅仅解码基本层所获得的ODG分数。可以看到仅解码DRA分层编码的基本层可提供基本的收听质量, 通过增强层解码可提高约1分的平均分, 能够进一步明显提高总的主观声音质量。
4 DRA分层编码的应用示例
在数字音频 (调频) 广播应用中, DRA分层编码应用如图10所示, 通过DRA粗分层音频编码算法将输入的数字音频信号编码分为基本层和增强层两组数据, 通过非等错信道编码可对基本层给予强误码保护, 对增强层给予弱保护;或者通过分层调制技术使得基本层和增强层有不同的抗干扰能力;最后通过发射机播出。由于 (调频) 广播信道一般为无线信道, 除了随着距离增加信号自然衰减之外, 还受到各种衰落、遮挡、电磁干扰等, 在接收端通常无法完全正确解调被干扰的信号, 可用功信道解码降低误码率。如图中用户1的情况, 接收环境比较差, 只能正确解码基本层, 如果广播的是环绕声节目, 则用户1可收听高质量的立体声部分;如果广播的是立体声节目, 用户1将接收到基本质量的立体声信号。用户2有良好的接收环境, 可完全解码基本层和增强层, 这样用户2可收听高质量环绕声广播或者高质量立体声广播。
5 结论
本文提出的DRA分层编码是基于DRA技术而开发的一种新的编码算法, 主要特点是DRA分层编码提供了一种新的粗分层码流结构, 并且由于DRA环绕声分层编码仅仅是通过引入小于1%的额外开销控制多声道编码数据重新组织而实现了分层, 保证了环绕声分层编码质量基本无下降;DRA单声道/立体声分层采用残差再编码的技术实现的分层, 客观测试表明DRA单声道/立体声分层编码可在基本层的ODG分数上通过增强层进一步明显改善大约1分。由于DRA分层编码是通过DRA编码算法中辅助数据的扩展来实现, 因此DRA分层编码与DRA编码兼容, DRA编码可完全解析基本层数据。DRA分层编码特别适用于数字音频广播, 可与非等错信道编码和分层调制技术完美结合, 提供最佳的收听效果。
参考文献
[1]ISO/IEC 14496-3, Information technology-coding of audio-visual objects-part 3:audio[S].2004.
[2]GY/T 268.1, 调频频段数字音频广播第1部分:数字广播信道帧结构、信道编码和调制[S].2013.
[3]GB/T 22726—2008, 多声道数字音频编解码技术规范[S].2008.
音频编码解码器 篇7
音频编解码器是现代媒体系统的基础核心之一。没有音频编解码器,就不会有现在的数字广播、流媒体服务及音乐发行。首个同时也仍是最主流的MPEG音频编解码器是于1998年面市的mp3。此后,Fraunhofer IIS和其他ISO-MPEG成员参与者开发并制定了多个音频编解码器。每个MPEG音频编解码器已经或将会改变我们消费媒体的方式。
MPEG L3:mp3
mp3彻底改变了音乐产业,也改变了消费者购买和享受音乐的方式。mp3目前仍然是音乐发行的主要格式,因为mp3文件可以在任何设备上随时随地播放。mp3技术于上世纪80年代末开始开发,1995年,随着以“.mp3”为后缀的文件的诞生,该技术达到了顶峰。同年,Fraunhofer IIS推出了第一个mp3播放器的硬件原型。该文件后缀mp3很快成为“MPEG Layer 3”标准名称的替称,但是直到三年后,即1998年,第一款mp3播放器才投放市场。
mp3是一种感知型音频编解码器,这类编解码器基于人类听觉系统的感知模型。这些模型描述了人耳能够感知以及无法感知的音频信号元素,无论听众的耳朵是否经受过训练。通过分析音频信号,mp3和其他感知型音频编解码器确认了以上事实,即音质各指标可按人耳的感知优先排序,并在最终音频文件中精细的表现出来。因此,如果比特率(即至少192 kb/s)选择得当,听众则无法辨别mp3文件与源文件之间的差别。
不仅mp3基于感知模型,目前大部分的MPEG系列的音频编解码器也能够明智的利用人类听觉系统,来降低数据速率和文件大小。AAC系列的音频编解码器也不例外。
AAC系列
AAC-LC
在市场大规模采用mp3之前,MPEG就已开发另一款音频编解码器。目的是在显著降低数据速率的同时实现与mp3同样高品质的音频质量。自此,开启了研发序幕,从1994年的AAC,至2012年的扩展型HE-AAC。整个编解码器系列序幕。
1994年,根据MPEG-2格式制定了首款新型AAC编解码器,命名为高级音频编码(Advanced Audio Coding,AAC)。根据m p 3和其他编解码器专利的开发经验,AT&T、Dolby、Fraunhofer IIS以及Sony等主要参与者从头开始设计一款最先进的新型音频编解码器。通过增加感知噪声建模(Perceptual Noise Shaping,PNS)、频带复制(Spectral Band Replication,SBR),以及参数立体声编码(Parametric Stereo,PS)等工具,将MPEG-2 AAC编解码器扩展至MPEG-4标准。
基本的MPEG-4 AAC配置被称为AAC-LC(低复杂性)的配置。它能提供“水晶般”的音频质量。在音频编码域中,“水晶般”音频的编码信号虽然在数学上与源文件有差异,但即便是拥有“金耳朵”的听力专家也无法辨别其与源文件的区别。因此,AAC-LC可以满足广播公司最高的音频质量要求。立体声AAC-LC比特率通常为128-192 kb/s,5.1多声道AAC-LC比特率为320 kb/s,两种AAC均以立声道进行编码。AAC-LC是目前最灵活的音频编解码器之一,采样率从8 kHz到192 kHz,每声道的比特率高达256 kb/s,并支持48声道。该配置最著名的应用就是Apple iTunes,并已用于日本ISDB数字电视标准。
HE-AAC和HE-AACv2
MPEG-4“高效配置(High Efficiency Profile,HE-AAC)”结合了MPEG-4 AAC-LC和参量频谱复制(Spectral Band Replication,SBR)工具,从而可以进一步降低总比特率,同时保持出色的音频质量。当立体声信号的比特率低于128 kb/s时,HE-AAC与同音频质量的AAC-LC相比,比特率降低了30%。对于HE-AAC,低音频频谱使用AAC-LC进行编码,高频谱通过SBR工具编码。频谱复制是一种参数方法,可使用该频谱的高低重新创建该信号的整个音频频谱。为了进一步降低比特率,AAC-LC编码使用总信号50%的采样进行低频率编码。HE-AAC立体声所用的典型数据速率为48~64kb/s,HE-AAC5.1多声道的典型数据速率为160 kb/s。同AAC-LC一样,HE-AAC支持8至192kHz的采样率、高达48个声道以及音频特定的元数据。
“高效AACv2配置(H E-AACv2)”在HE-AAC基础上添加了参数声音(Parametric Sound,PS)工具。HE-AACv2应用参数进行立体声信号编码,并进一步降低了比特率。参数声音编码器不是发送两个声道,而是从立体声信号中提取参数,在解码器侧重建立体声信号,然后生成一个HE-AAC编码的单声道混音。参数数据与频谱数据在AAC比特流的辅助数据字段中传输。解码器解码单声道信号,参数解码器重建立体声。对于立体声来说,采用参数数据传输HE-AAC编码的单声道信号比传输双声道、HE-AAC编码信号的效率更高。对于立体声信号来说,HE-AACv2典型比特率为24~32 kb/s。
目前,AAC和HE-AAC得到广泛应用。尤其是在互联网应用中,AAC和HE-AAC是mp3之外主要的音频编解码器。
HE-AACv2广泛地应用于最先进的电视广播系统。它是DVB工具箱的组成部分,还是最近推出了第二代地面电视指定的编解码器,应用在西班牙、英国、法国、爱尔兰、瑞典、奥地利、意大利、丹麦、芬兰和挪威等国家。在巴西和南美洲的大多数国家,HE-AAC是地面电视广播的唯一指定音频编解码器。此外,HE-AAC也是智能电视中的一个指定部件。例如,它是欧洲混合广播宽带电视(Hybrid Broadcast Broadband TV,HbbTV)数据服务的指定编解码器。因此,所有高清电视接收器设备,如目前欧洲和南美洲销售的电视机和机顶盒,都支持HE-AAC。所有主要广播编码器厂商很早之前便将HE-AAC部署到他们的设备中。当然,HE-AACv2支持所有相关的广播元数据。
HE-AAC是主流音频流媒体编解码器。所有主要的流媒体平台都支持HE-AAC,包括Flash、Silverlight、Windows Media Player、Winamp以及iTunes。Mac OS X和Windows等操作系统中都有HE-AAC,i OS、Android、Windows Phone、Symbian及BlackBerry等手机系统也是如此。
目前,苹果HLS、微软Smooth Streaming及Adobe Dynamic Streaming等成熟的http适配流媒体系统也基于AAC系列编解码器。
HE-AACv2还是消费电子领域内流媒体标准的一个重要部分,在Open IPTV Forum、ATIS、HbbTV和DLNA等电子领域发挥着不可或缺的作用。因此,几乎所有的数字电视、蓝光播放器、机顶盒和游戏机都支持该编解码器。HE-AACv2的广泛支持使它成为内容提供商选择的最佳编解码器。因此,Pandora、Aupeo、Hulu以及BBC iPlayer等大多数网络广播都基于HE-AACv2。
MPEG Surround
MPEG Surround技术可以看作是参数立体声原理从立体声到多声道的扩展。不同于参数立体声工具,MPEG Surround在比特率和质量方面更具扩展性。MPEG Surround可与AAC系列编解码器相结合,提供更高的编码效率。MPEG Surround的另一个优势是它能够反向兼容立体声信号。比特流始终包含AAC编码核心立体声信号和MPEGSurround这两个元素。立体声解码器可以提取核心立体声信号,并对其进行解码,而支持MPEG Surround的解码器可重建整个多声道音频信号。这样,就可以通过平价或传统的立体声接收器或多声道接收器在混合信号接收器中使用MPEG Surround,而无需同时播放立体声和多声道信号。
低延迟音频编解码器:AAC-LD、AAC-ELD和AAC-ELDv2
MPEG编解码器不仅广泛应用于广播、流媒体和音乐发行中,还用于通信应用。AAC系列通信编解码器在高品质会议和视频电话系统中尤其受欢迎,因为它们帮助服务提供商和运营商提供全高清的语音服务。全高清语音是通信系统能够实现的最高音频质量。传统的窄带电话仅能传输最高3.5 kHz的音频带宽,而全高清语音系统则能传输从14 kHz到人耳能听到的全部音频频谱。通过这种方法,全高清语音通话听起来像与同一房间的人交谈那样清晰。AAC系列的全高清语音编解码器包括低延迟AAC(Low Delay AAC,AAC-LD)、增强型低延迟AAC(Enhanced Low Delay AAC,AAC-ELD)以及增强型低延迟AACv2(AAC-ELDv2)。
AAC-LD是高品质视频会议的行业标准,可提供全带宽、低延迟的音频编码。它具有仅20毫秒的算法延迟,同时为所有类型的音频信号提供良好的压缩率和高声质。
AAC-ELD是AAC-LD的增强型版本,结合了MPEG-4 AAC-LD和频谱复制。AAC-ELD也是所有要求在24 kbps低数据速率下拥有全音频带宽的延迟敏感型应用的最佳选择。
AAC-LD和AAC-ELD目前已经用于专业及消费级视频会议应用,例如,苹果的FaceTime应用就是基于AAC-ELD。
AAC-ELDv2是卓越的AAC-ELD音频编解码器的最新扩展。AAC-ELDv2结合了AAC-ELD优化延迟参数多声道编码的优势这种方法只允许传输一个单声道及其他信息,而不是两个独立的声道。
扩展型HE-AAC
A AC系列的最新成员是扩展型HE-AAC。2012年年初,MPEG标准化刚刚完成。扩展型HE-AAC显著提高了音乐和语音的音频质量,尤其是在8 kbps等极低的比特率下,并与HE-AAC流兼容。新的编解码器将两个先前分离的通用音频编码和语音编码结合在一起,具备了现有的语音和音乐编解码器的优势。HE-AACv2音频编解码器添加了一套新的编码工具后,扩展型HE-AAC的性能大大超过了专用语音和通用音频编码方案,弥补了二者的不足,为所有信号类型提供一致的高品质音频。
结语
音频编码解码器 篇8
常用的数字音频编解码技术主要有杜比AC-3,DTS,AAC,MP3,DRA等。音频处理设备从实现方式上可分为两大类:一类是采用专用芯片进行音频信号的编解码处理,其特点是处理速度快,实时性强(实现成本低廉,适合大规模量产),但功能相对单一,已经越来越不适应用户的需求;另一类采用通用数字信号处理器DSP为核心建立系统,其优点是功能丰富,能迅速应用新算法、新标准或新协议,有利于产品的快速升级。其缺点是由于采用软件算法,运算速度相对较慢,特别是进行大运算量的音频编码处理,实时性不易保证。
本文研究了DRA(Dynamic Resolution Adaptation)解码算法,并在飞思卡尔公司的DSPB56367定点芯片上实现了DRA技术的实时解码过程。主观听音测试表明:设计的DRA音频解码器性能指标先进,可广泛应用于数字电视、数字音频广播、宽带多媒体及移动多媒体等领域。
1 DRA解码算法
DRA技术是一种同时支持立体声和多声道环绕声的数字音频编解码技术[1,2]。DRA技术的最大特点是用很低的解码复杂度实现了国际先进水平的压缩效率。在编解码过程中,信号通道保持24 bit的精度(除了因量化而有意舍弃的精度外);可支持的声道设置除了常见的立体声、5.1环绕声、6.1环绕声和7.1环绕声之外,还为未来的音频技术发展预留了空间;同时可支持8~192 kHz间的标准采样频率,包括44.1 kHz和48 kHz;它对编码比特率(码率)没有明确限制,在具体应用时可根据信道带宽和音质要求等因素来设定[1]。
DRA解码流程如图1所示。
其中多路解复用器用于从比特流解包出各个码字,由于Huffman码属前缀码,其解码和多路解复用是在同一个步骤中完成的;码书选择器用于从比特流中解码出用于解码量化指数用的各个Huffman码书及其应用范围(application range);量化指数解码器用于从比特流中解码出量化指数;量化单元个数重建器可根据码书应用范围重建各个瞬态段的量化单元的个数;逆量化器用于从码流中解码出所有量化单元的量化步长,并用它由量化指数重建子带样本;可选联合强度解码器利用联合强度比例因子由源声道的子带样本重建联合声道的子带样本;可选的和/差解码器用于从和/差声道的子带样本重建左右声道的子带样本;逆交叉重组器用于当帧中存在瞬态时,逆转编码器对量化指数的交叉重组;短/暂窗口函数序列用于根据瞬态的位置及MDCT的完美重建(perfect reconstruction)条件来重建该帧须用的短和暂窗口函数序列(对于瞬态帧);可变分辨力合成滤波器组可由子带样本重建PCM音频样本[3]。
2 DRA解码器的设计与实现
2.1 DRA解码器的硬件设计
飞思卡尔(Freescale)的数字信号处理(DSP)芯片DSPB56367主要定位在数字音频压缩/解压缩以及有关数字音频处理的其他领域,它是24位处理器,满足DRA算法设计24位精度的需要,该处理精度已超出人耳听觉极限;同时在1.8 V内核电压下执行速度为150 MI/s(兆指令/秒),在1.5 V内核电压下,执行速度为100 MI/s,也满足5.1声道算法的处理要求,其优良的性能使之成为DRA音频算法处理的理想器件[4]。
本文设计的多声道数字音频解码器,采用DSPB56367作为核心运行DRA解码算法。把来自数字音频接口S/PDIF(或AES/EBU)的DRA格式的低码率信号实时的解码成多声道数字音频信号,再由数字音频接口S/PDIF(或AES/EBU)输出给后端设备。同时还输出高指标的多声道模拟音频信号给后端监听设备。解码器的硬件组成如图2所示。
图2中MCU使用80C51,对DIR(Digital Interface Receiver)和DIT(Digital Interface Transmitter)进行配置,同时可复位DSP并进行相关数据控制操作。RAM采用IS61LV5128-10T;Flash采用SST39LE040;DSP的编程采用JTAG方式;MCU采用I2C数据传输方式与DSP通信。
DRA多声道数字音频解码器的数字接口性能指标如表1所示。
DRA多声道数字音频解码器的模拟输出接口性能指标如表2所示。
2.2 DRA解码器的软件设计
解码器的软件流程如图3所示。
首先设置系统统时钟(PLL),清空存储器,设置S/PDIF输入输出参数(I2S),等待DRA同步字,当1 024个字(word)的DRA码流装满DSP存储器后,交换乒乓存储器,解码1帧。解码流程见图1。
2.2.1 乒乓缓冲区
乒乓(ping-pong)缓冲技术是一种同时利用两个数据缓冲区的数据传输处理技术。使用乒乓缓冲是因为在传输和处理数据过程中单个缓冲区数据很容易被覆盖。乒乓缓冲方式的连续执行,总是保持一个缓冲区激活用于数据传输,而另一个缓冲区保持静态稳定的由DSP处理数据。
DSP内核存取内部RAM(IRAM)中的数据的速度比存取外部存储器中数据的速度快的多。但IRAM容量有限,不能满足整个输入帧的要求,因此同一时间在IRAM中只能处理一部分模块。处理乒乓集时,DMA将乒乓集从外部存储器传递至IRAM,这样DSP内核就能在完成当前工作后立即开始处理下面的数据。用乒乓缓冲区处理流程如图4所示。乒乓缓冲区在处理DRA解码算法的时候,每个缓冲区取1 024个字的数据进行处理,可同时处理8个声道的音频数据。
2.2.2 Huffman解码
Huffman编码的理论依据是变字长编码理论。可以证明,按照概率出现大小的顺序,对输出码字分配不同码字长度的变字长编码方法,其输出码字的平均码长短,信源熵值可以接近[2]。
DRA算法根据量化级数的多少而选用不同的Huffman码书,当一个码书中的量化级数很小时,多个量化指数被归集到一起以形成一个大的Huffman码书。当量化级的个数太大时(例如超过200),则采用递归索引。对此一个大的量化指数q被表示为
式中:M是模;m是商;r是余数。只有m和r需要被传送到解码器。它们中的一个或其两者都可以用Huffman码来编码。
DRA解码器中的Huffman数据处理流程如图5所示。
DRA解码过程中对每个声道的子带样本的量化指数进行Huffman编码,以提高压缩效率。表3[1]所示的两组码书被用来对子带样本的量化指数进行Huffman编码,分别对应平稳帧和瞬态帧;而每组码书又分别由9个Huffman码书组成。因此,对每一个特定的帧,共有9个Huffman码书可用于对这些量化指数进行Huffman编码。这些码书的选择由量化指数的局部统计特性而决定:
1)根据量化指数的局部统计特性对量化指数分段;
2)为每段选择最佳的码书。
因此,需把这些段的个数、长度(码书的应用范围)、以及所选择的码书指数传输给解码器。
假设由码书选择得到码书指数2对应的Huffman码表如表4所示。当接收缓冲区得到图6所示数据时进行Huffman解码。
首先取出第1位数据“0”放入解码寄存器B的最低位,此时查找码表4可解出对应量化指数-2进行DRA解码,如图7所示。
重复上述步骤读取第二位数“1”存入B,查找码表未能解出码字,左移1位继续取数,直到取出“110”解出量化指数为“1”,如图8所示。设置X可减少遍历运算时间。
DRA解码过程很大部分的运算量都体现在Huffman解码的过程中,5.1声道音频数据解码需要48 MI/s,平均每个声道8 MI/s。
2.2.3 修正离散余弦反变换(IMDCT)
变换编码是当前的音频编码标准普遍采用的压缩技术。变换编码属于频域编码,把信号从时域变到频域,再对其频谱系数进行量化编码。变换编码充分利用人耳在频域上的听觉特性(主要是掩蔽效应和临界频带)来实现对音频信号进行有效的压缩,是一种高效的编码技术。DRA编解码算法使用了修正离散余弦变换(MDCT)技术,有利于消除块边界噪声。
DRA编解码算法使用DCT来完成MDCT的快速算法。编码器端把每个声道的音频信号的PCM样本分解成子带信号,这是由应用MDCT产生的一组频域系数实现的。在解码端再从子带样本重建PCM音频样本,这由应用IMDCT实现[5]。针对输入音频信号的动态特征,M=1 024的长MDCT用于处理稳态帧,M=128的短MDCT则用于处理瞬态帧[6]。
DRA用的基函数为
式中,w(n)为长度为2M的窗口函数。
DRA用到的所有窗口函数都是基于如式(3)表示的正弦函数[7]
编码所得的MDCT系数X(k)经过量化和Huffman编码送入解码端,在解码端经过逆量化后得到X̂(k),再进行IMDCT变换。
IMDCT变换过程如图9所示,输入MDCT的系数,进行DCTIV的变换,加载MDCT窗函数,进行上差值补零运算,求和恢复原始信号x(n)。
3 DRA解码器的测试
伴随着信号处理技术的不断进步,经各音频压缩编解码系统处理后的节目信号,其音质的损伤难以用相关的技术参数进行客观评价,目前行之有效的方法是主观评价。因此通过对DRA解码后音质进行主观听音测试来了解其性能。
测试素材的评估选择根据国家标准GB/T10240-1998《电声产品声音质量主观评价用节目源编辑制作规范》,从EBU的标准素材库和商业DVD-AUDIO中选择确定,包括8个环绕声和8个立体声片段。
根据ITU-R BS.1584建议书《数字广播音频编码系统的用户要求》对发射领域基本音频质量规定:被测系统应按照ITU-R BS.1116建议书规定的双盲三刺激隐藏基准5级标度法进行测试(5分——不觉察;4分——可觉察,但不讨厌;3分——稍有讨厌;2分——讨厌;1分——非常讨厌),获得的平均分应高于4.0分。
测试结果表明,本文设计的解码硬件在128 kbit/s的立体声音质总体优于4.7分,达到了EBU定义的“不能识别损伤的”音频质量;在384 kbit/s的5.1环绕声音质总体优于4.5分;完全能满足数字广播系统的要求。
4 结束语
DRA多声道数字音频编解码技术的最大特点是用很低的解码复杂度实现了较高水平的压缩效率。由于DRA技术编解码过程的所有信号通道均有24 bit的精度容量,故在码率充足时能提供超出人耳听觉能力的音质。本文基于DSPB56367设计的DRA音频解码器在标准码率(每声道64 kbit/s)下损伤已较难识别,达到了EBU定义的“不能识别损伤的”音频质量要求,满足了实际应用的要求。
摘要:在研究DRA多声道数字音频解码算法的基础上,设计了基于飞思卡尔公司DSPB56367的DRA多声道数字音频解码器,给出了软硬件设计方案并讨论了其关键技术。音频主观听音测试结果表明:所设计的解码器在128 kbit/s的立体声音质总体优于4.7分,在384 kbit/s的5.1环绕声音质总体优于4.5分,达到了实际应用的需求。
关键词:DRA,多声道数字音频编解码,DSPB56367,乒乓缓冲
参考文献
[1]SJ/T11368-2006多声道数字音频编解码技术规范[S].2006.
[2]马文华,曾庆煜.DRA算法及其实时解码器设计[J].电视技术,2009,33(5):36-39.
[3]PRINCEN J P,BRADLEY A B.Analysis/synthesis filter bank designbased on time domain aliasing cancellation[J].IEEE Trans.ASSP,1986,34(5):1153-1161.
[4]Freescale.Freescale Semiconductor DataSheet(DSP56367)[EB/OL].[2008-04-20].http://www.freescale.com.
[5]PAINTER T,SPANIAS A.Perceptual coding of digital audio[J].Proceedings of the IEEE,2000,88(4):451-513.
[6]YOU Yuli.Audio decoing:US,US11/689371[P].2006-04-06.