scipy.io.wavfile.

read#

scipy.io.wavfile.read(filename, mmap=False)[Quelle]#

Öffnet eine WAV-Datei.

Gibt die Abtastrate (in Samples/Sekunde) und Daten aus einer LPCM WAV-Datei zurück.

Parameter:
filenameString oder geöffnetes Dateihandle

Eingabe-WAV-Datei.

mmapbool, optional

Ob Daten als speicherabbildend gelesen werden sollen (Standard: False). Nicht kompatibel mit einigen Bittiefen; siehe Hinweise. Nur für reale Dateien zu verwenden.

Hinzugefügt in Version 0.12.0.

Rückgabe:
rateint

Abtastrate der WAV-Datei.

datanumpy array

Aus der WAV-Datei gelesene Daten. Der Datentyp wird aus der Datei bestimmt; siehe Hinweise. Daten sind 1-dimensional für 1-Kanal-WAV, andernfalls 2-dimensional mit der Form (Nsamples, Nchannels). Wenn eine dateiähnliche Eingabe ohne einen C-ähnlichen Dateideskriptor (z. B. io.BytesIO) übergeben wird, ist dies nicht beschreibbar.

Hinweise

Gängige Datentypen: [1]

WAV-Format

Min

Max

NumPy dtype

32-Bit Fließkomma

-1.0

+1.0

float32

32-Bit Integer PCM

-2147483648

+2147483647

int32

24-Bit Integer PCM

-2147483648

+2147483392

int32

16-Bit Integer PCM

-32768

+32767

int16

8-Bit Integer PCM

0

255

uint8

WAV-Dateien können beliebige Bittiefen angeben, und diese Funktion unterstützt das Lesen jeder Integer-PCM-Tiefe von 1 bis 64 Bit. Daten werden im kleinsten kompatiblen NumPy-Integer-Typ im linksbündigen Format zurückgegeben. 8 Bit und niedriger sind vorzeichenlos, während 9 Bit und höher vorzeichenbehaftet sind.

Beispielsweise werden 24-Bit-Daten als int32 gespeichert, wobei das MSB der 24-Bit-Daten im MSB des int32 gespeichert ist, und typischerweise ist das niedrigstwertige Byte 0x00. (Wenn eine Datei jedoch tatsächlich Daten über ihre angegebene Bittiefe hinaus enthält, werden diese Bits ebenfalls gelesen und ausgegeben. [2])

Diese Bitjustierung und Vorzeichenübereinstimmung entspricht dem nativen internen Format von WAV, was das speicherabbildende Lesen von WAV-Dateien ermöglicht, die 1, 2, 4 oder 8 Bytes pro Sample verwenden (sodass 24-Bit-Dateien nicht speicherabbildend gelesen werden können, 32-Bit-Dateien jedoch schon).

IEEE Float PCM im 32- oder 64-Bit-Format wird unterstützt, mit oder ohne mmap. Werte, die [-1, +1] überschreiten, werden nicht beschnitten.

Nicht-lineare PCM (mu-law, A-law) wird nicht unterstützt.

Referenzen

[1]

IBM Corporation und Microsoft Corporation, „Multimedia Programming Interface and Data Specifications 1.0“, Abschnitt „Data Format of the Samples“, August 1991 http://www.tactilemedia.com/info/MCI_Control_Info.html

[2]

Adobe Systems Incorporated, „Adobe Audition 3 User Guide“, Abschnitt „Audio file formats: 24-bit Packed Int (type 1, 20-bit)“, 2007

Beispiele

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

Holen Sie sich den Dateinamen für eine Beispiel-.wav-Datei aus dem Verzeichnis tests/data.

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

Laden Sie den Inhalt der .wav-Datei.

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

Plotten Sie die Wellenform.

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