海思多媒体(MPP)开发(7)——音频模块(AUDIO)

(一)前言:

AUDIO 模块包括音频输入、音频输出、音频编码、音频解码四个子模块。音频输入和输出模块通过对 Hi35xx 芯片音频接口的控制实现音频输入输出功能。

音频编码和解码模块提供对 G711、G726、ADPCM 格式的音频编解码功能,并支持录制和播放 LPCM 格式的原始音频文件。

(二)音频接口:

nvp6134:

  • nvp6134支持4路声音和1路麦克风输入,其实也就是将模拟声音信号转换为数字信号,官方称之为录音模式。
  • 另外还支持1路回放模式,所谓回放模式,也就是将数字音频数据输入nvp6134,通6134将数字信号转换为模拟音频信号输出。
  • nvp6134支持SSP/DSP/I2S Interface (Master/Slave mode)

Hi3521A:

  • 3 个单向 I2S/PCM 接口
  • − 2 个输入,支持 16 路复合输入
  • − 1 个输出,支持双声道(2 路复合)输出
  • 支持 16bit 语音输入和输出

从上面可以看出,NVP6134+Hi3521的这种搭配方式只能使用I2S来进行数据通信。在调试的时候需要将nvp6134与海思的AI(音频输入)模块相对应上。一个为master模式,另外一个则需要slave模式。


(三)声音质量增强(Voice Quality Enhancement)

Hi35xx 的音频输入和输出模块支持对音频数据进行声音质量增强(Voice Quality Enhancement)处理。功能包含回声抵消、语音降噪、自动增益、高通滤波、录音,噪声消除、均衡器六个处理模块

AEC

AEC 为回声抵消(Acoustic Echo Cancellation)模块,主要工作在需要进行去除回声的场景下:如 IPC 对讲,远端语音数据在 AO 设备上播放,此时在本地通过 MIC 采集语音数据,它支持消除录制的语音数据中的 AO 设备播放的声音(回声)。

ANR

ANR 为语音降噪(Audio Noise Reduction)模块,主要工作在需要去除外界噪声,保留语音输入的场景下。

与 RNR 算法比起来,ANR 更讲究噪声处理的干净程度。ANR 会滤除一些环境声音,主要保留语音数据,并会带来一定的细节丢失。所以 ANR 算法更适用于 NVR 和 IPC场景。在这两个场景下,我们更希望能够着重保留人声,滤除其他噪声。

RNR

RNR 为录音噪声消除(Record Noise Reduction)模块,主要工作在需要去除环境噪声,但保留小信号输入的场景下。

与 ANR 算法比起来,RNR 更讲究细节输入(小信号)的保留度,RNR 会在降噪的同时保留小信号的输入,所以降噪力度会低一点,但能更多的保留现场声音,真实还原场景,适用于运动 DV 场景。

HPF

HPF 为高通滤波(high-pass filte)模块,主要负责去除低频噪声。

低频噪声来源经常为硬件噪声或工频噪声,表现为轰轰轰类不舒适的声音。我们可以通过使用频谱分析单板在安静环境下录制的码流,来确定是否需要加入该模块。如果低频噪声不是非常明显,并且客户需要保留低频部分的音源,则不建议加入该模块。

推荐配置参数为 AUDIO_HPF_FREQ_120 或 AUDIO_HPF_FREQ_150。

AGC

AGC 为自动增益控制(Auto Gain Control)模块,主要负责增益控制输出电平,在声音输入音量有大小变化时,能将输出音量控制在比较一致的范围内,主要工作在需要保证声音不至于过大或过小的场景下。

EQ

EQ 模块为均衡处理器(Equalizer)模块,主要对音频数据进行均衡处理,以调节音频数据中各频段声音的增益

GAIN

GAIN 模块是音量调节模块,主要用于调节 AGC 开启后的音量大小。

RES

