wave– 读取和写入WAV文件

源代码: Lib / wave.py


wave模块为WAV声音格式提供了方便的界面。它不支持压缩/解压缩,但它支持单声道/立体声.

wave模块定义了以下功能和异常:

wave.openfile, mode=None

如果file是一个字符串,请用该名称打开文件,否则将其视为类似文件的对象。mode可以是:

"rb"
只读模式.
"wb"
只写模式.

注意它不允许读/写WAV文件.

mode "rb"返回Wave_read对象,而mode "wb"返回Wave_write宾语。如果省略mode并传递类似于文件的对象,则file, file.mode用作mode.

的默认值如果传入类文件对象,则wave对象不会调用close()方法时关闭它;调用者负责关闭文件对象.

open()函数可用于with语句。当with阻塞完成时,Wave_read.close()Wave_write.close()方法被调用.

更改版本3.4:添加对不可搜索文件的支持.

wave.openfp (file, mode)

同义词open(),保持向后兼容性.

从版本3.7开始不推荐使用,将在版本3.9.中删除

exception wave.Error

当某些东西不可能因为它违反了WAV规范或遇到实施不足而引发的错误.

Wave_read对象

wave_read对象,由open(),有以下方法:

Wave_read.close

如果被wave,并使实例不可用。这是在对象集合上自动调用的.

Wave_read.getnchannels

返回音频通道数(1单声道,2用于立体声).

Wave_read.getsampwidth

以字节为单位返回样本宽度.

Wave_read.getframerate()

回收采样频率.

Wave_read.getnframes ( )

返回音频帧数.

Wave_read.getcomptype()

Returns压缩类型("NONE"是唯一支持的类型。)

Wave_read.getcompname

getcomptype()的人类可读版本。通常"not compressed"并行"NONE".

Wave_read.getparams

返回namedtuple() (nchannels, sampwidth,framerate, nframes, comptype, compname),相当于get*()方法的输出。

Wave_read.readframesn

最多读取和返回n音频帧,如bytes对象.

Wave_read.rewind ()

将文件指针倒回到音频流的开头.

为了与aifc模块,什么都不做有趣

Wave_read.getmarkers

返回None.

Wave_read.getmarkid

提出错误

以下两种方法定义了一个术语“位置”,它与之相容,并且依赖于实现.

Wave_read.setpos (pos)

将文件指针设置到指定位置。

Wave_read.tell

返回当前文件指针位置

Wave_write对象

对于可查找的输出流,wave标题将自动更新以反映实际写入的帧数。对于不可搜索的流,nframes值必须在写入第一帧数据时准确。不准确nframes可以通过调用setnframes()setparams()来调用close()之前写入的帧数,然后使用writeframesraw()来编写帧数据,或致电writeframes()包含要写入的所有帧数据。在后一种情况下writeframes()将计算数据中的帧数并在写入帧数据之前相应地设置nframes.

open()返回的Wave_write对象具有以下方法:

在版本3.4中更改添加对不可搜索文件的支持.

Wave_write.close (

确保 nframes是正确的,如果文件被wave打开,则关闭文件。在对象集合时调用此方法。如果输出流不可寻找并且nframes与实际写入的帧数不匹配.

Wave_write.setnchannelsn

设置通道数量

Wave_write.setsampwidthn

将样本宽度设置为nbytes.

Wave_write.setframeraten

将帧速率设置为n.

更改版本3.2:此方法的非整数输入四舍五入到最近的整数

Wave_write.setnframes// (n)

设置帧数至 n。如果实际写入的帧数不同(如果输出流不可搜索,则此更新尝试将引发错误)将在以后更改.

Wave_write.setcomptypetype, name

设置压缩类型和描述。目前,只有压缩类型NONE支持,意味着没有压缩.

Wave_write.setparamstuple

tuple应该 (nchannels, sampwidth, framerate, nframes, comptype,compname),值为set*()方法。设置allparameters.

Wave_write.tell()

返回文件中的当前位置,与Wave_read.tell()Wave_read.setpos()方法具有相同的免责声明.

Wave_write.writeframesraw(data)

写入音频帧,无需更正nframes.

更改版本3.4:任何字节对象现已被接受.

Wave_write.writeframesdata

写音频帧并确保nframes是正确的。如果输出流不可寻找并且在data已写入与nframes.

的以前设置值不匹配在版本3.4中更改:任何字节对象现在已被接受.

注意在调用writeframes()writeframesraw()后设置任何参数无效,任何尝试这样做都会引起wave.Error.