声音剪辑与串接
这篇文章会介绍使用 Python 的 pydub 第三方函数库,实现声音剪辑的功能 ( 从音乐或声音里,剪辑出一段指定秒数长度的声音,储存为 mp3 或 wav )。
本篇使用的 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 文件 ( 参考“如何读取声音?” ),接着使用串列的方式取出 1500~5500 毫秒的内容,输出成为 output.mp3。
音乐来源使用 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 檔案
song[1500:5500].export('output.mp3') # 取出 1500 毫秒~5500 毫秒長度的聲音,輸出為 output.mp3
print('ok') # 輸出後印出 ok
串接声音
读取声音后,使用“相加”的方式,就能将不同的声音串接成同一段声音,下方的例子会将两段声音组合成一段声音输出。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from pydub import AudioSegment
song1 = AudioSegment.from_mp3("oxxo1.mp3") # 讀取第一個 mp3 檔案
song2 = AudioSegment.from_mp3("oxxo2.mp3") # 讀取第二個 mp3 檔案
output = song1 + song2 # 串接兩段聲音
output.export('output.mp3') # 輸出為 output.mp3
print('ok') # 輸出後印出 ok
因为读取的声音本质已是用串列的方式呈现,所以也能够使用“串列相乘”的方式,将某一段声音变成重复多次,下方的例子会将读取的声音乘以 3,就会重复三次。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from pydub import AudioSegment
song = AudioSegment.from_mp3("oxxostudio.mp3") # 讀取 mp3 檔案
output = song*3 # 乘以 3,重複三次變成三倍長
output.export('output.mp3')
print('ok')
参考数据
微信扫码关注
抖音扫码关注