wave 是 Python 標準庫中用于讀寫 WAV(Waveform Audio File Format)音頻文件的模塊。它提供了對 PCM 編碼的無壓縮音頻文件的訪問接口,可以讀取音頻幀、獲取音頻參數,也可以創建和寫入 WAV 文件。由于 WAV 是常用的音頻格式之一,wave 模塊在音頻處理、信號分析、語音識別等場景中非常實用。
常見應用場景:
(1)音頻文件讀取
從 WAV 文件中提取音頻幀和參數,用于分析或播放。
(2)音頻文件生成
將 PCM 數據寫入 WAV 文件,生成音頻。
(3)音頻處理與信號分析
與 、 等結合,實現音頻特征提取或數字信號處理。
(4)語音處理
對語音數據進行采樣、幀切分、特征分析等。
(5)自動化音頻生成工具
生成提示音、告警音或其他簡單音效。
◆ ◆ ◆
核心概念
1、Wave_read 對象
通過 wave.open(file, "rb") 創建,用于讀取 WAV 文件的參數和幀數據。
2、Wave_write 對象
通過 wave.open(file, "wb") 創建,用于寫入 WAV 文件。
3、音頻參數
nchannels:聲道數(1=單聲道,2=立體聲)
sampwidth:每個采樣字節數(如 2 表示 16 位)
framerate:采樣率(Hz)
nframes:音頻幀總數
comptype / compname:壓縮類型,WAV 通常為 "NONE"
4、幀操作
readframes(n):讀取 n 幀數據
writeframes(data):寫入幀數據
音頻幀是二進制數據,可與 struct 或 numpy 結合處理。
◆ ◆ ◆
應用舉例
例 1:讀取 WAV 文件基本信息
print("總幀數:", wf.getnframes())例 2:讀取音頻幀
print("幀數據長度:", len(frames))例 3:寫入 WAV 文件
wf.writeframes(b"\x00\x00" * 44100) # 1 秒靜音例 4:復制 WAV 文件
dst.writeframes(src.readframes(src.getnframes()))例 5:使用 numpy 處理 WAV 數據
print("前 10 個采樣值:", data[:10])◆ ◆ ◆
常用 API 與方法
wave.open(filename, mode)
打開 WAV 文件,返回 Wave_read 或 Wave_write 對象。
參數:
filename:文件路徑。
mode:模式 "rb"(讀取)或 "wb"(寫入)。
返回:Wave_read / Wave_write 實例。
Wave_read.getnchannels()
獲取聲道數。
返回:整數(聲道數)。
Wave_read.getsampwidth()
獲取每個采樣字節數。
返回:整數(字節數)。
Wave_read.getframerate()
獲取采樣率(Hz)。
返回:整數。
Wave_read.getnframes()
獲取音頻幀總數。
返回:整數。
Wave_read.readframes(n)
讀取 n 幀音頻數據。
參數:
n:讀取幀數。
返回:字節對象(frames)。
Wave_write.setnchannels(n)
設置聲道數。
參數:整數。
返回:無。
Wave_write.setsampwidth(n)
設置采樣寬度(字節數)。
參數:整數。
返回:無。
Wave_write.setframerate(rate)
設置采樣率。
參數:整數。
返回:無。
Wave_write.writeframes(data)
寫入音頻幀。
參數:字節對象。
返回:無。
小結
wave 模塊提供了對 WAV 音頻文件的讀取與寫入能力,適用于音頻分析、信號處理、語音處理和自動化音效生成。通過 Wave_read 和 Wave_write 對象,可以方便地獲取音頻參數、操作幀數據,并結合 numpy 或 scipy 進行深度處理,實現數據分析和音頻生成。
![]()
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.