struct.error: unpack requires a buffer of 1024 bytes

struct.error: unpack requires a buffer of 1024 bytes

import pyaudio
import struct
import numpy 
import matplotlib.pyplot as plt 
import wave
import array
filaname=".test.wav"
wf=wave.open(filaname,"rb")
CHUNK=512*2
FORMAT=pyaudio.paInt16
CHANNELS=1
RATE=44100
p=pyaudio.PyAudio()
stream=p.open(
    format=FORMAT,
    channels=CHANNELS,
    rate=RATE,
    input=True,
    output=True,
    frames_per_buffer=CHUNK
)
data=wf.readframes(CHUNK)
data_int=struct.unpack(str(CHUNK)+ 'B',data)
print(data_int)

上面是我试图将音频字节转换为整数但出现错误的代码“data_int=struct.unpack(str(CHUNK )+ 'B',数据)

struct.error: 解包需要 1024 字节的缓冲区"

struct.unpack 在这里是不必要的。字节串已经被索引为整数,所以 data[index] returns 是一个整数。如果你需要一个可变列表,如果这些整数,list(data) 将 return 它。 bytearray 也是 bytes 的可变版本。

示例:

>>> data = b'\x01\x02\x03abc'
>>> data[0]
1
>>> list(data)
[1, 2, 3, 97, 98, 99]
>>> ba = bytearray(data)
>>> ba
bytearray(b'\x01\x02\x03abc')
>>> ba[3]=5
>>> ba
bytearray(b'\x01\x02\x03\x05bc')