Procházet zdrojové kódy

Add record python script

Colin Powell před 5 roky
rodič
revize
58623c5b2d
1 změnil soubory, kde provedl 56 přidání a 0 odebrání
  1. 56 0
      bin/.bin/record

+ 56 - 0
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)