帶有Python的音訊處理(附帶原始碼)

CoXie帶你學程式設計發表於2021-02-09

由於部落格播放不了音訊,所以音訊將以視訊形式展現。公眾號也正在進行抽書

音訊素材請點選這裡進行觀看

往下拉就是文章地址

有時,在進行程式設計時,我們需要進行一些音訊處理。程式設計中最常用的音訊處理任務包括–載入和儲存音訊檔案,將音訊檔案拆分和追加到片段,使用不同的資料建立混合音訊檔案,操縱聲音級別,應用一些過濾器以及生成音訊調整和也許更多。

所有這些東西都可以使用Python來實現。Python是一種靈活的語言。它為您聽說過的幾乎所有任務提供了庫。對於音訊處理,Python提供了Pydub,這是一個非常簡單且設計良好的模組。

安裝Pydub

就像Python Pydub中的所有其他模組一樣,也可以使用簡單的命令– pip install pydub輕鬆安裝。

音訊處理:載入和播放

AudioSegmentPydub中的父類。它起著可以載入,操作和儲存音訊檔案的容器的作用。讓我們用python建立我們的第一個音訊。為此,我們將需要一個測試檔案,該檔案可以採用任何格式,例如WAV,MP3或任何格式。在本文中,我將下載一個音訊檔案,就像我們從網路上抓取資料一樣:

import urllib.request
from pydub import AudioSegment
from pydub.playback import play
urllib.request.urlretrieve("音訊地址", "音訊名稱")
loop = AudioSegment.from_wav("音訊名稱")
play(loop)

音訊素材請看上面

基本音訊處理

載入音訊後,現在我們可以執行各種型別的音訊處理,讓我們從重複音訊檔案的一些必要步驟開始:

loop2 = loop * 2
length = len(loop2)
fade_time = int(length * 0.5)
faded = loop2.fade_in(fade_time).fade_out(fade_time)

音訊素材請看上面

分層音訊

上面我們只是簡單地重複了音訊,現在讓我們分層並混合不同級別的音訊片段:

urllib.request.urlretrieve("https://tinyurl.com/yx3k5kw5", "beat.wav")
beat = AudioSegment.from_wav("beat.wav")
mixed = beat[:length].overlay(loop2)

音訊素材請看上面

音訊處理:應用過濾器

現在,讓我們通過應用濾鏡和反轉音訊效果,將所有內容融合在一起,以進一步發展:

filtered = beat.low_pass_filter(3000)
loop = loop2.reverse().pan(-0.5).overlay(loop2.pan(0.5))
final = filtered.overlay(loop2 - 3, loop=True)

音訊素材請看上面

現在,如果您要儲存音訊檔案,則可以按如下所示輕鬆進行操作:

final.export("final.mp3", format="mp3")

合成音調

除了處理上面介紹的聲音的所有步驟之外,我們還可以合成新的音調。這些音調可以是任何頻率的正弦波,方波或操縱波。我們還可以執行白噪聲。在下面的示例中,我將顯示正弦方法,以諧波的方式為最初的15個間隔產生正弦調諧:

result = AudioSegment.silent(duration=0)
for n in range(15):
    gen = Sine(200 * n)
    sine  = gen.to_audio_segment(duration=200).apply_gain(-3)
    sine = sine.fade_in(50).fade_out(100)
    result += sine
play(result)

音訊素材請看上面

相關文章