RES 模块为重采样(Resampler)模块。当 AI 上行或 AO 下行通路中开启 VQE 各功能模块时,在处理前后各存在一次重采样第一次的作用是将输入采样率下的音频数据转换成功能模块所支持的工作采样率(8kHz/16kHz/48kHz),第二次则将工作采样率下的数据转换成输出采样率。

(四)音频格式

海思音频编码和解码模块提供对 G711、G726、ADPCM 格式的音频编解码功能,音频格式介绍如下:

LPCM

LPCM,linear pulse code modulation,即线性脉冲编码调制,是一种非压缩音频数字化技术,是一种未压缩的原音重现,在普通CD、DVD及其他各种要求最高音频质量的场合中已经得到广泛的应用。各种应用场合中的LPCM(PCM)原理是一样的,区别在于采样频率和量化精度不同。

声音之所以能够数字化,是因为人耳所能听到的声音频率不是无限宽的,主要在20kHz以下。按照抽样定理,只有抽样频率大于40kHz,才能无失真地重建原始声音。如CD采用44.1kHz的抽样频率,其他则主要采用48kHz或96kHz。

PCM(脉冲编码调制)是一种将模拟语音信号变换为数字信号的编码方式。主要经过3个过程:抽样、量化和编码。抽样过程将连续时间模拟信号变为离散时间、连续幅度的抽样信号,量化过程将抽样信号变为离散时间、离散幅度的数字信号,编码过程将量化后的信号编码成为一个二进制码组输出。

量化分为线性量化和非线性量化。线性量化在整个量化范围内,量化间隔均相等。非线性量化采用不等的量化间隔。量化间隔数由编码的二进制位数决定。例如,CD采用16bit线性量化,则量化间隔数L=65536。位数(n)越多,精度越高,信噪比SNR=6.02n+1.76(dB)也越高。但编码的二进制位数不是无限制的,需要根据所需的数据率确定。比如:CD可以达到的数据率为2×44.1×16=1411.2Kbit/s。
简单的理解,LPCM就是把原始模拟声音波形经过采样和线性量化后得到的数字信号,这些数据信号还没被压缩。

ADPCM

ADPCM :Adaptive Differential Pulse Code Modulation

说到ADPCM, 就得先说下DPCM。Differential(差异)或Delta PCM(DPCM)纪录的是目前的值与前一个值的差异值。DPCM对信号的差值进行量化,可以进一步减少量化比特数。与相等的PCM比较,这种编码只需要25%的比特数。这与一些视频的压缩理念类似,用该帧与前一帧的差异来进行记录该帧以达到压缩的目的。

ADPCM (ADPCM Adaptive Differential Pulse Code Modulation), 是一种针对16bit (或者更高) 声音波形数据的一种有损压缩算法, 它将声音流中每次采样的 16bit 数据以 4bit 存储, 所以压缩比1:4. 而压缩/解压缩算法非常的简单, 所以是一种低空间消耗,高质量声音获得的好途径。

该算法利用了语音信号样点间的相关性,并针对语音信号的非平稳特点,使用了自适应预测和自适应量化,即量化器和预测器的参数能随输入信号的统计特性自适应于或接近于最佳的参数状态,在32kbps◎8khz速率上能够给出网络等级话音质量。

特性:ADPCM综合了APCM的自适应特性和DPCM系统的差分特性,是一种性能比较好的波形编码。它的核心想法是:
①利用自适应的思想改变量化阶的大小,即使用小的量化阶(step-size)去编码小的差值,使用大的量化阶去编码大的差值;
②使用过去的样本值估算下一个输入样本的预测值,使实际样本值和预测值之间的差值总是最小。

  • 优点:算法复杂度低,压缩比小,编解码延时最短(相对其它技术)
  • 缺点:声音质量一般

简单理解,ADPCM就是对LPCM数据进行有损压缩,压缩过程中量化参数遇小则小,遇大则大,根据差值来自己调整大小;另外它可以对之前的数据统计后来预测后来的数据差值,尽量使差值比较小。

G711

