scipy.io.wavfile.

читать#

scipy.io.wavfile.читать(filename, mmap=False)[источник]#

Открыть WAV файл.

Возвращает частоту дискретизации (в выборках/сек) и данные из LPCM WAV-файла.

Параметры:
filenameстрока или открытый файловый дескриптор

Входной WAV файл.

mmapbool, необязательно

Считывать ли данные как отображенные в память (по умолчанию: False). Несовместимо с некоторыми глубинами бит; см. Примечания. Использовать только для реальных файлов.

Добавлено в версии 0.12.0.

Возвращает:
скоростьint

Частота дискретизации WAV-файла.

данныеnumpy array

Данные, считанные из WAV-файла. Тип данных определяется из файла; см. Примечания. Данные одномерные для одноканального WAV или двумерные формы (Nsamples, Nchannels) в противном случае. Если ввод похож на файл без дескриптора файла в стиле C (например, io.BytesIO) передано, это не будет доступно для записи.

Примечания

Общие типы данных: [1]

Формат WAV

Min

Макс

Тип данных NumPy

32-битное число с плавающей запятой

-1.0

+1.0

float32

32-битное целое PCM

-2147483648

+2147483647

int32

24-битное целое PCM

-2147483648

+2147483392

int32

16-битное целочисленное PCM

-32768

+32767

int16

8-битное целое PCM

0

255

uint8

WAV-файлы могут указывать произвольную глубину бит, и эта функция поддерживает чтение любой целочисленной глубины PCM от 1 до 64 бит. Данные возвращаются в наименьшем совместимом целочисленном типе numpy, в формате с выравниванием по левому краю. 8 бит и ниже беззнаковые, а 9 бит и выше знаковые.

Например, 24-битные данные будут храниться как int32, при этом старший значащий бит 24-битных данных хранится в старшем значащем бите int32, и обычно младший значащий байт равен 0x00. (Однако, если файл действительно содержит данные за пределами указанной битовой глубины, эти биты также будут прочитаны и выведены. [2])

Это выравнивание битов и знак соответствуют собственному внутреннему формату WAV, что позволяет отображать WAV-файлы в память, использующие 1, 2, 4 или 8 байт на сэмпл (поэтому 24-битные файлы не могут быть отображены в память, но 32-битные могут).

Поддерживается IEEE float PCM в 32- или 64-битном формате, с mmap или без. Значения, выходящие за пределы [-1, +1], не обрезаются.

Не поддерживается нелинейный PCM (мю-закон, A-закон).

Ссылки

[1]

IBM Corporation и Microsoft Corporation, «Multimedia Programming Interface and Data Specifications 1.0», раздел «Data Format of the Samples», август 1991 http://www.tactilemedia.com/info/MCI_Control_Info.html

[2]

Adobe Systems Incorporated, “Adobe Audition 3 User Guide”, раздел “Audio file formats: 24-bit Packed Int (type 1, 20-bit)”, 2007

Примеры

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

Получить имя файла для примера .wav файла из директории tests/data.

>>> 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