我已經使用了幾個音頻程序,如SDL調音臺,大膽等,但我想看看這些小音響玩具裏面有什麼。音頻數據如何處理等。我還看過一些C++ MP3播放器的示例代碼,它使用void*
作爲音頻數據。計算機如何處理音頻數據?
但是,所有這些並不能幫助我理解音頻如何在計算機中工作。那麼有人可以向我解釋(或向我介紹一些書籍)計算機如何存儲和處理數字音頻數據?
我已經使用了幾個音頻程序,如SDL調音臺,大膽等,但我想看看這些小音響玩具裏面有什麼。音頻數據如何處理等。我還看過一些C++ MP3播放器的示例代碼,它使用void*
作爲音頻數據。計算機如何處理音頻數據?
但是,所有這些並不能幫助我理解音頻如何在計算機中工作。那麼有人可以向我解釋(或向我介紹一些書籍)計算機如何存儲和處理數字音頻數據?
如何波形中表示
有音頻是如何在Audacity manual代表的更詳細的解釋:
...每條垂直線的高度表示爲有符號數。
更多關於數字音頻
您可能會注意到所有這些鏈接都來自Audacity項目。這不是巧合。
以你的WAV文件例如(舉例來說,如果你存儲一個三角波形爲.wav文件,請問這個波形得到存儲爲位模式):
WAV文件將會有一個頭,這向播放器或音頻處理器指定關於通道數量,採樣率,位深度,數據長度等的關鍵信息。在標題出現之後,存儲音頻採樣的原始位模式(假設你知道採樣是什麼 - 如果沒有,請參閱維基百科)。每個採樣由多個字節組成(在標題中指定),並指定任何給定時間點的波形幅度。每個樣本可以以有符號或無符號形式存儲(也在標題中指定)。
這簡潔而且非常有幫助! – 2013-05-21 05:51:27
您可以閱讀Lothar Reichel 他解釋一點的題目是「數字音頻壓縮」這個演講,併發布一些Matlab代碼:
聲音是一種複雜的現象。它通常是由空氣(或其他介質)中的移動物體引起的,例如,揚聲器錐體來回移動。該運動反過來導致空氣壓力變化 像在池塘中的波浪一樣穿過空氣。我們的耳膜將壓力變化轉換成我們的大腦像聲音一樣處理的現象。
電腦使用麥克風而不是耳膜聽到聲音。麥克風將壓力變化轉換爲電壓,其幅度對應於壓力的強度。計算機然後使用稱爲採樣的技術來處理電信號。計算機通過定期測量其振幅來採樣 信號,通常爲每秒44,100次。每個測量值 都以固定精度(通常爲16位)存儲爲一個數字。
希望它有幫助。
數字音頻存儲爲一個數字序列,稱爲採樣。例如:
5,18,6,-4,-12,-3,7,14,4
劇情這些數值爲在笛卡爾圖形點:樣本值確定沿Y軸的位置,樣本的序列號(0,1,2,3等)確定沿X軸的位置。
現在通過您剛繪製的點追蹤一條線。
恭喜,您剛纔呈現了數字音頻的波形。 :-)
Y軸是振幅,X軸是時間。
「採樣率」確定回放設備(例如聲卡)在樣本中前進的速度。這是樣本的「時間值」。例如,CD質量的數字音頻每秒傳送44,100個樣本,讀取每個採樣點的幅度(Y軸值)。
†上面的討論忽略了壓縮。數字音頻的基本特性對壓縮變化不大。很像壓縮位圖圖像不會改變位圖圖像的核心本質。 (音頻壓縮的主題非常豐富 - 我並不想將其過分簡化,只是所有壓縮音頻在呈現之前最終都是未壓縮的 - 即可以聽得見的聲音播放或以波形形式繪製 - 在而此時它的壓縮起源是無關緊要的)
相關(如何計算機處理音頻):[Resampling Audio](http://stackoverflow.com/questions/1125666/how-do-you-do-bicubic-or-other-non-linear-interpolation-of -re-sampled-audio-dat) - 關鍵構建模塊之一。 – 2011-03-26 20:40:58