音频基本概念


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

1. 音频的基本概念


声音的三要素:频率、振幅、波形

  • 1.1 频率

    声波的频率,即声音的音调,人类听觉的频率(音调)范围为20Hz--20KHz


  • 1.2. 振幅

    即声波的响度,通俗的讲就是声音的高低,一般男生的声音振幅(响度)大于女生。


  • 1.3 波形

    即声音的音色,同样的频率和振幅下,钢琴和小提琴的声音听起来完全不同的,因为他们的音色不同

    波形决定了其所代表声音的音色。音色不同是因为它们的介质所产生的波形不同。

image.png


声音的本质(音调、音量、音色)

音调:频率

音量:振幅

音色:与材质有关,谐波(不规则的正玄波)


几个基本概念

  • 比特率

    表示经过编码(压缩)后的音频数据每秒钟需要用多少个比特来表示,单位常为kbps。


  • 响度和强度

    声音的主观属性响度表示的是一个声音听来有多响的程度。

    响度主要随声音的强度而变化,但也受频率的影响。

    总的说,中频纯音听来比低频和高频纯音响一些。


  • 采样和采样率:

    采样是把连续的时间信号,变成离散的数字信号。采样率是指每秒钟采集多少个样本。

image.png


奈奎斯特采样定律:

    Nyquist采样率大于或等于连续信号最高频率分量的2倍时,采样信号可以用来完美重构原始连续信号。




2. 数字音频

2.1 采样

    所谓的采样就是只在时间轴上对信号进行数字化

    根据奈奎斯特定律(也称作采样定律),按照比声音最高频率的2倍以上进行采样。

    人类听觉的频率(音调)范围为20Hz--20KHz。所以至少要大于40KHz。

    采样频率一般为44.1kHz,这样可保证声音达到20kHz也能被数字化。

    44.1kHz就是代表1秒会采样44100次

image.png


2.2 量化

    具体每个采样又该如何表示呢?

    这就涉及到量化

    量化是指在幅度轴上对信号进行数字化

    如果用16比特位的二进制信号来表示一个采样,那么一个采样所表示的范围即为【-32768,32767】。

image.png


2.3 编码

    每一个量化都是一个采样,将这么多采样进行存储就叫做编码

    所谓编码,就是按照一定的格式记录采样和量化后的数字数据,比如顺序存储或者压缩存储,等等。


    通常所说的音频裸数据格式就是脉冲编码调制(PCM)数据。

    描述一段PCM数据通常需要以下几个概念:量化格式(位深,通常16bit)、采样率声道数

    对于声音格式,还有一个概念用来描述它的大小,即比特率,即1秒内的比特数目,用来衡量音频数据单位时间内的容量大小。


2.4 概念整理

1. 采样率:

    采样率,简单来说就是每秒获取声音样本的次数

    声音是一种能量波,其具有音频频率和振幅的特征。

    那么采样的过程,其实就是抽取某点的频率值。


    那么,如果我们在一秒钟抽取的点越多,获得的信息也就越多; 采样率越高,声音的质量就越好。

    但是并不是说采样率越高就越好了,因为人耳听觉的范围为20Hz ~ 20kHz。

    一般来讲,44100HZ 的采样率已经能够满足基本的要求了。


2.采样数

    采样数采样率时间有关系,比如采样率为44100Hz,采样时间为1s,那么1s内的采样数就为44100个。


3. 采样位数

    采样位数也叫采样大小或者量化位数。

    量化深度表示每个采样点用多少比特表示,音频的量化深度一般为8、16、32位等。

    例如:量化深度为8bit时,每个采样点可以表示256个不同的量化值,

    而量化深度为16bit时,每个采样点可以表示65536个不同的量化值。


    量化深度的大小影响到声音的质量,显然,位数越多,量化后的波形越接近原始波形,声音的质量越高,而需要的存储空间也越多;位数越少,声音的质量越低,需要的存储空间越少。

    CD音质采用的是16 bits。


4. 通道数:

    即声音的通道数目,常见的有单声道双声道或者立体声道。


    单声道的声音只能使用一个扬声器发声,或者也可以处理成两个扬声器输出同一个声道的声音,当通过两个扬声器回放单声道信息的时候,我们可以明显感觉到声音是从两个音箱中间传递到我们耳朵里的,无法判断声源的具体位置。


    双声道就是有两个声音通道,其原理是人们听到声音时可以根据左耳和右耳对声音相位差来判断声源的具体位置。声音在录制过程中被分配到两个独立的声道,从而达到了很好的声音定位效果。


    记录声音时,如果每次生成一个声波数据,称为单声道;每次生成两个声波数据,称为双声道(立体声)。立体声(双声道)存储大小是单声道文件的两倍。


