75 lines · 1.9 KB · Python
RawDownload
#! /usr/bin/env python # Use pyaudio to open the microphone and run aubio.pitch on the stream of# incoming samples. If a filename is given as the first argument, it will# record 5 seconds of audio to this location. Otherwise, the script will# run until Ctrl+C is pressed. # Examples:#    $ ./python/demos/demo_pyaudio.py#    $ ./python/demos/demo_pyaudio.py /tmp/recording.wav import pyaudioimport sysimport numpy as npimport aubio # initialise pyaudiop = pyaudio.PyAudio() # open streambuffer_size = 1024pyaudio_format = pyaudio.paFloat32n_channels = 1samplerate = 44100stream = p.open(format=pyaudio_format,                channels=n_channels,                rate=samplerate,                input=True,                frames_per_buffer=buffer_size) if len(sys.argv) > 1:    # record 5 seconds    output_filename = sys.argv[1]    record_duration = 5 # exit 1    outputsink = aubio.sink(sys.argv[1], samplerate)    total_frames = 0else:    # run forever    outputsink = None    record_duration = None # setup pitchtolerance = 0.8win_s = 4096 # fft sizehop_s = buffer_size # hop sizepitch_o = aubio.pitch("default", win_s, hop_s, samplerate)pitch_o.set_unit("midi")pitch_o.set_tolerance(tolerance) print("*** starting recording")while True:    try:        audiobuffer = stream.read(buffer_size)        signal = np.fromstring(audiobuffer, dtype=np.float32)         pitch = pitch_o(signal)[0]        confidence = pitch_o.get_confidence()         print("{} / {}".format(pitch,confidence))         if outputsink:            outputsink(signal, len(signal))         if record_duration:            total_frames += len(signal)            if record_duration * samplerate < total_frames:                break    except KeyboardInterrupt:        print("*** Ctrl+C pressed, exiting")        break print("*** done recording")stream.stop_stream()stream.close()p.terminate()

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t