2011-03-26 23 views
13

我已經使用了幾個音頻程序,如SDL調音臺,大膽等,但我想看看這些小音響玩具裏面有什麼。音頻數據如何處理等。我還看過一些C++ MP3播放器的示例代碼,它使用void*作爲音頻數據。計算機如何處理音頻數據?

但是,所有這些並不能幫助我理解音頻如何在計算機中工作。那麼有人可以向我解釋(或向我介紹一些書籍)計算機如何存儲和處理數字音頻數據?

+0

相關(如何計算機處理音頻):[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

回答

10

如何波形中表示

有音頻是如何在Audacity manual代表的更詳細的解釋:

Waveform

...每條垂直線的高度表示爲有符號數。


更多關於數字音頻

  • 無畏wiki有一些有關how algorithms in Audacity work。如果Audacity中有一個特定的音頻效果需要了解更多信息,那還沒有涵蓋,您可以在那裏留下問題。
  • 如果您正在查看源代碼,echo effect是一個很好的開始。
  • 有關數字音頻的更多信息,請單擊維基百科按鈕以查看對您感興趣的鏈接this page。在頁面底部的那些特別有用於深入挖掘那裏的不同的音頻文件格式

您可能會注意到所有這些鏈接都來自Audacity項目。這不是巧合。

9

以你的WAV文件例如(舉例來說,如果你存儲一個三角波形爲.wav文件,請問這個波形得到存儲爲位模式):

WAV文件將會有一個頭,這向播放器或音頻處理器指定關於通道數量,採樣率,位深度,數據長度等的關鍵信息。在標題出現之後,存儲音頻採樣的原始位模式(假設你知道採樣是什麼 - 如果沒有,請參閱維基百科)。每個採樣由多個字節組成(在標題中指定),並指定任何給定時間點的波形幅度。每個樣本可以以有符號或無符號形式存儲(也在標題中指定)。

+1

這簡潔而且非常有幫助! – 2013-05-21 05:51:27

5

您可以閱讀Lothar Reichel 他解釋一點的題目是「數字音頻壓縮」這個演講,併發布一些Matlab代碼:

聲音是一種複雜的現象。它通常是由空氣(或其他介質)中的移動物體引起的,例如,揚聲器錐體來回移動。該運動反過來導致空氣壓力變化 像在池塘中的波浪一樣穿過空氣。我們的耳膜將壓力變化轉換成我們的大腦像聲音一樣處理的現象。

電腦使用麥克風而不是耳膜聽到聲音。麥克風將壓力變化轉換爲電壓,其幅度對應於壓力的強度。計算機然後使用稱爲採樣的技術來處理電信號。計算機通過定期測量其振幅來採樣 信號,通常爲每秒44,100次。每個測量值 都以固定精度(通常爲16位)存儲爲一個數字。

希望它有幫助。

7

數字音頻存儲爲一個數字序列,稱爲採樣。例如:

5,18,6,-4,-12,-3,7,14,4

劇情這些數值爲在笛卡爾圖形點:樣本值確定沿Y軸的位置,樣本的序列號(0,1,2,3等)確定沿X軸的位置。

現在通過您剛繪製的點追蹤一條線。

恭喜,您剛纔呈現了數字音頻的波形。 :-)

Y軸是振幅,X軸是時間。

「採樣率」確定回放設備(例如聲卡)在樣本中前進的速度。這是樣本的「時間值」。例如,CD質量的數字音頻每秒傳送44,100個樣本,讀取每個採樣點的幅度(Y軸值)。

†上面的討論忽略了壓縮。數字音頻的基本特性對壓縮變化不大。很像壓縮位圖圖像不會改變位圖圖像的核心本質。 (音頻壓縮的主題非常豐富 - 我並不想將其過分簡化,只是所有壓縮音頻在呈現之前最終都是未壓縮的 - 即可以聽得見的聲音播放或以波形形式繪製 - 在而此時它的壓縮起源是無關緊要的)