我覆蓋了一堆音頻片段,並且希望能夠將(1,1,1,0.5,0 ...)形式的值的元組傳遞給我的函數,每個數字是一個段的音量應該縮放的比率。 0應該是絕對安靜的,而1應該是未修改的原始音量,0.5正好是一半。就我所知,這是the behavior of the GainNode "gain" property。重新創建Web Audio API GainNode行爲
我嘗試這些至今:
def adjust_volume(audio_segment, ratio):
decibel = pydub.utils.ratio_to_db(audio_segment.rms)
return audio_segment - decibel * (1 - ratio)
和
SILENCE_THRESHOLD = -120.00
def adjust_volume(audio_segment, ratio):
difference = SILENCE_THRESHOLD - audio_segment.dBFS
return audio_segment + (difference - (difference * ratio))
不幸的是這兩個工作不完美的,這意味着它們不完全複製的網頁瀏覽器(Mozilla Firefox瀏覽器)的行爲。使用第一個可以用我的音頻播放器(foobar2000)聽到聲音,即使我傳入一個只包含0的元組,而第二個設備用正確的靜音閾值設置沉默整個片段,例如使用0.3創建一個音頻級別比我在瀏覽器中使用相同的值時可以觀察到的級別要低。
應該指出,我的技術音頻知識是非常有限的。這些僅僅是由不同的音頻設備,音頻實現細節等造成的技術不準確?如果是這樣的話,有人會建議我採用最「正確」的方式來做這個縮放嗎?
謝謝你,是沒有的伎倆!我完全可以通過使用您提供的說明覆制相關網站的行爲 - 我完全錯誤地使用了ratio_to_db函數,因爲我完全不知道它實際做了什麼。正如我所說我沒有太多的音頻處理背景等,但你的解釋清除了一些東西給我。我仍然對16位評論感到困惑。你的意思是「約90dB」 - 它只能存儲該幅度,即最大響度?如果我真的有16位文件,不會減少120db是「太多」了嗎? – cryzed 2015-02-08 01:36:29