6、混音技术
混音, 顾名思义,就是把两路或者多路音频流混合在一起,形成一路音频流。
混流,则是指音视频流的混合,也就是视频画面和声音的对齐,也称混流。
①、混音条件
两路音视频流,必须符合以下条件才能混合:
- 格式相同, 要解压成 PCM 格式。
- 采样率相同,要转换成相同的采样率。主流采样率包括:16kHz、32kHz、44.1kHz 和 48kHz。
- 帧长相同,帧长由编码格式决定,PCM 没有帧长的概念,开发者自行决定帧长。为了和主流音频编码格式的帧长保持一致,推荐采用 20ms 为帧长。
- 位深(Bit-Depth)或采样格式 (Sample Format) 相同,承载每个采样点数据的 bit 数目要相同。
- 声道数相同,必须同样是单声道或者双声道 (立体声)。 这样,把格式、 采样率、 帧长、位深和声道数对齐了以后,两个音频流就可以混合了。
②、回声消除、噪音抑制和静音检测等处理
在混音之前,还需要做回声消除、噪音抑制和静音检测等处理。在编码之前,采集、语音前处理、混音之前的处理、混音和混音之后的处理应该按顺序进行。
③、音频重采样
重采样即是将音频进行重新采样得到新的采样率的音频。
重采样的原因
音频系统中可能存在多个音轨,而每个音轨的原始采样率可能是不一致的。
比如在播放音乐的过程中,来了一个提示音,就需要把音乐和提示音都混合到 codec 输出,音乐的原始采样率和提示音的原始采样率可能是不一致的。
问题来了,如果 codec 的采样率设置为音乐的原始采样率的话,那么提示音就会失真。
因此最简单见效的解决方法是:codec 的采样率固定一个值(44.1KHz/48KHz) ,所有音轨都重采样到这个采样率,然后才送到 codec,保证所有音轨听起来都不失真。
④、回声消除
回声消除就是在 Mic 采集到声音之后,将本地音箱播放出来的声音从 Mic 采集的声音数据中消除掉,使得 Mic 录制的声音只有本地用户说话的声音。
传统的回声消除都是采用硬件方式,在硬件电路上集成 DSP 处理芯片,如我们常用的固定电话、手机等都有专门的回音消除处理电路,而采用软件方式实现回声消除一直存在技术难点,包括国内应用最广泛的 QQ 超级语音,便是采用国外的 GIPS 技术,由此可见一般。
回声消除已经成为即时通讯中提供全双工语音的标准方法
回声消除的基本原理是以扬声器信号与由它产生的多路径回声的相关性为基础,建立远端信号的语音模型,利用它对回声进行估计,并不断修改滤波器的系数,使得估计值更加逼近真实的回声。然后,将回声估计值从话筒的输入信号中减去,从而达到消除回声的目的。
二、音频编码原理
1、音频编码
①、压缩编码
即压缩编码,其原理是压缩掉冗余的信号,冗余信号是指不能被人耳感知到的信号,包括人耳听觉范围之外的音频信号以及被掩蔽掉的音频信号。
模拟音频信号转换为数字信号需要经过采样和量化,量化的过程被称之为编码,根据不同的量化策略,产生了许多不同的编码方式,常见的编码方式有:PCM 和 ADPCM,这些数据代表着无损的原始数字音频信号,添加一些文件头信息,就可以存储为 WAV 文件了,它是一种由微软和 IBM 联合开发的用于音频数字存储的标准, 可以很容易地被解析和播放。
②、音频编解码常用的三种实现方案
采用专用的音频芯片对语音信号进行采集和处理,音频编解码算法集成在硬件内部,如 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>、音频信号数字化
将连续的模拟信号转换成离散的数字信号,完成采样、量化和编码三个步骤。又称为脉冲编码调制(Pulse Code Modulation) ,通常由 A/D 转换器来实现。
Nyquist 采样定律:采样率大于或等于连续信号最高频率分量的 2 倍时,采样信号可以用来完美重构原始连续信号。
三要素:采样频率、量化位数、声道数
<2>、音频编码三类方法
- 波形编码是尽量保持输入波形不变,即重建的语音信号基本上与原始语音信号波形相同,压缩比较低;
- 参数编码是要求重建的信号听起来与输入语音一样,但其波形可以不同,它是以语音信号所产生的数学模型为基础的一种编码方法,压缩比较高;
- 混合编码是综合了波形编码的高质量潜力和参数编码的高压缩效率的混合编码的方法,这类方法也是目前低码率编码的方向。
⑤、音频压缩
<1>、音频信号能压缩的基本依据
- 声音信号中存在大量的冗余度;
- 人的听觉具有强音能抑制同时存在的弱音现象。
<2>、音频信号压缩编码的分类
- 无损压缩(熵编码):霍夫曼编码、算术编码、行程编码
- 有损压缩
- 波形编码–PCM、DPCM、ADPCM 、子带编码、矢量量化
- 参数编码–LPC
- 混合编码–MPLPC、CELP
2、音频编码的基本原理讲解
①、概述
语音编码致力于:降低传输所需要的信道带宽, 同时保持输入语音的高质量。
语音编码的目标在于:设计低复杂度的编码器以尽可能低的比特率实现高品质数据传输。
②、静音阈值曲线
指在安静环境下,人耳在各个频率能听到声音的阈值。
③、临界频带
由于人耳对不同频率的解析度不同,MPEG1/Audio 将 22khz 内可感知的频率范围,依不同编码层,不同取样频率,划分成 23~26 个临界频带。
下图列出理想临界频带的中心频率与频宽。图中可看到,人耳对低频的解析度较好。
④、频域上的掩蔽效应
幅值较大的信号会掩蔽频率相近的幅值较小的信号,如下图:
⑤、时域上的遮蔽效应
在一个很短的时间内,若出现了 2 个声音,SPL(sound pressure level) 较大的声音会掩蔽 SPL 较小的声音。
时域掩蔽效应分前向掩蔽(pre-masking)和后向掩蔽(post-masking),其中 post-masking的时间会比较长,约是 pre-masking 的 10 倍。
时域遮蔽效应有助于消除前回音。
3、音频编码基本手段
①、编码基本手段之一 —— 量化和量化器
<1>、基本概念
- 量化和量化器:量化是把离散时间上的连续信号,转化成离散时间上的离散信号。
- 常见的量化器有:均匀量化器,对数量化器,非均匀量化器。
- 量化过程追求的目标是:最小化量化误差,并尽量减低量化器的复杂度(这 2 者本身就是一个矛盾)
<2>、常见的量化器的优缺点
- 均匀量化器:最简单,性能最差,仅适应于电话语音。
- 对数量化器:比均匀量化器复杂,也容易实现,性能比均匀量化器好。
- 非均匀(Non-uniform)量化器:根据信号的分布情况,来设计量化器。信号密集的地方进行细致的量化,稀疏的地方进行粗略量化。
②、编码基本手段之二 —— 语音编码器
<1>、基本概念
语音编码器分为三种类形:(a)波形编码器 、(b)声码器 、(c)混合编码器 。
波形编码器以构造出背景噪单在内的模拟波形为目标。作用于所有输入信号,因此会产生高质量的样值并且耗费较高的比特率。
声码器 (vocoder) 不会再生原始波形。这组编码器会提取一组参数 ,这组参数被送到接收端,用来导出语音产生模形。声码器语音质量不够好。
混合编码器, 它融入了波形编码器和声码器的长处。
<2>、波形编码器
波形编码器的设计常独立于信号,所以适应于各种信号的编码而不限于语音。
1)、时域编码
PCM:pulse code modulation,是最简单的编码方式。仅仅是对信号的离散和量化,常采用对数量化。
DPCM:differential pulse code modulation,差分脉冲编码,只对样本之间的差异进行编码。前一个或多个样本用来预测当前样本值。 用来做预测的样本越多,预测值越精确。 真实值和预测值之间的差值叫残差,是编码的对象。
- ADPCM:adaptive differential pulse code modulation,自适应差分脉冲编码。即在 DPCM 的基础上,根据信号的变化,适当调整量化器和预测器,使预测值更接近真实信号,残差更小,压缩效率更高。
2)、频域编码
频域编码是把信号分解成一系列不同频率的元素,并进行独立编码。
sub-band coding:子带编码是最简单的频域编码技术。
是将原始信号由时间域转变为频率域, 然后将其分割为若干个子频带, 并对其分别进行数字编码的技术。
它是利用带通滤波器(BPF)组把原始信号分割为若干(例如 m 个)子频带(简称子带)。 将各子带通过等效于单边带调幅的调制特性, 将各子带搬移到零频率附近, 分别经过 BPF(共 m个)之后,再以规定的速率(奈奎斯特速率)对各子带输出信号进行取样,并对取样数值进行通常的数字编码,其设置 m 路数字编码器。
将各路数字编码信号送到多路复用器,最后输出子带编码数据流。对不同的子带可以根据人耳感知模型,采用不同量化方式以及对子带分配不同的比特数。
transform coding:DCT 编码。
离散余弦代码转换
3)、声码器
- channel vocoder:利用人耳对相位的不敏感。
- homomorphic vocoder:能有效地处理合成信号。
- formant vocoder:以用语音信号的绝大部分信息都位于共振峰的位置与带宽上。
- linear predictive vocoder:最常用的声码器。
4)、混合编码器
波形编码器试图保留被编码信号的波形,能以中等比特率(32kbps) 提供高品质语音,但无法应用在低比特率场合。声码器试图产生在听觉上与被编码信号相似的信号,能以低比特率提供可以理解的语音,但是所形成的语音听起来不自然。
混合编码器结合了 2 者的优点:
RELP:在线性预测的基础上,对残差进行编码
机制为:只传输小部分残差,在接受端重构全部残差(把基带的残差进行拷贝)。
MPC:multi-pulse coding,对残差去除相关性
用于弥补声码器将声音简单分为 voiced 和 unvoiced,而没有中间状态的缺陷。
CELP: codebook excited linear prediction
用声道预测其和基音预测器的级联,更好逼近原始信号。
MBE: multiband excitation
多带激励,目的是避免 CELP 的大量运算,获得比声码器更高的质量。
4、音频压缩格式
①、WAV 编码
WAV 编码是在 PCM 数据格式的前面加上 44 字节,分别用来描述 PCM 的采样率、声道数、数据格式等信息。
特点:音质非常好、大量软件都支持。
使用场景:多媒体开发的中间文件、保存音乐和音效素材等。
②、mp3 编码
MP3 具有不错的压缩比,使用 LAME 编码的中高码率的 MP3 文件,听感上非常接近源 WAV 文件。
特点:音质在 128Kbps 以上表现还不错,压缩比比较高,兼容性好。
使用场景:高比特率下对兼容性有要求的音乐欣赏
③、AAC 编码
AAC 是新一代的音频有损压缩技术,它通过一些附加编码技术( 如 PS、 SBR 等),衍生出 LC-AAC、HE-AAC、HE-AAC V2 三中主要编码格式。
特点:在小于 128kbps 码率下表现优异,且多用于视频中的音频编码。
适用场景:128Kbps 码率下的音频编码, 多用于视频中的音频轨的编码。
④、Ogg 编码
Ogg 编码音质好、完全免费。可以用更小的码率达到更好的音质,128Kbps 的 Ogg 比 192Kbps 甚至更高的 MP3 还要出色。 但是目前媒体软件支持上还是不够友好。
特点:高中低码率下都有良好的表现,兼容性不够好,流媒体特性不支持。
使用场景:语音聊天的音频消息场景。
⑤、FLAC 编码
FLAC 中文可解释为无损音频压缩编码。
FLAC 是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如 MP3 及 AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质。
2012 年以来它已被很多软件及硬件音频产品( 如 CD 等) 所支持。
特点: 无损压缩、压缩率高于普通文件夹压缩格式( ZIP、 rar 等)。使用场景:高品质音乐等。
三、音频深度学习
1、深度学习在音频信号处理中的进展
主要从语音(Speech) 、音乐(Music) 和环境声(Environmental Sounds) 三个领域出发,分析它们之间的相似点和不同点,以及一些跨领域的通用方法描述。
2、应用
①、语音识别
语音识别指的是将语音信号转化为文字序列,它是所有基于语音交互的基础。对于语音识别而言,高斯混合模型(GMM)和马尔科夫模型(HMM)曾占据了几十年的发展历史。
②、音乐信息检索
和语音不同, 音乐通常包含很广泛的声源信息, 并且在不同音乐源之间存在这复杂的依赖关系。
③、环境声识别
有关环境声的任务主要有三类:声音场景识别、声音事件检测和标注。
④、定位和跟踪
利用多通道信号可以对声源位置进行跟踪和定位。跟踪和定位的主要设备条件是麦克风阵列,通常包含线性阵列、环形阵列和球形阵列等。
⑤、声源分离
指的是在多声源混合的信号中提取单一的目标声源。主要应用在一些鲁棒声音识别的预处理以及音乐编辑和重谱。
⑥、声音增强
通常为语音增强, 指的是通过减小噪声来提高语音质量。 主要技术是去噪自编码器、CNN、RNN、GAN(SEGAN) 等。
⑦、生成模型
根据数据集中的声音属性特征来生成新的数据,要求这些数据不能和原始数据集一样、要具有多样性并且训练和生成时间要很小,理想情况下是实时的。
3、十大音频处理任务
①、音频分类
音频分类是语音处理领域的一个基本问题,从本质上说,它就是从音频中提取特征,然后判断具体属于哪一类。
②、音频指纹识别
音频指纹识别的目的是从音频中提取一段特定的数字摘要,用于快速识别该段音频是否来自音频样本,或从音频库中搜索出带有相同数字摘要的音频。
③、自动音乐标注
音乐标注是音频分类的升级版。它包含多个类别,一个音频可以同时属于不同类,也就是有多个标签。自动音乐标注的潜在应用是为音频创建元数据,以便日后的搜索,在这上面,深度学习在一定程度上有用武之地。
④、音频分割
根据定义的一组特征将音频样本分割成段。
⑤、音源分离
音源分离就是从一堆混合的音频信号中分离出来自不同音源的信号,它最常见的应用之一就是识别同时翻译音频中的歌词(如卡拉 OK) 。
⑥、节拍跟踪
节拍跟踪的目标就是跟踪音频文件中每个节拍的位置。
⑦、音乐推荐
⑧、音乐信息检索
这是音频处理中最困难的任务之一, 它实质上是要建立一个基于音频数据的搜索引擎。
⑨、音乐转录(Music Transcription)
音乐转录是另一个非常有挑战性的音频处理任务。 它包括注释音频和创建一个“表”, 以便于之后用它生成音乐
⑩、音符起始点检测
音符起始点检测是分析音频/建立音乐序列的第一步,对于以上提到的大多数任务而言,执行音符起始点检测是必要的(简单任务不需要)