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 进行深度处理,实现数据分析和音频生成。
“点赞有美意,赞赏是鼓励”
热门跟贴