之前介绍通过ffmpeg程序来录制声音或图像,这个办法是一个操作的过程,很少涉及到概念上的东西。
而本文,要介绍的是声音采集的一些流程与概念。
声音的采集流程与概念,是枯燥的,你如果不想了解的话,到这里就可以退出阅读了。
但是,小程也会尽量说一些有趣的现象来缓解这种枯燥。
听得到的,或听不到的声音,抽象来说,都是模拟信号,也可以形象一点,叫能量波,因为声音是有能量的,而且有大小变化,呈波形状。平常听到的声音都是复杂的波形,不会像单一频率的声音那么干净(比如正弦波、方波之类),但为了便于分析,经常会抽象为简单的波形。
注意,对于单频率的声音,能量虽然有大小变化,但这种变化并非一定听得出来。比如400hz,相当于小蜜蜂嗡嗡的频率,它是一个正弦波,它的能量会变大变小,但小程是听不出变化的,因为频率太高了,这跟独立的图片以较高帧率显示就成了连续的,是一个道理。
声音有两个维度是很重要的,一个是能量,一个是频率。能量以时间为横向坐标,即某个时间点对应一个能量值(也叫振幅或气压),表现出来的就是波形图,也叫时域表示。
说到能量,你一定听过“狮吼功”,有想起“包租婆”吗?
狮子吼天下至刚至强的少林七十二绝学之一。 清啸之下,犹如讯雷疾泻声闻数里,令敌肝胆剧烈,心惊胆战,震慑人心的不可思议之威力。
-- 小说<<狮子吼>>
包租婆的狮吼功大家都见识过了,如果加上大喇叭,杀手榜第一的火云邪神都不是她对手。
大喇叭是能量放大器,能量越大杀伤力越强。
声音,是能量波,能推动耳膜,耳膜振动就听到声音。这个推动,跟用手去推动,是一个道理,都需要力道。
声音的力道(也叫音量)用分贝来衡量。
1分贝是大部分人能分辨出的最小的声音,相当于3米外一只蚊子发出的嗡嗡声。
读者平常面对面说话的音量是50分贝,它的能量是1分贝声音的大约10万倍,注意这不一个线性变化的关系。
电钻打孔的音量大约有100分贝。
演唱会现场音量可以去到137分贝,这时耳朵可以会疼。
近距离炮弹产生的声音可达150分贝,这样强度的声音足以撕裂鼓膜。
残暴的科学家曾经用高达180分贝的声音摧残过小白鼠,发现这样的声音可以震碎它们的肝脏。
所以说,只要你喊得足够大声,世界都可以摧毁。但是,一般人,都很难去到100分贝,但借助小喇叭是有可能的。
注意,尖叫时的高音,只说明频率高,频率高会让耳朵觉得不舒服,但不会去到撕裂耳膜的程度,因为人声在高频率时,能量一般是很小的。如果既能高频率又能大能量,又能高音准,那就是“我是歌手”。
注意,声音的大小(即响度)是一个心理感知的东西,很难说只受振幅的影响,很可能还跟频率(音调高低)及持续的时间,甚至对比度都有关系,所以不能说声音大小就是振幅,只能说振幅影响了声音大小。
那么在嗓门不够大的情况下,还有办法让“破坏力”大起来吗?
我们还有一招,就是共振。
能量用的是振幅,则共振利用的是声音的另一个维度--频率。
话说世间万物都有自然的振动频率,叫固有频率,就是一秒内固定会振动几次。如果推动物体的频率与物体的固定频率接近或等同,就叫共振。
共振有多可怕?
据说,特斯拉曾有一次满不在乎地告诉记者,他可以跑到帝国大厦,在很短时间内将它化为一堆碎砖烂瓦。而所用的机械只是一个微小的振荡器而已。特斯拉使用振荡器进行机械共振实验,曾使周围的一些建筑物产生了共振,最后他测出了房子的共振频率,但是同时他也发现了这个实验存在巨大的危险,连警察也被引来了。
尼古拉·特斯拉是谁?据说是最接近神的人,或者被叫作外星人或未来人。是真是假,由各位读者判断。
来看几个共振的实例。
摘录,因大风引起的共振而塌毁的塔柯姆大桥:
塔柯姆大桥位于美国华盛顿州的塔柯姆海峡,1940年7月1日建成通车,在大桥垮塌前,
人们早就观察到这座桥的怪异之处,即使只是微风,这座桥也起伏的厉害,
于是,它有了一个外号——舞动的格蒂。在大桥上行驶的车辆,会由于大桥上下起伏,导致小车一会儿看得见,
一会儿看不见,而坐在车里的人,简直就像在坐过山车。
当时,一个地方性的运动就是在有风的天气到塔柯姆大桥行车或走路。
一些人为塔柯姆大桥的怪异“行为”感到不安,但是很多人却没当回事。“舞动的格蒂”就这样潇洒地舞动了4个月,终于到了它谢幕的那一天。
1940年11月7日,那天的风速,还不到设计风速限值的三分之一,
但塔柯姆大桥还是在风中四分五裂,舞完了它短暂的一生。
摘录,因共振引起的火箭爆炸:
1995年1月26日,我国“长征2号E”运载火箭发射美国研制的“亚太2号卫星”时,
由于美方没有告之卫星的共振频率,而凑巧卫星的共振频率与火箭整流罩的
共振频率相同,发射时,由于高空风速风向的剧烈变化,
引起共振,造成星箭爆炸。
《加油!向未来》第二季节目中,黄绮珊在舞台上一展“狮吼功”,只见随着她的高音响起,舞台一侧十几个玻璃杯同时被震碎,其画面之震撼令现场观众全都目瞪口呆。
这个震碎玻璃的例子还是有疑点的,但这里不细说。石英玻璃的固定频率在20khz以上(其它材质的另说),人声达到这个频率也是有可能的,但达到这个频率后还要持续,并且一定要有较大的能量,才可能把玻璃震碎。
最后,理解共振原理的最好的例子就是荡秋千:
在秋千荡到最高点,推它一下,它就会越荡越高,当然这个推的频率跟秋千的频率要一致。这就是共振效果。
以上,小程介绍了声音的能量与频率两个维度的有趣的现象,那接下来就是正文了。
之前介绍用ffmpeg来录制声音的,是应用层的实现,这次要介绍原理性的东西,而且不涉及录音师之类的工作,比如布mic、配音、拟音之类。
自然界的声音转换成数字编码,要经过电平化、放大、采样、量化、编码。
(一)电平化
比如,通过碳膜来对接声音。声音的能量推动话筒的碳膜,碳膜振动时触发跟它相连的电极,产生电信号。电平大小与碳膜的振幅相关,而这又与声音的能量(变化)有关。
(二)放大
通过话筒取到的电信号是微弱的,为了支持后续的处理,有必要通过放大电路把信号放大。
(三)采样
采样是模数转换(ADC)的过程,也就是把连续的电信号采样成离散的数值。
这里有一个概念叫采样率,采样率就是一秒钟一个声道采多少个样本。比如采样率为44100hz,则表示一秒钟一个声道采集了44100个样本(数值),如果一个样本用2个字节(即16bit)来表示,则对于双通道的同时采集(相当于两个话筒输入),一秒钟占的字节数是:44100*2*2=176400,约176kB,这样采集下去,如果不作处理,则大小不是一般的磁盘与带宽能够接受得了的,所以才会有编码压缩的引入。
那为什么不使用10hz来采集以减小体积呢?
因为10hz不能还原或逼近原模拟信号(采集后的数据,最终是要播放即转换成模拟信号的)。这里有一个采样定理,即如果想还原出模拟信号,则采样率不能低于模拟信号的最高频率的2倍,也就是对于最高频率的一次全振动内,至少也要采到两个点。对于人耳来说,听到的频率范围是20hz到20khz,所以可以认为最高的模拟信号的频率为20khz,那么采样的频率就要达到40khz才能保证还原模拟信号。
而至于常见的是44.1khz,而不是40khz,这跟索尼有关,当时索尼公司正是人生的巅峰,而他使用了这个值,行业就都跟风去了。
(四)量化与编码
采样得到样本后,用多少二进制位去表示它,这个就是量化,而多少位则为量化精度(位深)。
一般位深为16bit、24bit或32bit。
对于16bit,2^16=65536,20log(65536)约等于96dB,也就是16bit能表示96分贝的能量变化。从安静环境的30dB到演唱会的120dB,96dB都基本能覆盖上了。16bit时的1bit就相当于6dB。
24bit与32bit也是量化精度的选择,因为会比16bit更细腻,但占的空间也更大。
极端一点,如果选择1bit来表示会怎么样?
1bit只有两个值,即0跟1,那它对应的电平值就只有两个等级,比如0dB跟100dB,中间的音量都听不到,结果就是表示的0dB你听不到,而表示的100dB又基本不出现,于是就什么声音都听不到。如果用2bit来表现,就有4个值,对应的电平等级就有4级,但层次还是不分明,不能细腻地表示变化。
这里的编码是指采样后电平值的表示方式。
pcm(脉冲编码调制)是常用的音频编码方式,也就是对每个采样的样本,用最接近的电平值(电平值的范围由量化精度决定)去表示,每个样本互相独立。
pcm也表示编码格式。pcm编码格式在表示上,还可以细分为很多种,比如pcm_s16be、pcm_f32le、pcm_alaw之类。
显然,pcm编码是没有压缩的。
除了pcm编码格式(同时pcm也表示一种采集方式),还有一种有名的编码格式叫DSD,以44100的64倍的频率去采样,而每一个样本用1bit去表示,并且样本彼此关联。
总结一下,本文主要介绍的是声音的采集过程以及相关的概念,同时也介绍了声音的振幅与频率的概念。
原文地址:https://blog.51cto.com/13136504/2369398