2017-02-19 148 views
0

這篇文章更多的是關於澄清,而不是實現某種音頻波形算法。我讀過有關的主題(包括對SO進出網絡上)的帖子無數,這裏就是我已經收集:生成音頻波形

  • 在16位WAV的背景下,我想讀的每兩個字節作爲short,這將導致介於-32768到32767之間的值。
  • 對於44.1kHz的採樣率,每一秒音頻將有44000個採樣。

這是相當直接的,但是我有以下問題:

  • 在單聲道呈現的WAV只有一個信道,這是每幀信息的兩個字節。在立體聲中,這成爲四個字節的信息。在我的情況下,我不需要顯示兩個頻道,所以我只需跳過正確的頻道並只讀取左側的頻道?我讀過的一些解決方案提到了將左右聲道結合起來,但我不確定這是否是必需的。
  • 假設我有一個長度爲兩秒的音頻文件,另一個長度爲三十秒的音頻文件。如果我需要抓取最少800個樣本來表示波形,則會沿文件長度抓取800個樣本,引入精度問題,例如,對於兩個第二音頻文件爲(44,000 * 2)/800,對於第三十二音頻文件爲(44,000 * 30)/800

一個解釋真的很感謝!

+0

我們不能回答你的第一個問題,問問給你任務的人。我不明白你的第二個問題。你在談論哪個「特定區域」?您需要2 * 44k採樣來表示兩秒的音頻。這就是採樣率的定義。使用22k樣本無法錄製44k音頻。 –

+0

@TamasHegedus我更新了我的第二個問題。我試圖儘可能地重新說出它。簡而言之,我只是試圖確定44,000個樣本區域內的樣本是否瘋狂地變化,以及是否需要進行某種平均。 – Raggeth

+0

是啊這兩個問題需要澄清 - 通過收集一堆信息不會提出一個問題 - 你沒有達到它似乎的東西,你試圖解釋一些你不明白的東西 - 告訴我如何做到這一點 – gpasch

回答

1

這是我的專業領域之外,但我會給它一個去。

據我所知,你可能會跳過一些樣本並保持合理的準確性 - 如果你跳過43 kHz文件中的每一個其他樣本,就好像你在22.05 kHz記錄了原始樣本。但是,根據Wikipedia,如果採樣頻率小於您正在採樣的聲音的某個分量的頻率的兩倍,則會遇到準確性問題。除非你的音頻中有高調的鈴鐺和cy,否則這在22.05 kHz時可能不是問題。但是如果你每30秒只抽樣800次,那麼處理器官的最低音就不足以處理。假設你每秒採樣800次,並且在800赫茲處有一個聲音(接近G或高於高音C的G#)。每次你採樣時,你都會得到完全相同的波形點。您正在採樣的波浪中的這個位置可能是峯值點,或者它可能是一個低點。不經常抽樣,你不可能知道。

至於是否只能採樣一個通道,取決於是否可以忽略其他通道。想象一下立體聲文件,右邊有聲音,左邊有音樂。他們將有不同的波模式。如果您可以忽略音樂,那麼您可以右取樣並忽略左側。如果你需要兩者,那麼你顯然需要對兩者進行抽樣。