5. 音频帧:

    音频跟视频不太一样,视频的每一帧就是一副图像,但是因为音频是流式的本身是没有一帧的概念的

    而且有些时候确实没有办法说一帧怎么怎么样。

    比如对于PCM流来说,采样率为44100Hz,采样位数为16,通道数为2,那么一秒的音频固定大小的:44100*16*2 / 8字节。

    但是人们可以规定一帧的概念,比如amr帧比较简单,它规定每20ms的音频一帧


6. 比特率(码率)

    指音频每秒钟播放的数据量,单位为bit,例如对于PCM流,采样率为44100Hz,采样大小为16,声道数为2,那么码率为:44100* 16 * 2 = 1411200 bps。


7. 关于音频文件大小的计算:

    文件大小 = 采样率 * 录音时间 * 采样位数 / 8 * 通道数。


8. PCM流

    简单说下PCM流,后面也会详细介绍PCM流,PCM流就是原始收录声音时,数据会保存到一串buffer中,这串buffer,就采用了PCM格式存储的。

    通常把音频采样过程也叫做脉冲编码调制编码,即PCM(Pulse Code Modulation)编码,采样值也叫PCM值。 

    编码过程:模拟信号->抽样->量化->编码->数字信号

    在windows中,通过WaveIn 或者CoreAudio 采集声音,得到的原始数据就是一串PCM格式的buffer。后面会详细说明PCM流。



3、音频处理基础


3.1噪声抑制(Noise Suppression)

    手机等设备采集的原始声音往往包含了背景噪声,影响听众的主观体验,降低音频压缩效率。

    以Google著名的开源框架Webrtc为例,我们对其中的噪声抑制算法进行严谨的测试,发现该算法可以对白噪声和有色噪声进行良好的抑制。满足视频或者语音通话的要求。

    其他常见的噪声抑制算法如开源项目Speex包含的噪声抑制算法,也有较好的效果,该算法适用范围较Webrtc的噪声抑制算法更加广泛,可以在任意采样率下使用。


3.2回声消除(Acoustic Echo Canceller)

    在视频或者音频通话过程中,本地的声音传输到对端播放之后,声音会被对端的麦克风采集,混合着对端人声一起传输到本地播放,这样本地播放的声音包含了本地原来采集的声音,造成主观感觉听到了自己的回声。


    以Webrtc为例,其中的回声抑制模块建议移动设备采用运算量较小的AECM算法,有兴趣的读者可以参考AECM的源代码进行研究,这里不展开介绍了。


3.3自动增益控制(Auto Gain Control)


    手机等设备采集的音频数据往往有时候响度偏高,有时候响度偏低,造成声音忽大忽小,影响听众的主观感受。

    自动增益控制算法根据预先配置的参数对输入声音进行正向/负向调节,使得输出的声音适宜人耳的主观感受。



3.4静音检测(Voice Activity Detection)


    静音检测的基本原理:计算音频的功率谱密度,如果功率谱密度小于阈值则认为是静音,否则认为是声音。静音检测广泛应用于音频编码、AGC、AECM等。


3.5舒适噪声产生(Comfortable Noise Generation)


    舒适噪声产生的基本原理:根据噪声的功率谱密度,人为构造噪声。

    广泛适用于音频编解码器。

    在编码端计算静音时的白噪声功率谱密度,将静音时段和功率谱密度信息编码。

    在解码端,根据时间信息和功率谱密度信息,重建随机白噪声。


    它的应用场景:完全静音时,为了创造舒适的通话体验,在音频后处理阶段添加随机白噪声。


4、音频采集的来源是什么,如何计算?

MediaRecorder.AudioSource.MIC 一般是麦克风


采样率(单位:赫兹)

    每秒钟音频采样点个数(8000/44100Hz),模拟信号数字化的过程,用0101来表示的数字信号


声道

  • AudioFormat.CHANNEL_IN_MONO 单声道,一个声道进行采样

  • AudioFormat.CHANNEL_IN_STEREO 双声道,两个声道进行采样


音频采样精度

    指定采样的数据的格式和每次采样的大小。


    数据返回格式为 PCM 格式

    每次采样的位宽为 16bit

    一般都采用这个 AudioFormat.ENCODING_PCM_16BIT(官方文档表示,该采样精度保证所有设备都支持)


比特率

    每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送数据速度越快。

     比特率越大表示单位时间内采样的数据越多,传输的数据量越大。


每秒钟采样的大小

    采样率x采样大小x声道数

    每秒钟采样的大小=16bit(位宽) * 2(双通道) * 44100(每次采样的次数hz) = 1411200b=1411.2kbps

   


