oscilloscopeΒΆ
Sample microphone and display input signal in realtime
import pyaudio
import numpy as np
from gr.pygr import *
FS = 44100  # Sampling frequency
SAMPLES = 1000
mic = None
def get_audio_data():
    global mic
    if mic is None:
        pa = pyaudio.PyAudio()
        mic = pa.open(format=pyaudio.paInt16, channels=1, rate=FS,
                      input=True, frames_per_buffer=SAMPLES)
    amplitudes = np.frombuffer(mic.read(SAMPLES), dtype=np.int16)
    return amplitudes / 32768.
start = time.time()
while time.time() - start < 10:
    try:
        amplitudes = get_audio_data()
    except (IOError):
        continue
    plot(range(SAMPLES), amplitudes, xlim=(0, SAMPLES), ylim=(-1, 1))