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