中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Python中使用pydub模塊轉換音頻格式

發布時間:2021-06-01 16:15:15 來源:億速云 閱讀:377 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關怎么在Python中使用pydub模塊轉換音頻格式,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1.需要下載的Python模塊和ffmpeg多媒體處理工具

需要的Python模塊是標題上提到的那個,pydub,這個模塊可以實現對音頻文件的剪輯、轉換音頻格式等。pydub是python的高級一個音頻處理庫,自帶的wave模塊只能處理 wav 格式的音頻文件,如果要想處理類似MP3格式的文件,就得要裝 ffmpeg或者libav了。pydub依賴于ffmpeg,這里選擇安裝ffmpeg。

下載命令,在cmd上輸入pip install pydub即可

除了下載pydub這個模塊之外,還需要下載ffmpeg這個多媒體處理工具,否則,即使在代碼中指定音頻文件路徑沒有錯誤,運行結構也會報錯。如下:

怎么在Python中使用pydub模塊轉換音頻格式

下載這個之后,就不會報這個錯誤了,下載網址為:ffmpeg

在這個網址下面找一個和自己電腦系統一樣的版本下載即可,下載完成之后,解壓,好像不配置環境變量,程序也可以正常執行,不過,最好還是配置環境變量。

怎么在Python中使用pydub模塊轉換音頻格式

2.實現音頻剪輯和轉換音頻格式代碼

其實,實現音頻剪輯和轉換音頻格式的代碼總共就幾行代碼,只不過需要輸入一些參數值,因此代碼量相對而言多了起來。

關鍵代碼為:

from pydub import AudioSegment
    
    sound=AudioSegment.from_file(file='./music/刺客.mp3',format='mp3')
    sound=sound[start:end]  # start,end兩個參數用于對音頻進行剪輯
    sound.export(out_f='./music/刺客.wav', format='wav')  # 用于保存剪輯之后的音頻文件

當然讀者想了解更多有關這個模塊的使用,可以來看看官方文檔啊!

文檔連接為:pydub

文檔中講了有關音頻合并、音頻重復等知識點喔!。

最終實現代碼:

from pydub import AudioSegment
import sys

class Music(object):
    def __init__(self,file,file_type,start,end,save_file,save_file_type):
        self.sound = AudioSegment.from_file(file=file, format=file_type)
        self.start=start  # 剪輯音頻文件開始時間
        self.end=end    # 剪輯音頻文件的結束時間
        self.save_file=save_file  # 保存音頻文件的路徑
        self.save_file_type=save_file_type  # 保存音頻文件的類型

    def editedMusic(self):   # 定義方法用于剪輯音頻
        # 對于傳入的start,end參數進行一些字符串處理

        ## 對傳入的開始時間進行字符串處理
        if self.start=='0' or self.start=='':  #  從頭開始處理音頻文件
            start_time=0
        elif ":" in self.start:# 從音頻中間處理
            list_1=self.start.split(":")
            start_time=int(list_1[0])*60+int(list_1[1])
        else:  # 如果是其他情況,提示錯誤,并退出程序
            print("你輸入的初始截取時間有問題")
            sys.exit()
        start_time*=1000   # 毫秒作為單位,需要在原來秒數的基礎上再乘以1000
        if  start_time>=len(self.sound):   # 如果初始截取時間大于或等于音頻文件總時間
            print('你輸入的初始截取時間大于該音頻文件總時間,故無法進行剪輯操作')
            sys.exit()

        ## 對傳入的結束時間進行字符串處理
        if self.end=='':
            end_time=len(self.sound)  # 如果輸入結束時間為空,表示截取到音頻文件最后
        elif ':' in self.end:
            list_2=self.end.split(':')
            end_time=int(list_2[0])*60+int(list_2[1])
        else:
            print("你輸入的結束截取時間有問題")
            sys.exit()
        end_time*=1000
        self.sound=self.sound[start_time:end_time]  # 對音頻文件進行剪輯
        self.saveFile()

    def saveFile(self):
        self.sound.export(out_f=self.save_file,format=self.save_file_type)
        # 保存已經進行剪輯的音頻文件
        print('已成功轉換!')

if __name__ == '__main__':
    print('1.可以將音頻文件轉換其他格式的音頻文件\n2.可用剪輯音頻文件\n')
    print('='*50)
    file=input('建議:\n(1.音頻文件和運行文件在同一個文件夾下面,最好使用相對路徑)\n(2.音頻文件和運行文件不在同一個文件夾下面,最好用絕對路徑)\n請輸入要剪輯的文件路徑:')
    file_type=file[file.rfind('.')+1:]  # 音頻文件類型 mp3、wav
    start=input("(可用輸入0,空格,(1:1,1分1秒):)\n輸入開始截取時間:")
    end=input("(可用輸入空格,(1:1,1分1秒):)\n輸入結束截取時間:")
    save_file=input("請輸入剪輯之后保存的文件路徑:")
    save_file_type=save_file[save_file.rfind('.')+1:]
    music=Music(file,file_type,start,end,save_file,save_file_type)
    music.editedMusic()  # 1:12  1:36

當然,這個模塊好像還可以滿足一些用戶改變音樂音質的需求,export()方法里面有一個參數bitrate比特率,百度了一下這個東西,好像對音頻音質有一定影響。

怎么在Python中使用pydub模塊轉換音頻格式

關于怎么在Python中使用pydub模塊轉換音頻格式就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳山县| 山西省| 双江| 全椒县| 鲜城| 无棣县| 江油市| 大渡口区| 格尔木市| 渝北区| 滁州市| 托里县| 额敏县| 项城市| 琼中| 滕州市| 布尔津县| 梨树县| 武宁县| 贺兰县| 黔西县| 商南县| 青铜峡市| 阜康市| 贡觉县| 西盟| 云南省| 宝兴县| 长汀县| 调兵山市| 彰武县| 上饶县| 岢岚县| 贺兰县| 平果县| 佛山市| 沂源县| 柯坪县| 偃师市| 科技| 孝昌县|