scipy.io.wavfile.read

scipy.io.wavfile.read(filename, mmap=False)[源代码]

打开WAV文件。

从LPCM WAV文件返回采样率(以样本/秒为单位)和数据。

参数
filename字符串或打开的文件句柄

输入wav文件。

mmap布尔值,可选

是否将数据作为内存映射读取(默认值:false)。与某些位深度不兼容;请参阅注释。仅用于真实文件。

0.12.0 新版功能.

退货
rate集成

WAV文件的采样率。

dataNumpy数组

从WAV文件读取数据。数据类型由文件确定;请参阅备注。对于1通道WAV,数据为1-D,否则,数据为2-D形状(N个采样、N个通道)。如果没有类C文件描述符的类文件输入(例如, io.BytesIO )通过,则这将是不可写的。

注意事项

常见数据类型: [1]

WAV格式

最小

最大值

NumPy数据类型

32位浮点

-1.0

+1.0

浮动32

32位整数PCM

-2147483648

+2147483647

int32

24位整数PCM

-2147483648

+2147483392

int32

16位整数PCM

-32768

+32767

Int16

8位整数PCM

0

255

uint8

WAV文件可以指定任意位深度,此函数支持读取1到64位之间的任意整数PCM深度。数据以兼容的最小Numpy int类型以左对齐格式返回。8位和更低位是无符号的,而9位和更高位是有符号的。

例如,24位数据将存储为int32,24位数据的MSB存储在int32的MSB处,通常最低有效字节为0x00。(但是,如果文件实际包含的数据超过其指定的位深度,则也将读取和输出这些位。 [2])

此位对齐和符号与WAV的本机内部格式匹配,该格式允许对每个样本使用1、2、4或8字节的WAV文件进行内存映射(因此24位文件不能进行内存映射,但32位可以)。

支持32位或64位格式的IEEE Float PCM,带或不带mmap。值超过 [-1, +1] 没有被剪裁。

不支持非线性PCM(µ律、A律)。

参考文献

1

IBM Corporation and Microsoft Corporation,“Multimedia Programming Interface and Data Specification 1.0”,“Data Format of the Samples”一节,1991年8月,http://www.tactilemedia.com/info/MCI_Control_Info.html

2

Adobe Systems Incorated,“Adobe Audition 3用户指南”,“音频文件格式:24位压缩整数(类型1,20位)”一节,2007

示例

>>> from os.path import dirname, join as pjoin
>>> from scipy.io import wavfile
>>> import scipy.io

从test/data目录获取示例.wav文件的文件名。

>>> data_dir = pjoin(dirname(scipy.io.__file__), 'tests', 'data')
>>> wav_fname = pjoin(data_dir, 'test-44100Hz-2ch-32bit-float-be.wav')

加载.wav文件内容。

>>> samplerate, data = wavfile.read(wav_fname)
>>> print(f"number of channels = {data.shape[1]}")
number of channels = 2
>>> length = data.shape[0] / samplerate
>>> print(f"length = {length}s")
length = 0.01s

绘制波形。

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> time = np.linspace(0., length, data.shape[0])
>>> plt.plot(time, data[:, 0], label="Left channel")
>>> plt.plot(time, data[:, 1], label="Right channel")
>>> plt.legend()
>>> plt.xlabel("Time [s]")
>>> plt.ylabel("Amplitude")
>>> plt.show()
../../_images/scipy-io-wavfile-read-1.png