我已經給出了一個連續水下錄製的大型WAV文件,我想將其轉換爲用於分析的numpy數組。我正在努力做到這一點。將3個字節的立體聲WAV文件轉換爲numpy陣列
到目前爲止,我有:
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 \命苦\ XFF @ \ X01 \ X00'。我試圖使用結構解壓縮它,但解壓縮任何我做我會得到以下錯誤:「字符大小不匹配格式」。我想這與Python結構無法處理24位數據的事實有關。
波文件的參數看起來如下:
- nchannels = 2
- sampwidth = 3
- 幀率= 48000
- 將爲nframes = 283516532L
- comptype = 'NONE'
- compname ='not compressed'
有人知道如何將24位立體聲WAV文件讀入numpy數組中嗎?
我認爲'scipy'讀取24位wav文件到的32個的整數的數組,但它不寫24位wavs。你總是可以一次讀取一個字節,然後把它們轉換成24位的值,就像'w24 =(w8_3 << 16)| (w8_2 << 8)| w8_1' – Jaime