python將音頻進行變速的實操方法

有的時候我們需要將手里的音頻文件進行變速聽,可能會變慢或者可能變快。今天小編將使用python進行操作,將文件轉成2倍速。

首先我們需要安裝插件:

pip install ffmpeg

然后再執(zhí)行:

from ffmpeg import audio

audio.a_speed("D:\\1505.mp3", "2", "D:\\1505_2x.mp3")

如果執(zhí)行不出錯,會返回一個true

運行結果

這這里我們可以看到這里的音頻速度提升以后音頻小了

這里我是將目標路徑下的MP3音頻轉成了2倍速的,設立不局限于MP3。其他格式的音頻文件也是可以進行處理的。

當然這里還可以進行批量操作:

import os

import sys

from ffmpeg import audio

audio_path = "D:\\audio\\"

finish_path = "D:\\2x_audio\\"


def run():

audio_file = os.listdir(audio_path)

for i, audio1 in enumerate(audio_file):

? print(audio_path+audio1)

? audio.a_speed(audio_path+audio1, "2", finish_path+"2x"+audio1)

run()

實際上這個的源碼干了一件這個事情

import subprocess


# 調整音頻播放速率

def a_speed(input_file, speed, out_file):

try:

? cmd = "ffmpeg -y -i %s -filter_complex \"atempo=tempo=%s\" %s" % (input_file, speed, out_file)

? res = subprocess.call(cmd, shell=True)


? if res != 0:

? return False

? return True

except Exception:

? return False

實際可以看到,使用的f調用的原生的fmpeg,也就是基于fmpeg開發(fā)的,

不過好像我發(fā)現(xiàn),如果音頻文件太大會失敗,返回false;我也有試過原生的fmpeg是可以進行的,只是會轉換很慢。

D:\>ffmpeg -n -i 222.mp3 -filter:a "atempo=2" output.mp3

現(xiàn)在不知道是不是因為限制了大?。ìF(xiàn)在猜測可能是顯示了大或者限制了響應時間大小,在源碼里沒有發(fā)現(xiàn)什么詭異的地方),音頻不算大的是沒問題的,我試的單個文件是100多兆的文件,會失敗,但是10m是沒有問題的。

實在不行就直接用原生的好了

import os

import sys

#from ffmpeg import audio


audio_path = "D:\\audio\\"

finish_path = "D:\\2x_audio\\"


def run():

audio_file = os.listdir(audio_path)

for i, audio1 in enumerate(audio_file):

? #print(audio_path+audio1)

? cmd="ffmpeg -n -i "+audio_path+audio1+" -filter:a atempo=2 "+finish_path+"2x"+audio1

? #print(cmd)

? os.system(cmd)

? #audio.a_speed(audio_path+audio1, "2", finish_path+"2x"+audio1)

run()

注意最好音頻的文件名不要有漢字!

評論區(qū)歡迎大家指點一二哦!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容