Files
dotfiles/bin/.bin/record
2020-03-25 23:36:34 -04:00

57 lines
1.4 KiB
Python
Executable File

#!/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)