From 58623c5b2d4f34683c646a7ae8ef27f7567bb8be Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Wed, 25 Mar 2020 23:36:34 -0400 Subject: [PATCH] Add record python script --- bin/.bin/record | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 bin/.bin/record diff --git a/bin/.bin/record b/bin/.bin/record new file mode 100755 index 0000000..5bd4727 --- /dev/null +++ b/bin/.bin/record @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +import sys +import wave + +import pyaudio + + +def record_audio(seconds: int, filename: str) -> None: + oformat = pyaudio.paInt16 + channels = 2 + rate = 44100 + chunk = 1024 + record_seconds = int(seconds) + wave_output_filename = f"{filename}.wav" + + audio = pyaudio.PyAudio() + + # start Recording + stream = audio.open( + format=oformat, + channels=channels, + rate=rate, + input=True, + frames_per_buffer=chunk, + ) + print(f"recording for {seconds} seconds ...") + frames = [] + for i in range(0, int(rate / chunk * record_seconds)): + data = stream.read(chunk) + frames.append(data) + + s = i / (rate / chunk) + if s % 1 < 0.025: + if int(seconds - s) < 11: + print(int(seconds - s) + 1, ' sec left') + + print(f"recording saved to {wave_output_filename}") + + # stop Recording + stream.stop_stream() + stream.close() + audio.terminate() + + waveFile = wave.open(wave_output_filename, "wb") + waveFile.setnchannels(channels) + waveFile.setsampwidth(audio.get_sample_size(oformat)) + waveFile.setframerate(rate) + waveFile.writeframes(b"".join(frames)) + waveFile.close() + + +if __name__ == '__main__': + args = sys.argv + sec = args[1] if args[1:] else 15 + name = args[2] if args[2:] else 'recording' + record_audio(int(sec), name)