随着嵌入式系统性能的提高,在 ARM 嵌 入式系统中实现对各种音乐格式的解码和播放已有可能。如何在嵌入式系统中利用有限的计算能力达到播放音乐的功能,是一个值得关注的问题。一般常见的情况 是,依赖嵌入式 ARM 或 DSP 的处理能力,通过定点 或浮点程序实现音频编解码过程。

实例说明

    音频编解码常用的实现方案有三 种。

    第一种就是采用专用的音频芯片对 语音信号进行采集和处理,音频编解码算法集成在硬件内部,如 MP3 编解码芯片、语音合成 分析芯片等。使用这种方案的优点就是处理速度块,设计周期短;缺点是局限性比较大,不灵活,难以进行系统升级。

    第二种方案就是利用 A/D 采集卡加上计算机组成硬件平台,音频编解码算法由计算机上的软件来实现。使用这种方案的优点是价格便 宜,开发灵活并且利于系统的升级;缺点是处理速度较慢,开发难度较大。

    第三种方案是使用高精度、高速度 的 A/D 采集芯片来完成语音信号的采集,使用可编程的数据处理能力强的芯片来实现语音信号处理的算法,然后 用 ARM 进行控制。采用这种方案的优点是系统升级能力强,可以兼容多种音频压缩格式甚至未来的音频压缩格 式,系统成本较低;缺点是开发难度较大,设计者需要移植音频的解码算法到相应的 ARM 芯 片中去。

    经过综合比较以上三种方案的优缺 点,本实例选用第三种设计方案来实现语音信号的音频编解码。

 

音频编解码原理

 

    对音频信号压缩编码的标准主要有 ITU/CCITT 的 G 系列: G.711 、 G.721 、 G.722 、 G.723 、G.728 、 G.729 ; MPEG 系列的: MPEG-l , MPEG-2 , MPEG-4 , MPEG-7 中的音频编码和DOLBY( 杜比 ) 实验室的 AC 系列: AC-1 , AC-2 , AC-3 等。它主要应用领域包括:

(1) 消费电子类数字音响设备。如 CD 、 MP3 播放器及 MD(Mini Disc) 唱 机等。

(2) 多媒体应用。主要是应用在 VCD 、 DVD 、多媒体计算机和因特网上。

(3) 广播节目制作系统。在声音节目制作系统中,录音、声音的处理加工、记录传输、非线性编辑等环节都采用 了数字音频技术。

(4) 广播电视数字化。在数字视频广播 (DVB) 、数字音频广播 (DAB) 和中短波数字调幅广播系统中都采用 了数字音频技术。

音频编解码框图

    将模拟的、连续的声音波形数字化 ( 离 散化 ) ,可以得到数字音频。数字音频是把模拟的声音信号通过采样、量化和编码过程转变成数字信号,然后再 进行记录、传输及其他加工处理;重放时再将这些记录的数字音频信号还原为模拟信号,获得连续的声音。

    采用数字音频技术可以避免模拟信号容易受噪声和干扰的影响,可以扩大音频的动态范围,可以利用计算机 进行数据处理,可以不失真地远距离传输,可以与图像、视频等其他媒体信息进行多路复用,以实现多媒体化和网络化。


    图 l 给出了音频编解码的一般模型。每个子带信号都在经过定标处 理后被重新进行量化,量化编码过程引入的量化噪声不能超过已确定的对应子带的掩蔽门限。因此量化噪声频谱与信号频谱进行了动态自适应。“比例因子”和各子 带所使用量化器的相关信息与编码后的子带样值一同进行传输,而解码器可以在不了解编码器如何确定编码所需信息的情况下对码流进行解码。这降低了解码器的复 杂度,并为编码器的选择和解码器开发提供了很大的灵活性。




Android framework 音频解码 安卓音频解码软件_采样频率



图1


    这里主要涉及的技术有: A/D 和 D/A 转换、压缩编码技 术、数字信号处理技术、信道编码和调制技术。


音频编码过程

    音频信号数字化


      信号的数字化就是将连续的模拟信号转换成离散的数字信号, 一般需要完成采样、量化和编码三个步骤,如图 2 所示。采样是指用每隔一定时间间隔的信号样本值序列来代替原来在时间上连续的信号。量化是用有限个幅度近似表示原来在时间上连续变化的幅度值,把模拟信号的连续幅度变为有限数量、有一定时间间隔的离散值。编码则是按照一定的规律,把量化后的离散值用二进制数码表示。上述数字化的过程又称为脉冲编码调制(Pulse Code Modulation) ,通常由 A/D 转换器来实现。


Android framework 音频解码 安卓音频解码软件_码率_02



图2


    数字音频信号经过处理、记录或传输后,当需要重现声音时,还必须还原为连续变化的模拟信号。将数字信号转换成模拟信号为 D/A 变换。


    数字音频的质量取决于采样频率和量化位数。采样频率越高,量化位数越多,数字化后的音频质量越高。

    音频采样

    采样就是从一个时间上连续变化的 模拟信号取出若干个有代表性的样本值,来代表这个连续变化的模拟信号。一个在时间和幅值上都连续的模拟音频信号的函数表为 x(t), 采样的过程就是在时间上将函数 x(t) 离 散化的过程。一般的采样是按均匀的时间间隔进行的。设这一时间间隔为 T ,则取样后的信号 为 x(nT) , n 为自然数。

 根据奈奎斯特采样定理:要从采样值序 列完全恢复原始的波形,采样频率必须大于或等于原始信号最高频率的 2倍。设连续信号 x(t) 的频谱为 x(W) ,以采样间隔时间 T 抽样得到离散信号 x(nT) ,如果满足 │ W │ ≤ Wc 时,其中 Wc 是截止频率,即 T ≤ l/2Wc 时,可以由 x(nT) 完全确定连续信号 x(t) 。

