多媒體開發(9):聲音采集的概念 | 振幅 | 頻率 | 共振 | 電平化
而本文,要介紹的是聲音采集的一些流程與概念。
聲音的采集流程與概念,是枯燥的,你如果不想了解的話,到這裏就可以退出閱讀了。
但是,小程也會盡量說一些有趣的現象來緩解這種枯燥。
聽得到的,或聽不到的聲音,抽象來說,都是模擬信號,也可以形象一點,叫能量波,因為聲音是有能量的,而且有大小變化,呈波形狀。平常聽到的聲音都是復雜的波形,不會像單一頻率的聲音那麽幹凈(比如正弦波、方波之類),但為了便於分析,經常會抽象為簡單的波形。
註意,對於單頻率的聲音,能量雖然有大小變化,但這種變化並非一定聽得出來。比如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去表示,並且樣本彼此關聯。
總結一下,本文主要介紹的是聲音的采集過程以及相關的概念,同時也介紹了聲音的振幅與頻率的概念。
多媒體開發(9):聲音采集的概念 | 振幅 | 頻率 | 共振 | 電平化