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,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
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() |