现实生活中,音频(Audio)主要用在两大场景中,包括语音(Voice)和音乐(Music)。语音主要用于沟通,如打电话等。目前由于语音识别技术的发展,人机语音交互也是语音的一个应用方向,很多大厂推出智能音箱、语音助手等。音乐主要用于欣赏和陶冶情操,如播放音乐。
音频的基础概念主要包括采样、采样率、声道、音频编解码、码率等。常用的音频格式主要包括WAV、AAC、AMR、MP3、AC-3等。音频开发的主要应用包括音频播放器、录音机、语音电话、音视频监控应用、音视频直播应用、音频编辑/处理软件、蓝牙耳机/音箱等。
音频是一个专业术语,音频一词通常用作一般性描述音频范围内和声音有关的设备及其作用。人类所能听到的所有声音都可以成为音频,包括噪声等。声音被录制下来后,风声、雨声、读书声,歌声、乐器声都可以通过数字音乐软件处理,把它们制作成CD,这时候音频是指存储在计算机中的声音。与音频相关的概念包括数字音频、音频采集、音频处理、音频应用场景、常见的音频格式、混音技术等。
声音和音频是两个不同的概念,声音有三要素。
声音的三要素是频率、振幅、波形。
频率是指声波的频率,即声音的音调,人类听觉的频率(音调)范围为[20Hz,20kHz]。
振幅是指声波的响度,通俗地讲就是声音的高低,可以理解为音量.
波形是指声音的音色,在同样的频率和振幅下,钢琴和二胡的声音听起来完全不同,因为其音色不同。波形决定了其所代表声音的音色,音色不同是因为它们的介质所产生的波形不同。
综上,声音的本质就是音调、音量和音色。音调指频率,音量指振幅,音色和材质有关。
其中声音响度和强度是两个不同的概念,声音的主观属性响度表示的是一个声音听起来有多响的程度。响度主要随声音的强度而变化,但也受频率的影响。
音频相关概念包括比特率、采样、采样率、奈奎斯特采样定律等。
比特率表示经过编码(压缩)后的音频数据每秒需要用多少比特来表示,常用kb/s表示。
采样是把连续的模拟信号,变成离散的数字型号。
采样率是指每秒采集多少个样本。
奈奎斯特(Nyquist)采样定律规定当采样率大于或等于连续信号最高频率分量的2倍时,采样信号可以用来完美重构原始连续信号。
数字音频是一种利用数字化手段对声音进行录制、存放、编辑、压缩或播放的技术,它是随着数字信号处理技术、计算机技术、多媒体技术的发展而形成的一种全新的声音处理手段。数字音频的主要应用领域是音乐后期制作和录音。
计算机数据的存储是以0、1的形式存储的,所以数字音频就是首先将音频文件进行转换,接着将这些电平信号转换成二进制数据保存,播放的时候把这些数据转化为模拟的电平信号再送到扬声器播出,数字声音和一般磁带、广播、电视中的声音就存储及播放方式而言有着本质的区别。相比而言,它具有存储方便、存储成本低、存储和传输的过程中没有声音的失真、编辑和处理非常方便等特点。
数字音频所设计的基础概念非常多,包括采样、量化、编码、采样率、采样数、声道数、音频帧、比特率、PCM等。
从模拟信号——>采样——>量化——>编码——>数字信号等步骤。
采样是指再时间轴上对信号进行数字化。根据奈奎斯特定律,当按照比声音最高频率的2呗以上进行采样时,采样信号可以用来完美重构原始连续信号。如人类听觉频率范围[20Hz,20kHz],所以采样频率至少要大于40kHz。采样频率一般为44.1kHz,即1S采样44100次,这样可以保证声音达到20kHz也能被数字化。
采样率,简单来说就是每秒获取声音样本的次数。声音是一种能量波,其具有音频频率和振幅的特征。采样过程就是抽取某点的频率值。如果在1S内抽取的点越多,获取的信息也就越多,采样率越高,声音的质量就越好。但并不是说采样率越高就越好,因为人耳的听觉范围为[20Hz,20kHz]。
采样数跟采样率、采样时间、采样位数和声道数有关系,即采样数等于采样率、采样时间、采样位数和声道数的乘积。如采样率为44100Hz,采样率时间为1S,采样位数为16b,声道数为2,那么采样数等于44100 *1 *16*2=1411200。
每个采样又该如何表示呢?这就涉及量化了。量化是指在幅度轴上对信号进行数字化。如果用16比特的二进制信号来表示一个采样,则一个采样所表示的范围为[-32768,32767]。
采样位数也叫采样大小、量化位数、量化深度、采样位深、采样位宽。采样位数表示每个采样点用多少比特表示,音频的量化深度一般为8b、16b、32b等。当量化深度为8b时,每个采样点可以表示256个不同的量化值;当量化深度为16b时,每个采样点可以表示65536个不同的量化值。量化深度的大小会影响声音的质量,位数越多,量化后的波形越接近原始波形,声音的质量越高,而需要的存储空间也越大;位数越少,声音的质量越低,需要的存储空间越小。如常见的CD音质采用的是16b的量化深度。采样精度用来指定采样数据的格式和每次采样的大小。例如数据格式为PCM,每次采样位数为16b。
每个量化都是一个采样,将这么多采样进行存储就叫作编码。编码就是按照一定的格式记录采样和量化后的数字数据,例如顺序存储或者压缩存储等。通常所讲的音频裸数据格式就是脉冲编码调制(PCM)数据。描述一段PCM数据通常需要几个概念,包括量化格式(通常为16b)、采样率、声道数等。对于声音格式,还有一个概念用来描述它的大小,即比特率,即1S内比特数目,用来衡量音频数据单位时间内的容量大小。
其中PCM(Pulse Code Modulation),它是指在原始收录声音时,数据会保存到一串缓冲区(Buffer)中,这串缓冲区采用了PCM格式存储。通常把音频采样过程也叫做脉冲编码调制编码,即PCM编码,采样值也叫PCM值。PCM编码过程就是从模拟信号到数字信号的转化过程,包括抽样、量化和编码三个阶段。如在Windows系统中,通过WaveIn或者CoreAudio采集声音,得到的原始数据就是一串PCM格式的Buffer。
从模拟信号到数字信号的转换过程包括采样、量化、编码这3个阶段,除此之外,数字音频还涉及几个基础概念。
通道数,即声音的通道数目,有单声道、双声道和立体声道等区别。记录声音时,如果每次只生成一个声波数据,成为单声道;每次生成两个声波数据,成为双声道(立体声)。
立体声存储大小是单声道文件的两倍。单声道的声音通常使用一个扬声器发声,但也可以处理成两个扬声器输出同一个声道的声音,但通过两个扬声器回放单声道信息的时候,可以明显感觉到声音是从两个音箱中间传递到耳朵的,无法判断声源的具体位置。双声道就是有两个声音通道,其原理是人们听到的声音时可以根据左耳和右耳对声音的相位差来判断声源的具体位置。声音在录制的过程中被分配到两个独立的声道中,从而达成了很好的声音定位效果。
音频跟视频不太一样,视频的每一帧就是一幅图像,但音频是流式的,本身没有一帧的概念。对于音频来讲,确实没有办法明确定义出一帧。如PCM流,采样率为44100Hz,采样位数为16b,通道数为2,那么1S音频数据的大小是固定的,共44100*16b*2/8=176400B。通常,可以规定一帧音频的概念,例如规定每20ms的音频是一帧。
比特率(码率),是指音频每秒传送的比特数,单位为b/s。比特率越大表示单位时间内采样的数据越多,传输的数据量就越大。如PCM流,采样率为44100Hz,采样大小为16b,声道数为2,那么比特率为44100*16*2=1411200b/s。
一个音频文件的总大小,可以根据采样数、采样位数、声道数、采样时间来计算,即文件大小=采样率*采样时间*采样位数*声道数/8。
音频技术用于实现计算机对声音的处理。声音是一种由物体振动而产生的波,当物体振动时,会发出声波。音频数据的主要格式包括WAVE、MP3、AAC、AC-3、Real Audio、CD Audio等。音频数据的采集,常见方法有三种,分别是直接获取已有音频、利用音频处理软件捕获并截取声音、用话筒录制声音。
直接获取已有音频数据的常用方法包括从网上下载、从多媒体光盘中查找。
利用音频处理软件捕获、截取CD光盘音频数据,通常成为CD抓轨(抓音轨的意思)。抓轨时多媒体术语,是抓取CD音轨并转换成MP3、WAV等音频格式的过程。
另外还可以剥离出音频文件中的声音,可以用很多方便的软件来操作(如FFmpeg),能方便直接地转换音频格式,可以实现大多数视频、音频及图像不同格式之间地相互转换,还可以实现增添数字水印等功能。
利用话筒录制需要先把话筒接到计算机上,然后利用录音软件直接录制声音。
音频处理技术包括音频采集、语音编解码、文字与声音地转换、音乐合成、语音识别与理解、音频数据传输、音视频同步、音频效果与编辑等。通常实现计算机语音输出有两种方式,即录音与重放、文字声音转换。
噪声抑制(Noise Supperession)是很常见地应用,如手机等设备采集原始声音会包含背景噪声,影响听众主观体验,还会降低音频压缩效率,就需要进行噪声抑制处理。谷歌著名地开源框架WebRTC,对其中的噪声抑制算法进行严谨测试,发现该算法可以对白噪声和有色噪声进行良好抑制,满足视频或者语音通话的要求。其他开源项目如Speex包含的噪声抑制算法,也有较好的效果,该算法适用范围较WebRTC的噪声抑制算法更为广泛,可以在任意采样率下使用。
回声消除技术是数字信号处理的典型应用之一。在视频或者音频通话过程中,本地的声音传送到对端播放后,声音会被对端话筒/麦克风采集,混合着对端人声一起传输到本地播放,这样本端播放的声音包含了本端原本采集的声音,造成主观感觉听到了自己的回声。回声非常影响用户体验,回声消除(Acoustic Echo Canceller)的原理和算法非常复杂。以WebRTC为例,其中的回声抑制模块建议移动设备采用运算量较小的AECM算法。
回声消除的基本原理以扬声器信号与由它产生的多路径回声的相关性为基础,建立远端信号的语音模型,利用它对回声进行估计,并不断修改滤波器的系数,使估计值更加逼近真实的回声,然后将回声估计值从话筒的输入信号中减去,从而达到消除回声的目的。
回声消除在即时通信应用中,需要双方/多方进行,在要求较高的场合,通常采用外置音箱放音,必然会有回音。这种情感况下不对回音进行处理,将会影响通话质量和用户体验,更严重的情况还会形成震荡,产生啸叫。
传统的回声消除都采用硬件方式,在硬件电路上继承DSP处理芯片,如常用的固定电话、手机等都有专门的回音消除处理电路,而采用软件方式实现回声消除一直存在技术难点,包括QQ语音通话使用的使国外的GIPS技术。因此,回声消除已经成为即时通信中提供全双工语音的标准方法。升学回声消除使通过消除或移除本地话筒中拾取的远端音频信号来阻止远端的声音返回去的一种处理方法。这种音频的一处都是通过数字信号处理来完成的。
手机等设备采集的音频数据往往响度时高时低,从而造成声音忽大忽小,影响听众的主观感受。自动增益控制(Auto Gain Control)算法根据预先配置的参数对声音进行正向/负向调节,使输出的声音大小适合人耳的主观感受。
静音检测(Voice Activity Detection)的基本原理使计算机音频的功率谱密度,如果功率谱密度小于阈值则认为使静音,否则认为使声音。静音检测广泛应用于音频编码、AGC、AECM等。
舒适噪声产生(Confortable Noise Generation)的基本原理是根据噪声的功率谱密度,人为生成噪声,广泛适用于音频编解码器。在编码端计算静音时的白噪声功率谱密度,将静音时段和功率谱密度信息编码。在解码端,根据时间信息和功率谱密度信息,重建随机白噪声。如完全静音时,为了创造舒适的通话体验,在音频后处理阶段添加随机白噪声。
当下,音频主要用在两大场景中,包括语音和音乐。语音主要用于沟通,如打电话、微信语音、人机语音交互(正处于封口,大厂推出的智能音箱)等。音乐主要用于欣赏,如音乐播放。
音频开发的主要应用包括音频播放器、录音机、语音电话、音视频监控应用、音视频直播应用、蓝牙耳机、音箱、音频编码与处理软件,如KTV音效和铃声转换等。
音频开发的具体内容包括音频采集与播放、音频算法处理、音频的编解码和格式转换、音频传输协议的开发等。音频算法处理主要包括去噪、VAD检测、回声消除、音效处理、增强、混音与分离等。
音频格式是指要在计算机内播放或处理的音频文件的格式,是对声音文件进行数、模转换的过程。
目前音乐文件播放格式分为 无损压缩和有损压缩。不同格式的音乐文件,在音质上表现会有很大的差异。有损压缩就是降低音频采样频率与比特率,输出的音频文件会比原文件小。另一种音频压缩被称为无损压缩,能够将100%保存源文件的所有数据的前提下,将音频文件的体积压缩得更小,而将压缩后的音频文件还原后,能够实现与源文件相同大小、相同的码率。
WAV是微软公司开发的一种声音文件格式,也叫做波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持,但压缩率比较低。WAV编码是在PCM数据格式的前面加上44B的头部,分别用来描述PCM的采样率、声道数、数据格式等新消息。WAV编码的特点是音质非常好、大量软件支持。一般应用于多媒体开发的中间文件、保存音乐和音效素材等。
乐器数字接口(Musical Instrument Digital Interface,MIDI)是数字音乐与电子合成乐的统一国际标准。它定义了计算机音乐程序、数字合成器及其他电子设备交换音乐信号的方式,规定了不同厂家的电子乐器与计算机连接的电缆、硬件及设备间数据传输的协议,可以模拟多种乐器的声音。MIDI文件就是MIDI格式的文件,在MIDI文件中存储的是一些指令。将这些指令发送给声卡,声卡会在按照指令将声音合成出来。
MP3全称是MPEG-1 Audio Layer 3,它在1992年合并至MPEG规范中。MP3能够以高音质、低采样率对数字音频文件进行压缩,应用最普遍。MP3具有不错的压缩比,使用LAME编码的中高码率的MP3文件,在听感上非常接近源WAV文件。特点是音质在128kb/s以上表现还不错,压缩比较高,兼容性好。适用于高比特率下对兼容性有要求的音乐欣赏方面。
MP3Pro是瑞典Coding科技公司研发的,包含两大技术:一是来自Coding科技公司所特有的解码技术;二是由MP3的专利持有者法国汤姆森多媒体公司和德国Fraunhofer集成电路协会共同研究的一项译码技术。MP3Pro可在基本不改变文件大小的情况下改善原先的MP3音乐音质,能够在用较低的比特率压缩音频文件的情况下,最大程度地保持压缩前地音质。
WMA(Windows Media Audio)是微软公司在互联网音频、视频领域地力作。WMA格式以减少数据流量但保持音质地方法来达到更好地压缩目的,其压缩率一般可以达到1:18。WMA还可以通过DRM(Digital Rights Management)保护版权。
RealAudio是由Real Networks公司推出地一种文件格式,其最大的特点就是可以实时传输音频信息,尤其是网速较慢的情况下,仍然可以较为流畅地传送数据,因此RealAudio主要用于网络上的在线播放。现在的RealAudio文件格式主要有RA(RealAudio)、RM(RealMedia)、RMX(RealAudio Secured)这3种,这些文件的共同性在于随着网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较为宽敞的听众获得较好的音质。
Audible拥有4种不同的格式,包括Audible1、2、3、4。每种格式主要考虑音频源及所使用的收听装备。格式1、2和3采用不同级别的语音压缩,而格式4采用更低的采样率和与MP3相同的解码方式,所得到的语音吐词更清楚,而且可以更有效地从网上下载。Audible所采用地是自己的桌面播放工具,这就是Audible Manager,使用这种播放器就可以播放存放在PC或者传输到便捷式播放器上的Audible格式文件了。
高级音频编码(Advanced Audio Coding,AAC)是由Fraunhofer IIS-A、杜比和AT&T共同开发的一种音频格式,它是MPEG-2规范的一部分。AAC所采用的运算法则与MP3的运算法则有所不同,AAC通过结合其他的功能来提高编码效率。AAC的音频算法在压缩能力上远远超过以前的一些算法,如MP3。它还同时支持多达48个音轨、15个低频音轨、更多种采样率和比特率、多种语言的兼容能力、更高的解码效率。具体来说,AAC可以在比MP3文件缩小30%的前提下提供更好的音质。
AAC是新一代的音频有损压缩技术,它通过一些附加编码技术(如PS和SBR)衍生出LC-AAC、HE-AAC、HE-AAC V2这3中主要编码格式。在小于128kb/s码率下表现优异,且多用于视频中的音频编码。在128kb/s码率下的音频编码,多用于视频中的音频轨的编码。
Ogg Vorbis是一种新的音频压缩格式,类似于MP3等现有的音乐格式,但有一点不同的是,它完全是免费、开放和没有专利限制的。Vorbis是这种音频压缩机制的名字,而Ogg则是一个计划的名字,该计划意图设计一个完全开放性的多媒体系统。Vorbis也是有损压缩,但通过使用更加先进的升学模型减少损失。同样位速率编码的Ogg与MP3相比听起来更好些。Ogg 编码音质好、完全免费,可以用更小的码率达到更好的音质,128kb/s的Ogg比192kb/s甚至更好的MP3还要出色,但是目前在媒体软件支持上还是不够友好。在高中低码率下都有良好的表现,但兼容性不够好,流媒体特性不太支持。
APE是一种无损压缩音频格式,在音质不降低的前提下,可以压缩到传统无损格式WAV文件的一半。APE压缩与WinZip或WinRAR这类专业数据压缩软件压缩原理类似,只是APE等无损压缩数字音乐之后的APE音频文件是直接可以被播放的。APE的压缩速率是动态的,压缩时只压缩可被要锁的部分,不能包压缩的部分被保留。
FLAC(Free Lossless Audio Codec)是一套著名的自由音频无损压缩编码,其特点是无损压缩。理论上以FLAC编码压缩后不会丢失任何信息,将FLAC文件还原为WAV文件后,与压缩前的WAV文件内容相同。这种压缩与ZIP的方式类似,但FLAC的压缩率大于ZIP和RAR,因FLAC是专门针对PCM音频的特点而设计的压缩方式,而且可以使用播放器直接播放FLAC压缩的文件,就像通常播放MP3文件一样。FLAC是免费的,并且支持大多数操作系统(如Windows、Linux、BSD、Solaris、IRIX、AIX、BeOS、OS/2、Amiga等)。FLAC提供了在开发工具autotools、MSVC、Watcom C、Project Builder上的build系统。现各大网站都有FLAC音乐提供下载,发布者一般是购买CD后把.cda音轨直接抓成.flac格式文件,以保证光盘的原无损质量。
混音就是把两路或者多路音频流混合在一起,形成一路音频流。混流则是指音频流的混合,也就是视频画面和声音的对齐。在混音之前,需要做回声消除、噪音抑制和静音检测等处理。回声消除和噪声抑制属于语音前处理的范畴。静音抑制可有可无,对于终端混音,要把采集到的主播声音和从音频文件中读到的伴奏声音混合。如果主播停顿一段时间而不发出声音,通过VAD检测到了以后,这段时间不婚姻,直接采用伴奏音乐的数据即可。
PS:静音检测与回声消除可参考1.4章节的音频处理。
另外,并不是任意两路音频流都可以直接混合,两路音频流必须符合以下条件才能混合。
(1)格式相同,要解压成PCM格式。
(2)采样率相同,要转换成相同的采样率。主流采样率包括16kHz、32kHz、44.1kHz和48kHz。
(3)帧长相同,帧长由编码格式决定,PCM没有帧长的概念,开发者可自行决定帧长。为了和主流音频编码格式的帧长保持一致,推荐采用20ms为帧长。
(4)位深(Bit-Depth)或采样格式相同,承载每个采样点数据的比特数目要相同。
(5)声道数相同,必须同样是单声道或者双声道。
音频重采样就是将音频进行重新采样得到的新的采样率/采样位数/声道数。在音频系统中可能存在多个音轨,而每个音轨的原始采样率可能是不一致的。
如播放音乐时,来了个提示音,此时需要把音乐和提示音混合到编解码器进行输出,音乐的原始采样率和提示音的原始采样率可能不一致。如果编解码的采样率设置为音乐的原始采样率,提示音就会失真,所以需要进行音频重采样。
最事半功倍的方法时编解码器的采样率固定一个值(44.1kHz或48kHz),所有的音轨都重采样到这个采样率,然后才送到编解码器,以保证所有音轨听起来都不失真。
描述信源的数据时信息和数据冗余之和,即数据=信息+数据冗余。音频信号在时域和频域上具有相关性,即存在数据冗余。将音频作为一个信源,音频编码的实质时减少音频中的冗余。自然界中的声音非常复杂,波形也及其复杂,通常采用的时脉冲编码调制编码,即PCM编码。PCM通过抽样、量化、编码3个步骤将连续变化的模拟信号转化成数字编码信号。
原始的音频数据中存在大量的冗余信息,需要进行压缩处理。音频信号能压缩的理论依据,包括声音信号中存在大量的冗余度,以及人的听觉具有强音能抑制同时存在的弱音现象。
压缩编码,其原理是压缩冗余的信号。冗余的信号是指不能被人耳感知到的信号,包括人耳听觉范围之外的音频信号及被掩蔽掉的音频信号。
模拟音频信号转化为数字信号需要经过采样和量化。量化的过程被成为编码,根据不同的量化策略,产生了许多不同的编码方式(常见如PCM和ADPCM)。这些数据代表着无损的原始数字音频信号,添加一些文件头信息就可以存储为WAV文件了,它是由微软和IBM联合开发的用于音频数字存储的标准,可以很容易被解析和播放。
在更深一步学习音频处理和压缩之前需要明白几个概念,包括音调、响度、采样率、采样精度、声道数、音频帧长等。
PS:与音频相关的基础概念可以参考之前的文章。
音频压缩编码分为2类,包括无损压缩和有损压缩。
(1)无损压缩,主要指熵编码,包括哈夫曼编码、算术编码、行程编码等。
(2)有损压缩,包括波形编码(主要是PCM、DPCM、ADPCM、子带编码、矢量量化等)、参数编码、混合编码。
音频压缩编码有3中常用的实现方案。
(1)采用专用的音频芯片对语音信号进行采集和处理,音频编解码算法集成在硬件内部,如MP3编解码芯片、语音合成分析芯片等。使用这种方案的优点是处理速度快,设计周期短。其缺点是局限性较大,不灵活,难以进行系统升级。
(2)利用A/D采集卡加上计算机组成的硬件平台,音频编解码算法由计算机上的软件实现。使用这种方案的优点是价格便宜,开发灵活并且利于系统的升级。缺点是处理速度较慢,开发难度较大。
(3)利用高精度、高速度的A/D采集芯片来完成语音信号的采集,使用可编程的数据处理能力强的芯片实现语音信号处理的算法,然后用ARM进行控制。采用这种方案的优点是系统升级能力强,可以兼容多种音频压缩格式甚至未来的音频压缩格式,系统成本较低。缺点是开发难度较大,设计者需要将音频的解码算法移植到对应的ARM芯片中。
音频压缩编码有3种常用的标准。
(1)ITU/CCITT的G系列:G.711、G.721、G.722、G.723、G.728、G.729等。
(2)MPEG系列:MPEG-1、MPEG-2、MPEG-4中的音频编码等。
(3)Dolby实验室的AC系列:AC-1、AC-2、AC-3等。
音频编码目的在于降低传输所需要的信道带宽,同时保持输入语音的高质量。高频编码的目的在于设计低复杂度的编码器以尽可能低的比特率实现高品质的数据传输。
音频信号数字化是指将连续的模拟信号转换成离散的数字信号,完成采样、量化和编码3个步骤。它又成为脉冲编码调制,通常由A/D转换器实现。
音频模拟信号的数字化过程,即模拟信号——>采样——>量化——>数字信号。
音频编码有3类常用方法,包括波形编码、参数编码和混合编码。波形编码是尽量保持输入波形不变,即冲击爱你的语音信号基本上与原始语音信号的波形相同,压缩率比较低。参数编码要求重建的信号听起来与输入语音一样,但其波形可以不同,它是以语音信号所产生的数学模型为基础的一种编码方法,压缩率比较高。混合编码是综合了波形编码的高质量潜力和参数编码的高压缩效率和混合编码方法,这类方法也是目前低码率编码的方向。
静音阈值曲线是指在安静环境下,人耳在各个频率所能听到的声音的阈值。
由于人耳对不同频率的解析度不同,MPEG-1/Audio将22kHz内可感知的频率范围以不同的编码层,以及不同取样频率,划分为23~26个临界频带。
PS:人耳对低频的解析度较好。
频域上的掩蔽效应是指幅值较大的信号会掩蔽频率相近的幅值较小的信号。
在一个很短的时间内,若出现了两个声音,SPL(Sound Pressure Level)较大的声音会遮蔽SPL较小的声音。时域遮蔽效应分为前向遮蔽(Pre-masking)和后向遮蔽(Post-masking),其中Post-masking的时间会比较长,约是Pre-masking的10倍。时域遮蔽效应有助于消除前回音。
音频编码的基本手段包括量化器和语音编码器。
量化是把离散时间上的连续信号转换成离散时间上的离散信号。量化过程追求的目标是最小化量化误差,并尽量减低量化器的复杂度。由于这两者本身就是一个矛盾,所以需要折衷考虑。
常见的量化器有均匀量化器、对数量化器、非均匀量化器,各自都有优缺点。均匀量化器的实现最简单,但性能最差,仅适应于电话语音。对数量化器比均匀量化器稍微复杂,也比较容易实现,其性能比均匀量化器好。非均匀量化器根据信号的分布情况来设计量化器,信号密集的地方进行细致量化,而稀疏的地方进行粗略量化。
语音编码器通常分为3种类型,包括波形编码器、声码器和混合编码器。波形编码器以构造出背景噪音在内的模拟波形为目标,作用于所有输入信号,因此会产生高质量的样值并且耗费较高的比特率,而声码器不会再生原始波形,这种编码器会提取一组参数,这组参数被送到接收端,用来导出语音所产生的模拟波形,但声码器语音质量不够好。混合编码器融合了波形编码器和声码器的长处。
波形编码器的设计独立于信号,适用于各种信号的编码而不限于语音,主要包括时域编码和频域编码。时域编码包括PCM、DPCM、ADPCM等。
PCM是最简单的编码方式,仅仅对信号进行离散和量化,通常采用对数量化。差分脉冲编码调制(Differential Pulse Code Modulation,DPCM)只对样本间的差异进行编码。前一个或多个样本用来预测当前样本值,并且用来做预测的样本值越多,预测值越精确。真实值和预测值之间的差值叫做残差,是编码的对象、自适应差分脉冲编码调制(Adaptive Differential Pulse Code Modulation,ADPCM),在DPCM的基础上,根据信号的变化,适当调整量化器和预测器,使预测值更接近真实信号,残差更小,压缩效率更高。
频域编码是把信号分解成一系列不同频率的元素,并进行独立编码,包括子带编码和DCT编码。
子带编码(Sub-band Coding)是最简单的频域编码技术,是将原始信号由时间域转变为频率域,然后将其分割为若干子频带(简称子带),并对其分别进行数字编码的技术。它是利用带通滤波器(BPF)组把原始信号分割成若为子频带(如n个),然后通过等效于单边带调幅的调制特性,将各子带搬移到零频率附近,分别经过BPF(共n个)之后,再以规定的速率(奈奎斯特速率)对各子带输出信号进行取样,并对取样数值进行通常的数字编码,共设置n路数字编码器。将各路数字编码信号送到多路复用器,最后输出子带编码数据流。对不同的子带可以根据人耳感知模型,采用不同的量化方式,以及对子带分配不同的比特数。
离散余弦(Discrete Consine Transform,DCT)经常用于信号和图像数据的压缩。经过DCT后的数据能量非常集中,一般只有左上角的数值非零的,也就是能量都集中在离散余弦变换后的直流和低频部分,这样非常有助于数据压缩。
声码器的数码率已经降到2400或1200b/s,甚至更低。合成后语音质量有较大提高。中国于20世纪50年代末开始研制声码器,并用于数字通信。
声码器根据语音信号某种模型进行语音分析,是压缩通信频带和进行保密通信的有力工具。在传输中只利用模型参数,在编译码时利用模型参数估计采用语音合成技术的语音编译器。
声码器在发送端对语音信号进行分析,提取语音信号的特征参量加以编码和加密,已取得和信道的匹配,经信息通道传递到接收端,再根据收到的特征参量恢复原始语音波形。分析可在频域中进行,对语音信号进行频谱分析,鉴别清浊音,测定浊音基频,进而选取清浊判断、浊音基频和频谱包络做维护特征参量加以传送。分析也可在时域中进行,利用其周期性提取一些参数进行线性预测,或对语音信号进行相关分析。根据工作原理,声码器可以分成:通道式声码器、共振峰声码器、图案声码器、线性预测声码器、相关声码器、正交函数声码器,主要用于数字电话通信,特别是保密电话通道。
波形编码器试图保留被编码信号的波形,能以中等比特率(32kb/s)提供高品质语音,但无法应用在低比特率场所。声码器试图产生在听觉上与被编码信号相似的信号,能以低比特率提供可以理解的语音,但是所形成的的语音听起来不自然。混合编码器结合了二者的优点,具体包括以下几个特点。
(1)RELP(Residual Excited Linear Prediction),在线性预测的基础上,对残差进行编码。其机制只传输小部分残差,在接收端重构全部残差,把基带的残差进行复制。
(2)MPC(Multi-pulse Coding),对残差去除相关性,用于弥补声码器将声音简单分为voiced和unvoiced而没有中间状态的缺陷。
(3)MBE(Multiband Excitation),即多带激励,其目的是避免CELP的大量运算,以便获得比声码器更高的质量。
常见的音频编码算法有OPUS、AAC、Vorbis、Speex、iLBC、AMR、G.711等。OPUS的性能好,质量高,但由于应用时间短,暂时还没有普及,并且不支持RTMP协议。AAC属于有损压缩算法,其目的是取缔MP3,压缩率很高、但还能接近原始的质量。MPEG-4标准出现后,加入了SBR技术和PS技术,目前常用规格有AAC LC、AAC HE V1、AAC HE V2。其中AAC LC具有低复杂度的特点,码率为128kb/s。AAC HE V2采取AAC+SBR+PS,由于声道间相同的性质很多,所以对于其他声道只需存储一些差异性的特征。AAC格式分为ADIF和ADTS。常见的AAC编码库有Libfdk_AAC、FFmpeg AAC、libfaac、libvo_aacenc等。
深度学习领域的学术论文很多事关于计算机视觉和自然语言处理的,而音频分析(包括自动语音识别、数字信号处理、音乐分类、标签、生成)领域的运用也逐渐收到了学者们的关注。目前最流行的机器学习系统,如小布助手等,都是构建于音频信号提取模型之上的。很多研究人员也在音频分类、语音识别、语音合成等任务上不断努力,构建了许多工具分析、探索、理解音频数据。
音频深度学习主要从语音、音乐和环境声(Environmental Sounds)3个领域出发,分析它们之间的相似点和不同点,以及一些跨领域的通用方法描述。在音频特征表示和网络模型方面进行了详细的分析,对每个领域的技术演进及深度学习应用场景进行了大概的描述。截至目前,深度学习历经3次浪潮,第1次是1957年的感知算法的提出;第2次是1986年反向传播算法的提出;第3次2012年深度学习在图像识别领域上的成功突破,促使深度学习的发展呈现了蓬勃发展的景象,并广泛应用于其他领域。如基因组学、量子化学、自然语言处理、推荐系统等。
相比图像处理领域,声音信号处理领域是深度学习成功应用的又一个大方向,尤其是语音识别,很多大公司在研究这个方向。声音信号是一维的序列数据,尽管可以通过FFT这样的频域转换算法转换为二维频谱,但它的两个维度也有特定的含义(纵轴表示频率,横轴表示时间帧)。
一般情况下,可根据任务目标的类型划分为不同的任务类型。目标可以是一个全局的单标签,可以是每个时间帧都有一个标签,也可以是一个自由长度的序列。每个标签可以为一个单一的类别,可以为多个类别,也可以是一个数值。声音信号分析任务可以划分为两个属性,包括预测的标签数量(左)和标签的类型(右)。预测一个全局的单标签的任务成为序列分类(Sequennce Classification),这个标签可以为一个语音、说话人、音乐键或者声音场景等。当目标为多个类别的集合时,称为多标签序列分类(Multi-label Sequence Classification)。当目前是一个连续的数值时,称为序列回归(Sequence Regression)。实际上,回归任务通常是可以离散化并且可以转化为分类任务的。
在音频信号处理领域,构建适当的特征表示和分类模型通常被作为两个分离的问题。这种做法的一个缺点是人工构建的特征可以对目标任务不是最优的。深度神经网络具有自动提取特征的能力,因此可以将上述两个问题进行联合优化。如在语音识别中,Mohamed等认为深度神经网络可在底层提取一些适应说话人的特征,而在高层提取类别间的判别信息。深度学习的表征能力需要庞大的数据来支撑。
声音处理领域中,与语音相关的开源数据集有很多,尤其是英文的;与音乐相关的开源数据集也有很多,如Million Song Dataset和MusicNet;与环境声相关的数据集最大的就是AudioSet了,超过200万个音频片段,但是基本都是Weakly-label的。但实际使用中,有价值的数据还是很有限,尤其是对于环境声来讲。
语音识别指的是将语音信号转化成文字序列,它是所有基于语音交互的基础。对于语音识别而言,高斯混合模型(GMM)和隐马尔可夫模型(HMM)曾占据了几十年的发展史。
声源识别可以利用多通道信号对声源位置进行跟踪和定位。跟踪和定位的主要设备条件是话筒阵列,通常包括线性阵列、环形阵列和球形阵列等。声源分离是指的是在多声源混合的信号中提取单一的目标声源,主要应用在一些稳健声音识别的预处理及音乐编辑和重谱。声音增强通常为语音增强,指的是通过减小噪声来提高语音质量,主要技术是去噪自编码器、CNN、RNN、GAN等。
声音深度学习非常复杂,这里列举10个常见的处理任务。
音频分类是语音处理领域的一个基本问题。需要从音频中提取特征,然后判断具体属于哪类。现在已有许多优秀的音频分类应用,如 Genre Classification、Instrument Recoginition和Artist Identification等。解决音频分类问题的常用方法是预处理音频输入以提取有用的特征,然后在其应用分类算法。
音频指纹识别的目的是从音频中提取一段特定的数字摘要,用于快速识别该段音频是否来自音频样本,或从音频库中搜索出带有相同数字摘要的音频。
自动音乐标注是音频分类的升级版。它包含多个类别,一个音频可以同时属于不同类,也就是有多个标签。自动音乐标注的潜在应用为音频创建元数据,以便日后进行搜索。
音频分割,即根据定义的一组特征将音频样本分割成段。音频分割是一个重要的预处理步骤,它可以将一个嘈杂而冗长的音频信号分割成短小、均匀的段落,再进行序列建模。目前它的应用时心音分割,即识别心脏的特定信号,帮助诊断心血管疾病。
音源分离就是从一堆混合的音频信号中分离出来自不同音源的信号,它最常见的应用之一就是识别并翻译音频中的歌词。
节拍跟踪的目标就是跟踪音频文件中每个节拍的位置,它为这项耗时耗力的任务提供了一种自动化的解决方案,因此深受视频剪辑、音乐编辑等群体的欢迎。
音乐推荐也是一种应用场景,为每个人推荐符合其口味的音乐。表面上它是一种根据用户收听历史定制个性化歌单的技术,本质上是一种信息处理技术。
音乐信息检索是音频处理中最困难的任务之一,实质上是建立一个基于音频数据的搜索引擎。
音乐转录(Music Transcription)是另一个非常有挑战性的音频处理任务,它包括注释音频和创建一个“表”,以便于之后为它生成音乐。
音符起始点检测是分析音频/建立音乐序列的第一步,对于以上提到的大多数任务而言,执行音符起始点检测是必要的。