May-28-2020, 06:01 PM
Hi All,
I am trying to process some audio parallel with taking some images.
The idea is to grab a data from the micropohone using pyaudio, then
Process that audio in a callback furntion, then
take an image from the webcam and plot this together with some information from the audio stream.
I am having trouble in producing the image during the pyaudio loop.
During running the figure remains blank, sometimes when i press "stop current command" in spyder it start to run.
The latter makes me think I must be close, can someone assist?
Thanks,
I am trying to process some audio parallel with taking some images.
The idea is to grab a data from the micropohone using pyaudio, then
Process that audio in a callback furntion, then
take an image from the webcam and plot this together with some information from the audio stream.
I am having trouble in producing the image during the pyaudio loop.
During running the figure remains blank, sometimes when i press "stop current command" in spyder it start to run.
The latter makes me think I must be close, can someone assist?
Thanks,
import pyaudio import numpy as np import matplotlib.pyplot as plt import cv2 import time CHUNK = 1024 * 10 WINDOW = 5 * CHUNK FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 THRESH = 100 cap = cv2.VideoCapture(0) p = pyaudio.PyAudio() fig, ax = plt.subplots() image = ax.imshow(np.zeros((480,460)),animated=False,cmap='gray', vmin=0, vmax=255) def callback(in_data, frame_count, time_info, status): data = np.frombuffer(in_data, dtype=np.int16) # proces audio ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) image.set_array(gray) # fig.canvas.draw() # ax.plot([0,0],[max(data),max(data)],c='white') # fig.canvas.flush_events() # flag = pyaudio.paContinue return (in_data, flag) stream = p.open( format = FORMAT, channels = CHANNELS, rate = RATE, input = True, input_device_index = 0, output = False, frames_per_buffer = CHUNK, stream_callback=callback) stream.start_stream() while stream.is_active(): time.sleep(0.1) cap.release() cv2.destroyAllWindows() stream.stop_stream() stream.close()