У меня есть живой микрофон с использованием pyaudio, который я использую в модели машинного обучения. Он принимает входной сигнал с микрофона, преобразует его в мельспектрограмму и сохраняет снимок мельспектрограммы после нескольких кадров в виде JPG, который затем отправляется через модель ML.
Я могу только заставить программу посылать 1 jpg через модель до остановки потока.
Как я могу делать это постоянно?
rate = 32000
CHUNK = rate // 4
def Processing(stream):
frames = []
fig = plt.figure(figsize=(10, 4))
do_melspec = librosa.feature.melspectrogram
pwr_to_db = librosa.core.power_to_db
while True:
start = time.time()
data = stream.read(CHUNK)
data = np.fromstring(data, dtype=np.float32)
melspec = do_melspec(y=data, sr=rate, n_mels=256, fmax=16000)
norm_melspec = pwr_to_db(melspec, ref=np.max)
frames.append(norm_melspec)
if len(frames) == 20:
#converts to mel spectrogram then JPG then JPG through model
if __name__=="__main__":
p=pyaudio.PyAudio()
stream=p.open(format=pyaudio.paFloat32,channels=1,
rate=rate,input=True,
output=True,
input_device_index=0,frames_per_buffer=CHUNK)
for i in range(sys.maxsize**10):
Processing(stream)
stream.stop_stream()
stream.close()
p.terminate()