2013-11-01 114 views
1

因此,我正在編寫一個程序,在沒有聲音播放時將音頻片段分成多個部分。以便從聲音文件創建的所有剪輯只包含帶聲音的部分。我將如何使用Java來完成此操作?我計劃使用FLAC,但該程序目前也支持WAV。 RMS是確定這個最好的方法嗎?任何代碼的獎勵積分。如何在靜音時創建聲音剪輯?

+0

我不是信號處理專家,但我認爲如果你做音頻FFT,當有沉默時,你可能會得到接近於零的所有頻率的幅度。 – UDPLover

+0

這將是荒謬的計算成本昂貴,雖然... – Skylion

回答

1

通過對樣本n和n + 1之間的差異平方進行平均,您可以粗略估計採樣波形的「響度」。這會給你一個粗略的指示,告訴聽者這些樣本會如何「大聲」出現。

該方法對高頻比低頻更敏感,這就是爲什麼如果聲音具有非常極端的頻率分佈,它可能會關閉很多。

對於一個精確的解決方案則需要由代表聽衆的耳朵(不是所有頻率在同一水平DB同樣的感覺響亮)的模型採取FFT方法也是正確提取的頻率加權。

+0

是否沒有方法計算成本更低? – Skylion

+0

@ Skylion完全依賴於您的精度要求。嘗試平方delta方法。如果您的要求太不準確,則不會進行旁路頻率分析。目前FFT並非如此昂貴(任何MP3編碼器都需要這樣做,而且您可以在各種當今硬件平臺上實時編碼)。編輯:甚至*音頻播放器*甚至只是爲了顯示花式頻譜分析。看看JavaMod播放器(其免費和開源):http://www.javamod.de/ – Durandal

+1

我發現這個算法類似於你所描述的:http://www.source-code.biz/dsp/的java/apidocs /商業/ source_code/DSP /信號/ ActivityDetector.html – Skylion

相關問題