簡體   English   中英

分析WAV文件中的聲音

[英]Analyzing Sound in a WAV file

我試圖分析一個電影文件,將其分成相機鏡頭,然后嘗試確定哪些鏡頭比其他鏡頭更重要。 我在鏡頭重要性考慮的因素之一是在電影的這一部分音量有多大。 為此,我正在分析相應的聲音文件。 我無法確定鏡頭的響亮程度,因為我不認為我完全理解WAV文件中的數據代表什么。

我使用類似於在描述的方法文件讀入到音頻緩沖器此篇

已經將相應的視頻文件分成了鏡頭,我現在試圖找到哪些鏡頭比WAV文件中的其他鏡頭更響亮。 我試圖通過提取文件中的每個樣本來做到這一點:

double amplitude = (double)((audioData[i] & 0xff) | (audioData[i + 1] << 8));

我讀過的其他一些帖子似乎表明我需要對此音頻數據應用快速傅里葉變換以獲得幅度,這讓我想知道我提取的值實際上代表什么。 我正在做的是什么? 我的聲音文件格式是16位單聲道PCM,采樣率為22,050 Hz。 當我嘗試分析文件的音量時,我應該使用這個22,050值嗎? 其他帖子建議使用均方根來評估響度。 這是必需的,還是只是更准確的方式?

我越是注意到這一點,我就越困惑。 如果有人能夠揭露我的錯誤和誤解,我將不勝感激!

FFT與音量無關,與頻率無關。 要了解場景的平均聲音大小,只需平均采樣值即可。 根據您是否使用您的語言獲得有符號或無符號值的數據,您可能必須首先應用絕對函數,以便負振幅不會抵消正數,但這就是它。 如果您沒有得到您期望的結果,那么必須與您在第20行中提取單個值的方式有關。

也就是說,有一些改進可能會或可能不會影響您的任務。 感知響度,幅度和聲功率實際上是以非線性方式相關的,但只要您只是想要粗略估計音頻信號中“正在進行”的程度,我懷疑這對您來說是否相關。 當然,人類會聽到不同的頻率更好或更差 - 例如,蝙蝠發出超聲波尖叫聲,這對我們來說絕對震耳欲聾,但幸運的是我們根本聽不到它們。 但同樣,我懷疑這與你的任務有關,因為例如22kHz以上的頻率(或者是44kHz?不確定哪個)實際上在簡單的WAV格式中是不可表示的。

我不知道你想要的准確度,但是一個簡單的RMS(也許是對信號的簡單過濾)就是許多類似應用所需要的。

RMS將比峰值幅度好得多。 使用峰值幅度就像基於最亮像素確定圖像的亮度,而不是平均。

如果您想過濾信號或將其權衡到感知響度,那么您需要采樣率。

除非您想進行復雜的頻率分析,否則不應要求FFT。 耳朵對不同振幅的頻率的響應不同 - 耳朵不會對不同頻率和線性的聲音作出響應。 在這種情況下,您可以使用FFT對另一個准確度域執行頻率分析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM