「聲音」背後的原理(2) 取樣 量化和編碼

2021-10-25 03:29:10 字數 2423 閱讀 3739

2. 編碼

音訊處理的大致流程:

音訊——(採集裝置)

——模擬訊號(連續)

——(模數轉換器adc)

——數碼訊號(離散)

——編碼

——儲存於計算機

取樣的原理很簡單,就是按照固定的頻率對模擬訊號的振幅進行取值。這個頻率,便是取樣率,單位為赫茲,表示每秒鐘取得的取樣的個數

於乙個週期訊號,至少需要取樣兩次:波峰和波谷各取樣一次。

因此,給定乙個取樣率,我們能重建的週期訊號的頻率是該取樣率的一半(這個頻率叫做奈奎斯特頻率

好像講的比較清晰,但是其定義依舊比模糊,腦海裡也很難形成乙個具體的概念,比如,每次取樣到底做了什麼事?取樣的物件具體來說是什麼,是乙個質子還是全部的質子?具體是如何取樣的?取樣的時候波形是靜止的還是不斷變化的?一次取樣能採多大的範圍?

我想,這些歸根到底是對波形圖的理解不透徹造成的:

波形圖橫座標其實是質子的「座標」,其縱座標是質子的振幅。

波形圖表現的是在某一時刻各個質子不同振幅(位移量)曲線。

其實,音訊的取樣是按照固定的頻率,在時間軸上對模擬訊號的振幅進行取值。

關於取樣率

音訊屬於波,屬模擬訊號,取樣是把它變成離散的量。

如果波相當於曲線,取樣就相當於用n個點來描述這個曲線。

點越多(間隔是相同的),線就越平滑,越接近於最初的曲線。

音訊 - 曲線

取樣率 - 單位間隔點的個數

音質 - 相似度

聲音是連續的,連續就是可以切成1秒一段,然後再切成0.1秒一段,然後可以無限切下去都不會到盡頭。但是電腦記錄聲音是用數字,一組數字只能儲存某一時刻或瞬間的聲音(時刻,就是乙個無限小的時間點),所以電腦記錄聲音只能在0.0001秒(打個比方,不準確)的時候記錄一次,然後0.0002秒的時候再記錄一次,0.0003秒的時候再記錄一次……這樣可以把聲音儲存下來。這裡的取樣率就是10000次/秒。

最後用一張圖的理解:

音訊(波形)可以理解為乙個固定的參考,我們需要的描繪出這乙個波形,我們可以做的是每間隔一段時間(可能是0.0002秒),描繪波形圖上的乙個點。上圖所表示得到是:

在語音頻號中,絕大部分的資訊在10000hz以下,所以通常20000hz的取樣率足以保留這些資訊。但是,取樣率越高,也往往意味著越大的計算量、儲存量以及網路傳輸資料量。目前,16000hz的取樣率應用十分的廣泛。使用16000hz取樣率儲存的音訊已經能夠非常好地保留絕大部分語音資訊。雷射唱片(cd)通常採用44100hz的取樣率,從而能夠對高頻訊號進行效果比較好的保真。

(說白了,本質上來看,取樣也就是對音訊模擬訊號的一種「降維」吧)

為了更高效地儲存和傳輸每個取樣點的數值,將這些振幅值進行規整,這一過程稱為量化

量化的過程會損失一定的精度,按照精度可以將量化分為8位量化16位量化32位量化等。

注:量化的精度等於相鄰兩個整數所表示的實數的差值(標準),如果兩個實數之間的差距小於這個差值,他們便會被量化為同乙個整數。(可以看文章開頭的那張圖,連續的訊號號最後被轉變為了階梯狀的影象)

將量化後離散整數序列轉化為計算機實際儲存所用的二進位制位元組序列的過程叫做音訊編碼。反之,將二進位制位元組恢復成音訊訊號的過程稱為解碼

(具體細節暫略)

參考:《聲紋技術》

什麼是音訊的取樣率?取樣率和音質有沒有關係?

詳解音訊編譯碼的原理、演進和應用選型等——很強大的系列**

MPEG2標準的壓縮分層和編碼原理

mpeg2標準的音訊部分大致基於mpeg1標準,因此二者相容性很強。這一點使得現有的mpeg1裝置可對mpeg2訊號中相容mpeg1的部分訊號進行解碼,而mpeg2裝置也可解碼mpeg1訊號,從而實現前向相容。壓縮分層 mpeg2和mpeg1音訊壓縮可分為三層。層數越高,壓縮的程度 所需cpu處理能...

軟編碼和硬編碼概念的區分與背後設計思想

昨天在檢視nhibernate乙個幫助文件中,涉及到通過嵌入式讀取配置檔案消除對應用程式中對檔名的硬編碼,第一次聽說硬編碼名詞概念,在csdn看到一些人對於這些概念的討論,與硬編碼對應的是軟編碼,對於硬編碼和軟編碼定義其實是相對而言的,如果你了解這些名詞,應該能夠感覺其實與應用程式的設計上時異曲同工...

Cocos2d X中的聲音和音效

在玩遊戲時都會有各種遊戲音,如啟動遊戲時會有背景音,勝利或者失敗會有一些音效。在cocos2d x中能夠使用cocosdenshion實現各種聲音 在使用cocosdenshion之前須要在程式中加入乙個標頭檔案和乙個命名空間 include audioengine.h using namespac...