1. 程式人生 > 程式設計 >python將音訊進行變速的操作方法

python將音訊進行變速的操作方法

有的時候需要手裡的音訊檔案變速聽,或可能變慢或可能變快

這裡使用的python進行操作,我的目標是將檔案轉成2倍速

首先需要安裝外掛

pip install ffmpeg

然後再執行:

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

如果執行不出錯,會返回一個true

執行結果

python將音訊進行變速的操作方法

我可以看到這裡的音訊速度提升以後音訊小了

這裡我是將目標路徑下的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,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,out_file)
  res = subprocess.call(cmd,shell=True)
 
  if res != 0:
   return False
  return True
 except Exception:
  return False

實際可以看到,使用的f呼叫的原生的fmpeg,也就是基於fmpeg開發的

不過好像我發現,如果音訊檔案太大會失敗,返回false

我試過原生的fmpeg是可以進行的,只是會轉換很慢

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

現在不知道是不是因為限制了大小(現在猜測可能是顯示了大或者限制了響應時間大小,在原始碼裡沒有發現什麼詭異的地方),音訊不算大的是沒問題的,我試的單個檔案是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,finish_path+"2x"+audio1)
run()

後來發現,最好音訊的檔名不要有漢字

上面另兩個程式碼應該都是可以的

總結

到此這篇關於python將音訊進行變速的操作方法的文章就介紹到這了,更多相關python 音訊變速內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!