struct.error: для распаковки требуется буфер 1024 байта - PullRequest
0 голосов
/ 18 апреля 2020
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', data )

struct.error: для распаковки требуется буфер 1024 байта"

1 Ответ

1 голос
/ 18 апреля 2020

struct.unpack здесь не требуется. Байтные строки уже проиндексированы как целые числа, поэтому data[index] возвращает целое число. Если вам нужен изменяемый список с этими целыми числами, list(data) вернет его.

Пример:

>>> data = b'\x01\x02\x03abc'
>>> data
b'\x01\x02\x03abc'
>>> data[0]
1
>>> list(data)
[1, 2, 3, 97, 98, 99]
...