帶有Python的音頻處理(附帶源碼)
- 2021 年 2 月 9 日
- 筆記
由於博客播放不了音頻,所以音頻將以視頻形式展現。公眾號也正在進行抽書
往下拉就是文章地址
有時,在進行編程時,我們需要進行一些音頻處理。編程中最常用的音頻處理任務包括–加載和保存音頻文件,將音頻文件拆分和追加到片段,使用不同的數據創建混合音頻文件,操縱聲音級別,應用一些過濾器以及生成音頻調整和也許更多。
所有這些東西都可以使用Python
來實現。Python
是一種靈活的語言。它為您聽說過的幾乎所有任務提供了庫。對於音頻處理,Python
提供了Pydub
,這是一個非常簡單且設計良好的模塊。
安裝Pydub
就像Python Pydub
中的所有其他模塊一樣,也可以使用簡單的命令– pip install pydub
輕鬆安裝。
音頻處理:加載和播放
AudioSegment
是Pydub
中的父類。它起着可以加載,操作和保存音頻文件的容器的作用。讓我們用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("//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)
音頻素材請看上面