5、音频使用场景及应用:

    在现实生活中,音频(audio)主要用在两大场景中:语音(voice)音乐(music)

    语音主要用于沟通通信,如打电话,现在由于语音识别的发展,人机语音交互也是语音的一个应用,目前正在风口上,好多大厂都推出了智能音箱

    音乐主要用于欣赏,如音乐播放。


音频开发的主要应用:

  • 音频播放器

  • 录音机

  • 语音电话

  • 音视频监控应用

  • 音视频直播应用

  • 音频编辑/处理软件(ktv音效、变声, 铃声转换)

  • 蓝牙耳机/音箱


音频开发的具体内容:

  1. 音频采集/播放;

  2. 音频算法处理(去噪、VAD检测、回声消除、音效处理、功放/增强、混音/分离,等等);

  3. 音频的编解码和格式转换;

  4. 音频传输协议的开发(SIP,A2DP、AVRCP,等等)。


三大技术标准组织制定压缩标准:

  • ITU:主要制定有线语音的压缩标准(g系列),有g711/g722/g726/g729等。

  • 3GPP:主要制定无线语音的压缩标准(amr系列等),有amr-nb/amr-wb。

  • MPEG:主要制定音乐的压缩标准,有11172-3,13818-3/7,14496-3等。

      

 



6. 常见音频格式

  • 1. WAV格式,是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持,压缩率低。


  • 2. MIDI是Musical Instrument Digital Interface的缩写,又称作乐器数字接口,是数字音乐/电子合成乐器的统一国际标准。它定义了计算机音乐程序、数字合成器及其它电子设备交换音乐信号的方式,规定了不同厂家的电子乐器与计算机连接的电缆和硬件及设备间数据传输的协议,可以模拟多种乐器的声音。MIDI文件就是MIDI格式的文件,在MIDI文件中存储的是一些指令。把这些指令发送给声卡,由声卡按照指令将声音合成出来。


  • 3. MP3全称是MPEG-1 Audio Layer 3,它在1992年合并至MPEG规范中。MP3能够以高音质、低采样率对数字音频文件进行压缩。应用最普遍。


  • 4. MP3Pro是由瑞典Coding科技公司开发的,其中包含了两大技术:一是来自于Coding科技公司所特有的解码技术,二是由MP3的专利持有者法国汤姆森多媒体公司和德国Fraunhofer集成电路协会共同研究的一项译码技术。MP3Pro可以在基本不改变文件大小的情况下改善原先的MP3音乐音质。它能够在用较低的比特率压缩音频文件的情况下,最大程度地保持压缩前的音质。


  • 5. WMA (Windows Media Audio)是微软在互联网音频、视频领域的力作。WMA格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。此外,WMA还可以通过DRM(Digital Rights Management)保护版权。


  • 6. RealAudio是由Real Networks公司推出的一种文件格式,最大的特点就是可以实时传输音频信息,尤其是在网速较慢的情况下,仍然可以较为流畅地传送数据,因此RealAudio主要适用于网络上的在线播放。现在的RealAudio文件格式主要有RA(RealAudio)、RM(RealMedia,RealAudio G2)、RMX(RealAudio Secured)等三种,这些文件的共同性在于随着网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较宽敞的听众获得较好的音质。


  • 7. Audible拥有四种不同的格式:Audible1、2、3、4。Audible.com网站主要是在互联网上贩卖有声书籍,并对它们所销售商品、文件通过四种Audible.com 专用音频格式中的一种提供保护。每一种格式主要考虑音频源以及所使用的收听的设备。格式1、2和 3采用不同级别的语音压缩,而格式4采用更低的采样率和MP3相同的解码方式,所得到语音吐辞更清楚,而且可以更有效地从网上进行下载。Audible 所采用的是他们自己的桌面播放工具,这就是Audible Manager,使用这种播放器就可以播放存放在PC或者是传输到便携式播放器上的Audible格式文件。


  • 8. AAC实际上是高级音频编码的缩写。AAC是由Fraunhofer IIS-A、杜比和AT&T共同开发的一种音频格式,它是MPEG-2规范的一部分。AAC所采用的运算法则与MP3的运算法则有所不同,AAC通过结合其他的功能 来提高编码效率。AAC的音频算法在压缩能力上远远超过了以前的一些压缩算法(比如MP3等)。它还同时支持多达48个音轨、15个低频音轨、更多种采样率和比特率、多种语言的兼容能力、更高的解码效率。总之,AAC可以在比MP3文件缩小30%的前提下提供更好的音质。


  • 9. Ogg Vorbis 是一种新的音频压缩格式,类似于MP3等现有的音乐格式。但有一点不同 的是,它是完全免费 、开放和没有专利限制的。Vorbis 是这种音频压缩机制的名字,而Ogg则是一个计划的名字,该计划 意图设计 一个完全开放性的多媒体系统。VORBIS也是有损压缩,但通过使用更加先进的声学模型去减少损失,因此,同样位速率(Bit Rate)编码的OGG与MP3相比听起来更好一些。


  • 10. APE是一种无损压缩音频格式,在音质不降低的前提下,大小压缩到传统无损格式 WAV 文件的一半。


  • 11. FLAC即是Free Lossless Audio Codec的缩写,是一套著名的自由音频无损压缩编码,其特点是无损压缩






