声音音量调整
这篇文章会介绍使用 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 文件 ( 参考“如何读取声音?” ),就可以使用两种方法调整声音的音量:
音乐来源使用 Google 音乐库:https://www.youtube.com/audiolibrary
针对声音数组,增加或减少数值
from pydub import AudioSegment import os os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用 song = AudioSegment.from_mp3("oxxostudio.mp3") # 讀取 mp3 output1 = song[:] + 10 # 將所有陣列中的資料增加 10 ( 變大聲 ) output2 = song[:] - 10 # 將所有陣列中的資料減少 10 ( 變小聲 ) output1.export('output1.mp3') # 輸出聲音 output2.export('output2.mp3') print('ok')使用 apply_gain() 方法
from pydub import AudioSegment import os os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用 song = AudioSegment.from_mp3("oxxostudio.mp3") output1 = song.apply_gain(10) # 將音量增加 10 ( 變大聲 ) output2 = song.apply_gain(-10) # 將音量減少 10 ( 變小聲 ) output1.export('output1.mp3') output2.export('output2.mp3') print('ok')
音量淡入淡出
声音的淡入是指从无声慢慢变大声,淡出则是指从大声慢慢变小到无声,透过 pydub AudioSegment 模组的 fade()、fade_in() 和 fade_out() 方法,就能实现淡入淡出的效果。
fade_in()、fade_out()
“fade_in() 淡入”和“fade_out() 淡出”可以快速进行淡入和淡出的效果,使用方法会包含一个“时间”参数,单位是毫秒,设定 3000 表示 3 秒。
from pydub import AudioSegment import os os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用 song = AudioSegment.from_mp3("oxxostudio.mp3") output1 = song.fade_in(3000) # 開頭三秒 ( 3000ms ) 淡入 output2 = song.fade_out(3000) # 結尾三秒 ( 3000ms ) 淡出 output1.export('output1.mp3') output2.export('output2.mp3') print('ok')fade()
fade() 方法提供更为弹性的淡入淡出调整方式,使用方法会包含 to_gain ( 淡入或淡出结束的音量 )、start/end ( 开始或结束的秒数 ) 和 duration ( 持续时间 ) 参数。
from pydub import AudioSegment import os os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用 song = AudioSegment.from_mp3("oxxostudio.mp3") output1 = song.fade(to_gain=15, start=1000, duration=2000) # 從 1 秒的位置開始,慢慢變大聲到增加 15,過程持續 2 秒 output2 = song.fade(to_gain=-30, end=3000, duration=2000) # 從 1 秒的位置開始 ( 3000-2000 ),慢慢變小聲到減少 30,過程持續 2 秒 output1.export('output1.mp3') output2.export('output2.mp3') print('ok')
参考数据
微信扫码关注
抖音扫码关注