| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | #!/usr/bin/env python3import sysimport waveimport pyaudiodef 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)
 |