7. 混音技术介绍

    混音,顾名思义,就是把两路或者多路音频流混合在一起,形成一路音频流。

    混流,则是指音视频流的混合,也就是视频画面和声音的对齐,也称混流。

    

并非任何两路音频流都可以直接混合。

两路音视频流,必须符合以下条件才能混合:

  • 格式相同,要解压成 PCM 格式。

  • 采样率相同,要转换成相同的采样率。主流采样率包括:16k Hz、32k Hz、44.1k Hz 和 48k Hz。

  • 帧长相同,帧长由编码格式决定,PCM 没有帧长的概念,开发者自行决定帧长。为了和主流音频编码格式的帧长保持一致,推荐采用 20ms 为帧长。

  • 位深(Bit-Depth)或采样格式 (Sample Format) 相同,承载每个采样点数据的 bit 数目要相同。

  • 声道数相同,必须同样是单声道或者双声道 (立体声)。这样,把格式、采样率、帧长、位深和声道数对齐了以后,两个音频流就可以混合了。


回声消除、噪音抑制和静音检测等处理

    在混音之前,还需要做回声消除、噪音抑制和静音检测等处理。

    回声消除和噪音抑制属于语音前处理范畴的工作。

    在编码之前,采集、语音前处理、混音之前的处理、混音和混音之后的处理应该按顺序进行。


    静音抑制(VAD,Voice Activity Detect)可做可不做。

    对于终端混音,是要把采集到的主播声音和从音频文件中读到的伴奏声音混合。

    如果主播停顿一段时间不发出声音,通过 VAD 检测到了,那么这段时间不混音,直接采用伴奏音乐的数据就好了。

    然而,为了简单起见,也可以不做 VAD。

    主播不发声音的期间,继续做混音也可以(主播的声音为零振幅)。


音频重采样

        重采样即是将音频进行重新采样得到新的采样率的音频。


重采样的原因

    音频系统中可能存在多个音轨,而每个音轨的原始采样率可能是不一致的。

    比如在播放音乐的过程中,来了一个提示音,就需要把音乐和提示音都混合到codec输出,音乐的原始采样率和提示音的原始采样率可能是不一致的。


    问题来了,如果codec的采样率设置为音乐的原始采样率的话,那么提示音就会失真。

    因此最简单见效的解决方法是:codec的采样率固定一个值(44.1KHz/48KHz),所有音轨都重采样到这个采样率,然后才送到codec,保证所有音轨听起来都不失真



回声消除

    在即时通讯应用中,需要进行双方,或是多方的实时语音交流,在要求较高的场合,通常都是采用外置音箱放音,这样必然会产生回音,即一方说话后,通过对方的音箱放音,然后又被对方的Mic采集到回传给自己(如下图所示)。如果不对回音进行处理,将会影响通话质量和用户体验,更严重的还会形成震荡,产生啸叫。

 

    回声消除就是在Mic采集到声音之后,将本地音箱播放出来的声音从Mic采集的声音数据中消除掉,使得Mic录制的声音只有本地用户说话的声音。


    传统的回声消除都是采用硬件方式,在硬件电路上集成DSP处理芯片,如我们常用的固定电话、手机等都有专门的回音消除处理电路,而采用软件方式实现回声消除一直存在技术难点,包括国内应用最广泛的QQ超级语音,便是采用国外的GIPS技术,由此可见一般。


    回声消除已经成为即时通讯中提供全双工语音的标准方法。

    声学回声消除是通过消除或者移除本地话筒中拾取到的远端的音频信号来阻止远端的声音返回去的一种处理方法。

    这种音频的移除都是通过数字信号处理来完成的。回声消除技术是数字信号处理的典型应用之一。


    回声消除的基本原理是以扬声器信号与由它产生的多路径回声的相关性为基础,建立远端信号的语音模型,利用它对回声进行估计,并不断修改滤波器的系数,使得估计值更加逼近真实的回声。然后,将回声估计值从话筒的输入信号中减去,从而达到消除回声的目的。




好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***