Android framework 音频解码 安卓音频解码软件_音频编解码_03

    当采样频率为 1 / 2T 时,即 WN=Wc=1/2T 时,称 WN 为奈奎斯特采样频率。

    音频量化


    采样只解决了音频波形信号在 时间坐标(即横轴 ) 上把一个波形切成若干个等分的数字化问题,但是还需要用某种数字化的方法来反映某一瞬间声波幅度的电压值大小。该值的大小影响音量的高低。我们把对声波波形幅度的数字化表示称之为“量化” 。 
    量化的过程 是先将采样后的信号按整个声波的幅度划分成有 限个区段的集合,把落入某个区段内的样值归为一类,并赋于相同的量化值。如何分割采样信号的幅度呢 ? 我们还是采取二进制的方式,以8位 (bit) 或 16 位 (bit) 的方式来划分纵轴 。也就是说在一个以8位为记录模式的音效中,其纵轴将会被划分为2^8个量化等级,用以记录其幅度大小,其精度为 音频信号最大振幅的 1/256量化位数越多,量化值越接近于采样值,其精度越高,但要求的信息存储量就越大。


存储数字音频信号的比特率为:

I=N·Ws 

其中的 Ws 是采样率, N 是每个采样值的比特数。

要减小比特率 I ,在 Ws 已经确定的情况下,只能去减少 N 的值。 N 的值降低会导致量化的精 度降低, N 的值增加又会导致信息存储量的增加。因此在编码时就需要合理地选择 N 的值。

均匀量化就是采用相等的量化间隔进行采样,也称为线性量化。用均匀量化来量化输入信号时,无论对大的输入信号还是小的输入信号都一律采用相同的量化间隔。因此,要想既适应幅度大的输入信号,同时又要满足精度高的要求,就需要增加采样样本的位数。

非均匀量化的基本思想是对输入信号进行量化时,大的输入信号采用大的量化间隔,小的输入信号采用小的量化间隔,这样就可以在满足精度要求的情况下使用较少的位数来表示。其中采样输入信号幅度和量化输出数据之间一般定义了两种对应关系,一种称为 u 律压缩算法,另一种称 为 A 律压缩算法。

采用不同的量化方法,量化后的数据量也就不同。因此说量化也是一种压缩数据的方法。

      声音数字化三要素

采样频率

量化位数

声道数

每秒钟抽取声波幅度样本的次数

每个采样点用多少二进制位表示数据范围

使用声音通道的个数

采样频率越高

声音质量越好

数据量也越大

量化位数越多

音质越好

数据量也越大

立体声比单声道的表现力丰富,但数据量翻倍

11.025kHz

22.05 kHz

44.1  kHz

8位=256

16位=65536

单声道

立体声

    声音数字化的数据量

音频数据量=采样频率×量化位数×声道数/8(字节/秒)

采样频率

(kHz)

量化位数

(bit)

数据量(KB/s)

单声道

立体声

11.025

8

10.77

21.35

16

21.53

43.07

22.05

8

21.53

43.07

16

43.07

86.13

44.1

8

43.07

86.13

16

86.13

172.27




      音频编码

采样、量化后的信号还不是数字信号,需要把它转换成数字脉冲,这一过程称为编码。最简单的编码方式是二进制编码。具体说就是用n比特的二进制编码来表示已经量化了的样值,每个二进制数对应一个量化电平,然后把它们排列,得到由二进制值脉冲串组成的数字信息流。用这样方式组成的二值脉冲的频率等于采样频率与量化比特数的乘积,称为数字信号的数码率。采样频率越高,量化比特数越大,数码率就越高,所需要的传输带宽就越宽。

音频编码方法归纳起来可以分成三大类:波形编码、参数编码、混合编码。波形编码是尽量保持输入波形不变,即重建的语音信号基本上与原始语音信号波形相同,压缩比较低;参数编码是要求重建的信号听起来与输入语音一样,但其波形可以不同,它是以语音信号所产生的数学模型为基础的一种编码方法,压缩比较高;混合编码是综合了波形编码的高质量潜力和参数编码的高压缩效率的混合编码的方法,这类方法也是目前低码率编码的方向。

压缩编码技术是指用某种方法使数字化信息的编码率降低的技术

        音频信号能压缩的基本依据:

        ①声音信号中存在大量的冗余度;
        ②人的听觉具有强音能抑制同时存在的弱音现象。


          音频信号压缩编码的分类:

        ①无损压缩(熵编码)
          霍夫曼编码、算术编码、行程编码
        ②有损压缩

          波形编码--PCM、DPCM、ADPCM 、子带编码、矢量量化

          参数编码--LPC

          混合编码--MPLPC、CELP


        音频压缩技术标准

分类

标准

说明

电话语

音质量

G.711

采样8kHz,量化8bit,码率64kbps

G.721

采用ADPCM编码,码率32kbps

G.723

采用ADPCM有损压缩,码率24kbps

G.728

采用LD-CELP压缩技术,码率16kbps

调幅广

播质量

G.722

采样16kHz,量化14bit,码率224(64)kbps

高保真

立体声

MPEG

音频

采样44.1kHz,量化16bit,码率705kbps (MPEG三个压缩层次,384-64kbps)