G711是国际电信联盟ITU-T定制出来的一套语音压缩标准,它代表了对数PCM(logarithmic pulse-code modulation)抽样标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号。 起压缩率为1:2, 即把16位数据压缩成8位。G.711是主流的波形声音编解码器。

G.711 标准下主要有两种压缩算法。一种是u-law algorithm (又称often u-law, ulaw, mu-law),主要运用于北美和日本;另一种是A-law algorithm,主要运用于欧洲和世界其他地区。其中,后者是特别设计用来方便计算机处理的

G711的内容是将14bit(uLaw)或者13bit(aLaw)采样的PCM数据编码成8bit的数据流,播放的时候在将此8bit的数据还原成14bit或者13bit进行播放,不同于MPEG这种对于整体或者一段数据进行考虑再进行编解码的做法,G711是波形编解码算法,就是一个sample对应一个编码,所以压缩比固定为:

  • 8/14 = 57% (uLaw)
  • 8/13 = 62% (aLaw)

简单理解,G.711就是语音模拟信号的一种非线性量化, bitrate 是64kbps。

G726

G.726是ITU-T定义的音频编码算法。1990年 CCITT(ITU前身)在G.721和G.723标准的基础上提出。G.726可将64kbps的PCM信号转换为40kbps、32kbps、24kbps、16kbps的ADPCM信号。

最为常用的方式是 32 kbit/s,但由于其只是 G.711速率的一半,所以就将网络的可利用空间增加了一倍。G.726具 体规定了一个 64 kbpsA-law 或 μ-law PCM 信号是如何被转化为40, 32, 24或16 kbps 的 ADPCM 通道的。在这些通道中,24和16 kbps 的通道被用于数字电路倍增设备(DCME)中的语音传输,而40 kbps 通道则被用于 DCME 中的数据解调信号(尤其是4800 kbps 或更高的调制解调器)。
实际上,G.726 encoder 输入一般都是G.711 encoder的输出:64kbit/s 的A-law或µ-law;G.726算法本质就是一个ADPCM, 自适应量化算法,把64kbit/s 压缩到32kbit/s 。

AAC

AAC,全称Advanced Audio Coding,中文名:高级音频编码,是一种专为声音数据设计的文件压缩格式。与MP3不同,它采用了全新的算法进行编码,更加高效,具有更高的“性价比”。利用AAC格式,可使人感觉声音质量没有明显降低的前提下,更加小巧。苹果ipod、诺基亚手机支持AAC格式的音频文件。

  • 优点:相对于mp3,AAC格式的音质更佳,文件更小。
  • 不足:AAC属于有损压缩的格式,与时下流行的APE、FLAC等无损格式相比音质存在“本质上”的差距。加之,传输速度更快的USB3.0和16G以上大容量MP3正在加速普及,也使得AAC头上“小巧”的光环不复存在。

AAC是新一代的音频有损压缩技术,它通过一些附加的编码技术(比如PS,SBR等),衍生出了LC-AAC,HE-AAC,HE-AACv2三种主要的编码,LC-AAC就是比较传统的AAC,相对而言,主要用于中高码率(>=80Kbps),HE-AAC(相当于AAC+SBR)主要用于中低码(<=80Kbps),而新近推出的HE-AACv2(相当于AAC+SBR+PS)主要用于低码率(<=48Kbps),事实上大部分编码器设成<=48Kbps自动启用PS技术,而>48Kbps就不加PS,就相当于普通的HE-AAC。

注意音频通道的绑定:AI模块只能绑定到AO和AENC两个模块,它与视频通道的绑定相互独立,并且不受影响。也就是说AI的绑定与vpss没有任何的关系。

本章频测工程可以从「目录与序言」提供的地址去获取

本专栏第一篇文章「目录与序言」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解。

发布了175 篇原创文章 · 获赞 262 · 访问量 70万+

猜你喜欢

转载自blog.csdn.net/li_wen01/article/details/105064076