Мне дали большой WAV-файл непрерывной подводной записи, который я хотел бы преобразовать в массив для анализа. Я изо всех сил пытаюсь это сделать.
Пока у меня есть:
import numpy as np
import scipy as sp
import wave as wv
import struct
wavefile = wv.open(filename,'r')
(nchannels,sampwidth,framerate,nframes,comptype,compname) = wavefile.getparams()
// read a sample as example
wavedata =wavefile.readframes(1)
Первый кадр выглядит так: '\ xcd \ xbc \ xff @ \ x01 \ x00'. Я попытался распаковать его с помощью структуры, но все, что я делаю, я получаю следующую ошибку: «размер str не соответствует формату». Я предполагаю, что это связано с тем, что структура Python не может обрабатывать 24-битные данные.
Параметр wave-файла выглядит следующим образом:
- nchannels = 2
- sampwidth = 3
- частота кадров = 48000
- nframes = 283516532L
- comptype = 'НЕТ'
- compname = 'не сжатый'
Кто-нибудь знает, как читать 24-битный стерео WAV-файл в массив numpy?
scipy
считывает 24-битные файлы WAV в массив 32-битных целых чисел, но не записывает 24-битные WAV-файлы. Вы всегда можете читать байты по одному, и они конвертируют их в 24-битные значения, делая что-то вродеw24 = (w8_3 << 16) | (w8_2 << 8) | w8_1
- person Jaime   schedule 31.10.2013