聲音的混合與反轉
這篇文章會介紹使用 Python 的 pydub 第三方函式庫,混合兩段以上的聲音 ( 例如講話的聲音有背景音樂 ),以及實現聲音反轉的趣味效果。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
安裝 pydub 函式庫
輸入下列指令,就能安裝 pydub 函式庫 ( 依據每個人的作業環境不同,可使用 pip 或 pip3 或 pipenv )。
!pip install pydub
如果是使用 Anaconda 的環境,要額外輸入下列指令安裝 ffmpeg 和 ffprobe,不然執行後會發生找不到 ffprobe 的錯誤訊息 ( 使用 Colab 完全不用安裝額外套件 )。
conda install ffmpeg
!pip install ffprobe
混合聲音
使用 pydub AudioSegment 模組讀取 mp3 檔案後 ( 參考「如何讀取聲音?」 ),就可以透過 overlay 方法混合聲音,使用方法如下:
output = sound1.overlay(sound2, position, gain_during_overlay, loop, times)
# output 輸出聲音
# sound1 主聲音
# sound2 要混合的聲音
# position 從 sound1 的何處開始混合,單位毫秒 ( 針對主聲音 )
# gain_during_overlay 混合時 sound1 的音量變化 ( 針對主聲音 )
# loop 如果 sound2 不夠長,是否要不斷重複,True 或 False
# times 如果 sound2 不夠長,指定 sound2 要重複幾次
下方的例子,會將說話的聲音,和一段背景音樂進行混合,由於背景音樂不夠長,使用 loop 參數將音樂不斷重複,直到說話聲音結束為止 ( 如果說話聲音比音樂短,則說話聲音結束時,音樂也會跟著結束 )
音樂來源使用 Google 音樂庫:https://www.youtube.com/audiolibrary
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from pydub import AudioSegment # 載入 pydub 的 AudioSegment 模組
song = AudioSegment.from_mp3("oxxostudio.mp3") # 讀取背景音樂 mp3 檔案
voice = AudioSegment.from_mp3("voice.mp3") # 讀取說話聲音 mp3 檔案
output = voice.overlay(song, loop=True) # 混合說話聲音和背景音樂
output.export('output.mp3')
聲音反轉
使用 pydub AudioSegment 模組讀取 mp3 檔案後,就可以透過 reverse 方法反轉聲音,產生趣味的效果:
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from pydub import AudioSegment # 載入 pydub 的 AudioSegment 模組
voice = AudioSegment.from_mp3("voice.mp3") # 讀取說話聲音 mp3 檔案
output = voice.reverse() # 反轉說話聲音
output.export('output.mp3')
參考資料
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~