scipy.io.wavfile.

#

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

打开一个 WAV 文件。

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

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

输入 WAV 文件。

mmapbool, 可选

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

Added in version 0.12.0.

返回:
速率整数

WAV 文件的采样率。

数据numpy 数组

从WAV文件读取的数据。数据类型由文件决定;参见注释。数据对于单声道WAV是1维的,否则是形状为(Nsamples, Nchannels)的2维。如果传递的是没有C类文件描述符的类文件输入(例如,io.BytesIO),则无法写入。

注释

常见数据类型:[1]

WAV 格式

最小

最大

NumPy 数据类型

32位浮点数

-1.0

+1.0

float32

32位整数PCM

-2147483648

+2147483647

int32

24-bit 整数 PCM

-2147483648

+2147483392

int32

16位整数PCM

-32768

+32767

int16

8位整数脉冲编码调制

0

255

uint8

WAV 文件可以指定任意的位深度,此函数支持读取从 1 到 64 位的任何整数 PCM 深度。数据以最小的兼容 numpy int 类型返回,采用左对齐格式。8 位及以下为无符号,而 9 位及以上为有符号。

例如,24位数据将存储为int32,其中24位数据的最高有效位存储在int32的最高有效位,通常最低有效字节为0x00。(然而,如果文件实际包含超出其指定位深的数据,这些位也将被读取并输出。[2]

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

支持32位或64位格式的IEEE浮点PCM,无论是否使用mmap。超出[-1, +1]范围的值不会被截断。

非线性 PCM(μ-law,A-law)不受支持。

参考文献

[1]

IBM 公司和微软公司,“多媒体编程接口和数据规范 1.0”,章节“样本的数据格式”,1991年8月 http://www.tactilemedia.com/info/MCI_Control_Info.html

[2]

Adobe Systems Incorporated, “Adobe Audition 3 用户指南”, 章节 “音频文件格式: 24-bit Packed Int (类型 1, 20-bit)”, 2007

示例

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

从 tests/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