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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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