wave ---读写wav文件

源代码: Lib/wave.py


这个 wave 模块为wav声音格式提供了方便的接口。它不支持压缩/解压,但支持单声道/立体声。

这个 wave 模块定义以下函数和异常:

wave.open(file, mode=None)

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

'rb'

只读模式。

'wb'

只写模式。

请注意,它不允许读/写wav文件。

A mode 属于 'rb' 返回A Wave_read 对象,而A mode 属于 'wb' 返回A Wave_write 对象。如果 mode 被省略,一个类似文件的对象作为 filefile.mode 用作的默认值 mode .

如果传入类似文件的对象,则当其 close() 方法;调用方负责关闭文件对象。

这个 open() 函数可用于 with 语句。当 with 块完成后, Wave_read.close()Wave_write.close() 方法被调用。

在 3.4 版更改: 添加了对不可浏览文件的支持。

exception wave.Error

由于违反了WAV规范或遇到了实现缺陷而使某些事情不可能发生时引发的错误。

波形读取对象

波形读取对象,由返回 open() ,方法如下:

Wave_read.close()

如果流是由打开的,则将其关闭 wave ,并使实例不可用。这将在对象集合中自动调用。

Wave_read.getnchannels()

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

Wave_read.getsampwidth()

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

Wave_read.getframerate()

返回采样频率。

Wave_read.getnframes()

返回音频帧数。

Wave_read.getcomptype()

返回压缩类型 ('NONE' 是唯一受支持的类型)。

Wave_read.getcompname()

人类可读版本 getcomptype() . 通常 'not compressed' 平行线 'NONE' .

Wave_read.getparams()

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

Wave_read.readframes(n)

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

Wave_read.rewind()

将文件指针倒带到音频流的开头。

以下两种方法是为与 aifc 模块,不要做任何有趣的事情。

Wave_read.getmarkers()

返回 None .

Wave_read.getmark(id)

提出错误。

以下两个方法定义了一个术语“位置”,该术语在它们之间是兼容的,否则依赖于实现。

Wave_read.setpos(pos)

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

Wave_read.tell()

返回当前文件指针位置。

波形写入对象

对于可查找的输出流, wave 标题将自动更新,以反映实际写入的帧数。对于无法靠近的溪流, n框架 写入第一帧数据时,值必须准确。精确的 n框架 值可以通过调用 setnframes()setparams() 使用之前要写入的帧数 close() 调用然后使用 writeframesraw() 写入帧数据,或通过调用 writeframes() 所有帧数据都要写入。在后一种情况下 writeframes() 将计算数据中的帧数并设置 n框架 因此,在写入帧数据之前。

wave-write对象,由返回 open() ,方法如下:

在 3.4 版更改: 添加了对不可浏览文件的支持。

Wave_write.close()

确保 n框架 是正确的,如果文件是由 wave . 对对象集合调用此方法。如果无法找到输出流,它将引发异常,并且 n框架 与实际写入的帧数不匹配。

Wave_write.setnchannels(n)

设置通道数。

Wave_write.setsampwidth(n)

将样本宽度设置为 n 字节。

Wave_write.setframerate(n)

将帧速率设置为 n .

在 3.2 版更改: 此方法的非整数输入被舍入为最接近的整数。

Wave_write.setnframes(n)

将帧数设置为 n . 如果实际写入的帧数不同,则稍后会更改此设置(如果无法找到输出流,则此更新尝试将引发错误)。

Wave_write.setcomptype(type, name)

设置压缩类型和描述。目前,只有压缩型 NONE 支持,表示没有压缩。

Wave_write.setparams(tuple)

这个 元组 应该是 (nchannels, sampwidth, framerate, nframes, comptype, compname) ,其值对 set*() 方法。设置所有参数。

Wave_write.tell()

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

Wave_write.writeframesraw(data)

编写音频帧,不更正 n框架 .

在 3.4 版更改: 任何 bytes-like object 现在被接受。

Wave_write.writeframes(data)

编写音频帧并确保 n框架 是正确的。如果输出流不可查找,并且之后写入的帧总数大于 data 已写入与以前设置的值不匹配 n框架 .

在 3.4 版更改: 任何 bytes-like object 现在被接受。

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