1. 程式人生 > >帶有Python的音訊處理(附帶原始碼)

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

>由於部落格播放不了音訊,所以音訊將以視訊形式展現。公眾號也正在進行抽書 [音訊素材請點選這裡進行觀看](https://mp.weixin.qq.com/s/UGBQr_4tKVgyaMGEFQIxDA) 往下拉就是文章地址 有時,在進行程式設計時,我們需要進行一些音訊處理。程式設計中最常用的音訊處理任務包括–載入和儲存音訊檔案,將音訊檔案拆分和追加到片段,使用不同的資料建立混合音訊檔案,操縱聲音級別,應用一些過濾器以及生成音訊調整和也許更多。 所有這些東西都可以使用`Python`來實現。`Python`是一種靈活的語言。它為您聽說過的幾乎所有任務提供了庫。對於音訊處理,`Python`提供了`Pydub`,這是一個非常簡單且設計良好的模組。 # 安裝Pydub 就像`Python Pydub`中的所有其他模組一樣,也可以使用簡單的命令`– pip install pydub`輕鬆安裝。 # 音訊處理:載入和播放 `AudioSegment`是`Pydub`中的父類。它起著可以載入,操作和儲存音訊檔案的容器的作用。讓我們用`python`建立我們的第一個音訊。為此,我們將需要一個測試檔案,該檔案可以採用任何格式,例如`WAV,MP3`或任何格式。在本文中,我將下載一個音訊檔案,就像我們從網路上抓取資料一樣: ```py import urllib.request from pydub import AudioSegment from pydub.playback import play urllib.request.urlretrieve("音訊地址", "音訊名稱") loop = AudioSegment.from_wav("音訊名稱") play(loop) ``` 音訊素材請看上面 # 基本音訊處理 載入音訊後,現在我們可以執行各種型別的音訊處理,讓我們從重複音訊檔案的一些必要步驟開始: ```py loop2 = loop * 2 length = len(loop2) fade_time = int(length * 0.5) faded = loop2.fade_in(fade_time).fade_out(fade_time) ``` 音訊素材請看上面 # 分層音訊 上面我們只是簡單地重複了音訊,現在讓我們分層並混合不同級別的音訊片段: ```py urllib.request.urlretrieve("https://tinyurl.com/yx3k5kw5", "beat.wav") beat = AudioSegment.from_wav("beat.wav") mixed = beat[:length].overlay(loop2) ``` 音訊素材請看上面 # 音訊處理:應用過濾器 現在,讓我們通過應用濾鏡和反轉音訊效果,將所有內容融合在一起,以進一步發展: ```py filtered = beat.low_pass_filter(3000) loop = loop2.reverse().pan(-0.5).overlay(loop2.pan(0.5)) final = filtered.overlay(loop2 - 3, loop=True) ``` 音訊素材請看上面 現在,如果您要儲存音訊檔案,則可以按如下所示輕鬆進行操作: ```py final.export("final.mp3", format="mp3") ``` # 合成音調 除了處理上面介紹的聲音的所有步驟之外,我們還可以合成新的音調。這些音調可以是任何頻率的正弦波,方波或操縱波。我們還可以執行白噪聲。在下面的示例中,我將顯示正弦方法,以諧波的方式為最初的15個間隔產生正弦調諧: ```py 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) ``` 音訊素材請