Python处理wav文件(二进制文件读写)

本文详细介绍了如何使用Python读取WAV音频文件的头部信息,并通过操作二进制数据调整音频音量。利用标准库struct和array,实现对音频数据的高效处理,包括读取、缩放和写入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wav文件信息格式图

前44字节为头信息,后面的为音频数据。

import struct
import array

# 读取wav文件,二进制要记得用b
file = open('Love Story.wav', 'rb')
# 获取前44个字节,文件信息。
info = file.read(44)
# 获取文件大小, 将指针移动到文件末尾
file_size = file.seek(0, 2)
# 计算数组大小
n = (file_size - 44) // 2
# 生成buf
buf = array.array('h', (0 for _ in range(n)))
# 将文件指针定位到44
file.seek(44)
# 将数据读入到buf中
file.readinto(buf)
# 将声音变小
for i in range(n):
    buf[i] //= 10
# 写入数据
f = open('demo.wav', 'wb')
f.write(info)
buf.tofile(f)
# 关闭文件
f.close()
file.close()

print('完成')

二进制数据可以用readinto,读入到提前分配好的buffer中,便于数据处理。

解析二进制数据可以使用标准库中的struct模块的unpack方法

比如:查看声道数

struct.unpack('h', file[22:24])

查看采样频率

struct.unpack('i', file[24:28])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值