Различные модули Python для чтения WAV:
Для чтения волнового аудио файла есть как минимум следующие библиотеки:
Самый простой пример:
Это простой пример с Pysoundfile:
import soundfile as sf
data, samplerate = sf.read('existing_file.wav')
Формат вывода:
Внимание! Данные не всегда имеют одинаковый формат, который зависит от библиотеки.
Например:
from scikits import audiolab
from scipy.io import wavfile
from sys import argv
for filetest in argv[1:]:
[x, fs, nbBits] = audiolab.wavread(filePath)
print '\nReading with scikits.audiolab.wavread: ', x
[fs, x] = wavfile.read(filetest)
print '\nReading with scipy.io.wavfile.read: ', x
Чтение с scikits.audiolab.wavread: [0. 0. 0. ..., -0.00097656 -0.00079346
-0,00097656]
Чтение с scipy.io.wavfile.read: [0 0 0 ..., -32 -26 -32]
PySoundFile и Audiolab возвращают значение с плавающей точкой от -1 до 1 (как это делает matab, это соглашение для аудиосигнала). Scipy и wave возвращают целые числа, которые могут быть преобразованы в число с плавающей точкой в соответствии с количеством битов кодирования.
Например:
from scipy.io.wavfile import read as wavread
[samplerate, x] = wavread(audiofilename) # x is a numpy array of integer, representing the samples
# scale to -1.0 -- 1.0
if x.dtype == 'int16':
nb_bits = 16 # -> 16-bit wav files
elif x.dtype == 'int32':
nb_bits = 32 # -> 32-bit wav files
max_nb_bit = float(2 ** (nb_bits - 1))
samples = x / (max_nb_bit + 1.0) # samples is a numpy array of float representing the samples