目錄
1. 安裝
2. 匯入和讀取音訊檔案
3. 播放音訊
4. 音訊長度
5. 音訊切割
6. 音訊合併
7.音訊轉換
8. 調整音量
9. 等分割音訊
10. 完整程式碼
應用案例
1. 將音訊檔案轉換為指定格式
2. 將多個音訊檔案合併為一個檔案
3 . 製作鈴聲
4. 調整音訊音量
首頁 後端開發 Python教學 Python音訊處理庫pydub如何使用

Python音訊處理庫pydub如何使用

May 06, 2023 am 11:58 AM
python pydub

    1. 安裝

    使用pip安裝即可(還需安裝ffmpeg依賴,建議使用conda指令安裝,則不需要設定環境):

    pip install pydub
    登入後複製

    2. 匯入和讀取音訊檔案

    from pydub import AudioSegment
    audio = AudioSegment.from_file("path/to/file")
    登入後複製

    3. 播放音訊

    from pydub.playback import play
    play(audio)
    登入後複製

    4. 音訊長度

    duration = audio.duration_seconds # 单位为秒
    登入後複製

    5. 音訊切割

    # 前10秒
    audio = audio[:10000]
    
    # 后10秒
    audio = audio[-10000:]
    
    # 从第10秒开始到第20秒结束
    audio = audio[10000:20000]
    
    # 从第10秒开始到结尾
    audio = audio[10000:]
    
    # 从开始到第10秒audio = audio[:10000]
    登入後複製

    6. 音訊合併

    audio1 = AudioSegment.from_file("path/to/file1")
    audio2 = AudioSegment.from_file("path/to/file2")
    audio_combined = audio1 + audio2
    登入後複製

    7.音訊轉換

    audio.export("path/to/new/file", format="mp3")
    登入後複製

    8. 調整音量

    # 增加10分贝
    louder_audio = audio + 10
    
    # 减小10分贝
    quieter_audio = audio - 10
    登入後複製

    9. 等分割音訊

    # 等分分割,按大概每三分钟进行分割
    for i in range(1, 1000):
        if 3.3 >= (audio.duration_seconds / (60 * i)) >= 2.8:
            number = i
            break
    chunks = audio[::int(audio.duration_seconds / number * 1000 + 1)]  # 切割
    
    # 保存分割后的音频
    for i, chunk in enumerate(chunks):
        chunk.export("path/to/new/file{}.wav".format(title,i), format="wav")
    登入後複製

    10. 完整程式碼

    以下是一段完整的程式碼,用於對音訊進行前後切割,並將音訊分割成適當長度的小段進行儲存。

    from pydub import AudioSegment
    
    # 读取音频文件
    audio = AudioSegment.from_file("path/to/file")
    
    # 输出视频时长
    print('视频时长:', audio.duration_seconds / 60)
    
    # 前后切割
    start = int(input('前切割n秒,不切割输入0'))*1000
    end = int(input('后切割n秒,不切割输入0'))*1000
    if start:
        audio = audio[start:-end]
    
    # 计算合适的分割长度
    for i in range(1, 1000):
        if 3.3 >= (audio.duration_seconds / (60 * i)) >= 2.8:
            number = i
            break
    chunks = audio[::int(audio.duration_seconds / number * 1000 + 1)] 
    # 保存分割后的音频
    for i, chunk in enumerate(chunks):
        print('分割后的时长:', chunk.duration_seconds / 60)
        chunk.export("path/to/new/file{}.wav".format(i), format="wav")
    登入後複製

    應用案例

    1. 將音訊檔案轉換為指定格式

    from pydub import AudioSegment
    
    # 读取音频文件
    audio = AudioSegment.from_file("path/to/file")
    
    # 转换为mp3格式并保存
    audio.export("path/to/new/file.mp3", format="mp3")
    登入後複製

    2. 將多個音訊檔案合併為一個檔案

    from pydub import AudioSegment
    
    # 读取音频文件
    audio1 = AudioSegment.from_file("path/to/file1")
    audio2 = AudioSegment.from_file("path/to/file2")
    
    # 合并音频文件并保存
    combined_audio = audio1 + audio2
    combined_audio.export("path/to/new/file", format="wav")
    登入後複製

    3 . 製作鈴聲

    from pydub import AudioSegment
    
    # 读取音频文件
    audio = AudioSegment.from_file("path/to/file")
    
    # 切割并保存
    start = 10000
    end = 15000
    ringtone = audio[start:end]
    ringtone.export("path/to/new/file", format="mp3")
    登入後複製

    4. 調整音訊音量

    from pydub import AudioSegment
    
    # 读取音频文件
    audio = AudioSegment.from_file("path/to/file")
    
    # 增加10分贝
    louder_audio = audio + 10
    
    # 减小10分贝
    quieter_audio = audio - 10
    
    # 保存调整后的音频
    louder_audio.export("path/to/new/file", format="wav")
    quieter_audio.export("path/to/new/file", format="wav")
    登入後複製

    案例:透過辨識空白音,分割音訊中的歌曲

    from pydub import AudioSegment
    from pydub.silence import split_on_silence
    
    # 读取音频文件
    audio = AudioSegment.from_file("audio.mp3", format="mp3")
    
    # 设置分割参数
    min_silence_len = 700  # 最小静音长度
    silence_thresh =-10  # 静音阈值,越小越严格
    keep_silence = 600  # 保留静音长度
    
    # 计算分割数量
    num_segments = int(audio.duration_seconds/60/3)  # 每首歌曲大概三分钟,计算歌曲数量
    
    # 分割音频文件
    for i in range(-10, 0):
        segments = split_on_silence(audio, min_silence_len=min_silence_len, silence_thresh=i, keep_silence=keep_silence)
        if len(segments) <= num_segments:
            print(f"分割成功,共分割出 {len(segments)} 段")
            break
        else:
            print(f"当前阈值为 {i},分割出 {len(segments)} 段,继续尝试")
    登入後複製

    首先,我們使用AudioSegment.from_file()方法讀取音訊文件,並設定分割參數min_silence_len、silence_thresh和keep_silence分別表示最小靜音長度、靜音閾值和保留靜音長度。其中,靜音閾值越小,分割出的小段越多,但可能會出現誤分割的情況;反之,靜音閾值越大,分割出的小段越少,但可能會出現漏分割的情況。

    然後,我們計算分割數量num_segments,即將音訊檔案分割成多少段。這裡我們假設每首歌大概三分鐘,計算出總共需要分割成多少段。

    最後,我們使用split_on_silence()方法對音訊檔案進行分割,設定分割參數,並透過循環來不斷調整靜音閾值,直到分割出的小段數量符合預期為止。如果分割成功,則跳出循環;否則,繼續嘗試。

    總而言之,pydub是一個非常實用的音訊處理庫,可以方便地進行音訊處理、轉換、合併等操作。同時,pydub還有豐富的應用場景,如製作鈴聲、調整音量等。值得注意的是,在使用pydub的過程中,需要注意音訊格式的相容性問題。

    此外,還可以透過pydub對音訊進行編解碼、混音、重採樣等操作。下面是一些常見的操作範例。

    編解碼、混音、重取樣

    1. 編解碼

    from pydub import AudioSegment
    
    # 读取音频文件
    audio = AudioSegment.from_file("path/to/file")
    
    # 编码
    encoded_audio = audio.set_frame_rate(16000).set_sample_width(2).set_channels(1)
    
    # 解码
    decoded_audio = encoded_audio.set_frame_rate(44100).set_sample_width(4).set_channels(2)
    登入後複製

    2. 混音

    from pydub import AudioSegment
    
    # 读取音频文件
    audio1 = AudioSegment.from_file("path/to/file1")
    audio2 = AudioSegment.from_file("path/to/file2")
    
    # 混音
    mixed_audio = audio1.overlay(audio2)
    
    # 保存混音后的音频
    mixed_audio.export("path/to/new/file", format="wav")
    登入後複製

    3.重採樣

    from pydub import AudioSegment
    
    # 读取音频文件
    audio =AudioSegment.from_file("path/to/file")
    
    # 重采样为44100Hz
    resampled_audio = audio.set_frame_rate(44100)
    
    # 保存重采样后的音频
    resampled_audio.export("path/to/new/file", format="wav")
    登入後複製

    透過pydub,我們可以方便地進行音訊編解碼、混音、重採樣等操作,進一步擴展了pydub的應用場景。需要注意的是,在進行音訊混音操作時,需要確保兩個音訊檔案的取樣率、取樣位數和聲道數相同。

    最後,總結一下pydub的優點和缺點。

    優點:

    輕量級:pydub是一個輕量級的音訊處理庫,安裝方便,使用簡單。

    功能豐富:pydub提供了豐富的音訊處理功能,包括切割、合併、轉換、調整音量、編解碼、混音、重採樣等。

    應用廣泛:pydub的應用場景非常廣泛,包括音訊處理、鈴聲製作、音訊格式轉換、語音辨識等等。

    缺點:

    對格式的兼容性有限:pydub對音訊格式的兼容性有限,不支援所有的音訊格式,需要先將音訊轉換為支援的格式後才能進行處理。

    效能一般:pydub在處理大檔案時,效能可能會比較一般,需要耗費一定的時間和運算資源。

    不支援串流處理:pydub不支援串流處理,需要將整個音訊檔案讀取到記憶體中,導致記憶體佔用較大。

    綜上所述,pydub是一個功能豐富、應用廣泛的音訊處理庫。在使用pydub時,需要注意音訊格式的相容性問題,並注意處理大檔案時的效能和記憶體佔用。如果需要處理更複雜的音訊任務,可以考慮使用其他更專業的音訊處理庫。

    以上是Python音訊處理庫pydub如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

    PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

    在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

    PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

    Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

    Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

    PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

    PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

    vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

    VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

    visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

    VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

    sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

    在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

    notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

    在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

    See all articles