Я хочу сделать анализ моего аудио файла в реальном времени, при преобразовании из двоичного файла wav в int с помощью struct.unpack я получаю ошибку:
data_int =struct.unpack(format, data)
struct.error: unpack requires a buffer of 4096 bytes
Каждый раз, когда я изменяю Аудиоформат или частота, соответствующие размеру буфера 4096, увеличиваются в 2 раза или что-то в этом роде.
Странно то, что в то время как l oop, я не вижу ошибок только на последней итерации, пока l oop и тогда я не могу выйти из этого.
import numpy as np
import pyaudio
import matplotlib.pyplot as plt
import wave
import argparse
from struct import *
import struct
#Get file
filename = 'snare16.wav'
# Set chunk size of 1024 samples per data frame
chunk = 1024
# Open the sound file
wf = wave.open(filename, 'rb')
# Create an interface to PortAudio
p = pyaudio.PyAudio()
# Open a .Stream object to write the WAV file to
stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),
channels = wf.getnchannels(),
rate = wf.getframerate(),
output = True)
# Read data in chunks
data = wf.readframes(chunk)
#Convert binary numbers into int (Bit-Depth)
count = len(data)/2
format = "%dh"%(count) #results in '2048h' as format: 2048 short
# Play the sound by writing the audio data to the stream
while data != '':
#play audio
stream.write(data)
#Read the chunk each rate
data = wf.readframes(chunk)
#Convert data into np array, i.e integers
data_int =struct.unpack(format, data)