Различные питон модули для чтения 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 return, которые могут быть преобразованы в float в соответствии с количеством бит кодирования.
Например:
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
Это действительно сбивает с толку, когда кто-то еще с моим именем задает вопрос, который я задаю, но у меня нет памяти об этом сам :) – Roman
Что такое гексагональные числа? – glglgl
@glglgl Вероятно, это не означает: https://en.wikipedia.org/wiki/Hexagonal_number :-) – JakeD