声音混合与反转
这篇文章会介绍使用 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')
参考数据
微信扫码关注
抖音扫码关注