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

2022-10-04 14:36:19 字數 1999 閱讀 2563

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

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

首先需要安裝外掛程式

pip install ffmpeg

然後再執行:

from ffmpeg import audio

audio.a_speed("d:\\1505.***", "2", "d:\\1505_2x.***")

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

執行結果

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

這裡我是將目標路徑下的***音訊轉成了2倍速的,設立不侷限於***。其他格式的音訊檔案也是可以進行處理的。

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

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_pat程式設計客棧h+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開發的

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

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

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

現在不知道是不是因為限制了大小(現在猜測可能是顯示了大或者限制了響應時間大小,在原始碼裡沒有發現什麼詭異的地方),音訊不算大的是沒問題的,我試的單個檔案是100多兆的檔案,會失敗,但是10m是沒有問題的。

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

import os

import sys

#from ffmpeg import audio

audio_path = "www.cppcns.comd:\\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+aud程式設計客棧io1, "2", finish_path+"2x"+audio1)

run()

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

上面另兩個**應該都是可以的

總結

python 用python對xml進行操作

首先,我先給出一段xml文件 liechtenstein yes 2 2008 141100 austria direction e switzerland direction w singapore yes 5 2011 59900 malaysia direction n panama yes ...

Apache Hadoop進行版本公升級的操作

3月份,公司最大的集群要從hadoop2.4公升級到hadoop2.8 是乙個大版本跨度的公升級操作,所以前期對hadoop2.8版本進行了很多功能和效能方面的驗證和測試。同時也擬定了幾個公升級和回滾方案。由於集群的離線任務一般在夜間,所以夜間的hdfs壓力很大,rpc延遲很高,導致集群效能下降,最...

學習筆記 使用Python對檔案進行簡單操作

函式 shutil.rmtree path ignore errors onerror 該函式刪除乙個完整的目錄樹,path必須指向乙個目錄。如果ignore errors為true,移除失敗的error會被忽略。否則,該error將會被onerror處理。onerror funciton,path...