聲音是什么
聲音(sound)是由物體振動產生的聲波。聲音作為一種機械波,頻率在20 Hz~20 kHz之間的聲音是可以被人耳識別的。—–百度百科夫斯基
敲黑板:波、人耳識別頻率:20 Hz~20 kHz
但是,每個人還是有差別的,想測試你的耳朵到底是龍精虎猛還是老態龍鐘(這小成語用的,那叫一個爐火純青),下面的視頻可以告訴你答案。?不多逼逼,盤他
音頻錄制
最簡單的音頻錄制流程為:
設備采集獲取模擬信號 —》模數轉換 —》存儲(播放、傳輸等)
播放端流程相反:
音頻文件 —》數模轉換 —》播放器播放
模數轉換
模擬信號轉化為數字信號的流程(心疼大學老師一秒鐘):
如上圖:
采樣: 對模擬信號隔一定的時間間隔取一個點(圖中交點)
量化: 給縱坐標加刻度,根據近似取整數值,使采樣得到的點的值都是整數。
編碼:對量化取得的整數值按二進制進行編碼
數字信號:把編碼得到的 0 和 1 的序列變現為高低電平的信號
上述整個模數轉換的過程稱為:脈沖編碼調制(PulseCodeModulation),簡稱PCM。由上面的模數轉換可知,PCM 格式文件存儲的內容實際上就是編碼得到的序列。
采樣率:
每秒的采樣次數。
對于聲音來說,從上圖采樣的過程可以看的出來,采樣率越高,即每秒內的采樣點越多,采樣點越密集,也就意味著離散信號對模擬信號的還原度越高。
合適的采樣率
采樣點無限多即連成原來的模擬信號曲線。當然,無限多的點無限多的數據存儲和 cpu 也不允許啊。那什么樣的采樣率比較合適呢?
答:活著不一定是為了死去,但錄制最終一定是為了播放。采樣編碼為了存儲處理和傳輸,最終還是要還原出模擬信號來播放。
根據 “奈奎斯特采樣理論”:當對被采樣的模擬信號進行還原時,其最高頻率只有采樣頻率的一半。(裝逼一定要用又黑又粗。。。。的文字)
換句話說:要想重構完整的模擬信號,采樣率要是模擬信號頻率的兩倍以上。— gray_dog3
鑒于前面敲黑板所講,人聽覺范圍:20 Hz -20 KHz。所以對于給人聽的音頻,采樣率要寧殺錯不放過,要大于40 KHz 才不會使人感覺到音質受損。
由此得出,合適的采樣率 一般大于 40 KHz,注意是一般,采樣率小一些高音會受損,不過除了對那些能聽出熱情火電和清冽水電的耳機黨外,略小應該也不明顯,平常 8k,16k 都有。
來自嚴謹黨的質問:為什么大多數音頻采樣率采用 44.1K?不是 40K,也不是 44K,非要帶個 0.1?
答:靠,你哪那么多為什么。
裝逼專用: 在高深莫測的數學領域有一個神奇的數字即 44100,前四個素數的平方的乘積 44100:2x2x3x3x5x5x7x7=44100
靠譜回答:歷史原因,早期錄像機:245 掃描線,一行 3 個數據塊,60 場頻:245x3x60=44100,現在也有在推 48kHz,甚至 96kHz 的。
采樣深度:
即量化時縱坐標的量化粒度。
在上圖模擬信號中,縱坐標代表的是聲音的響度,即音量。
由上圖量化過程可知,當量化的粒度越細,離散點取的值也就越接近模擬信號實際的值,如果量化時,采樣深度為 1bit,即量化只能為 1 和 0,那每首歌聽起來都像忐忑,一驚一乍的,要么播放最大聲音,要么沒有聲音。
只有采樣深度越深,即量化的粒度越細,采樣出來的數據,才更接近實際的音量。
現在一般用 16 位來表示一個采樣數據的音量大小。
敲黑板 16 位采樣深度,即一個采集的樣本點中,音量大小用 16 位二進制數來表示音量大小。
聲道和立體聲
友情提示:聲音,音頻,但是聲道就只能讀作聲道,不能讀作音道
單聲道 Monaural:只有一個采集器采集音頻做以上圖中的流程處理。
立體音 Stereophonic:兩個或兩個以上聲道數,多個設備錄音,然后數據編碼整合到一起。常見的有 雙聲道 4.1 環繞立體聲(四個音源加一個低音喇叭來加強低音)5.1 、7.1 環繞立體聲(杜比音效:裝逼知識點)
PCM 數據
有了以上的認識,媽媽再也不用擔心我看不懂 pcm 格式了。不廢話,直接上圖:
你沒有看錯,就是這么簡單。對于 8 位采樣深度的單聲道,8 位表示一個采樣的音量,都是這樣的采樣數據。
pcm 就是原始數據,沒有 header,全是 body,滿滿的干貨。雙聲道就是兩個聲道采樣序列交替排列。
播放 PCM
由上面格式也可以看出 pcm 沒有 header,沒有采樣率等信息,所以播放時需要告訴播放器:采樣率、采樣深度、聲道數。
只有有了這些信息,播放器才知道讀入 pcm 文件流的速度,以及讀入數據該如何進行數模轉換。
通常播放 pcm 格式的音頻文件可以用 VLC 播放器,我在 mac 上使用的,windows 的百度下,播放應該很簡單。就是這貨:
播放命令:
/Applications/VLC.app/Contents/MacOS/VLC –demux=rawaud –rawaud-channels 1 –rawaud-samplerate 44100 record.pcm
命令中 samplerate 采樣率,channels 聲道數,現在都默認 16 位的,具體有 8 位的需求可以百度下。
本文作者:知乎白駝山中年大叔