Add record python script
This commit is contained in:
56
bin/.bin/record
Executable file
56
bin/.bin/record
Executable file
@ -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)
|
||||
Reference in New Issue
Block a user