From dbbc9069bcf948e1a4fab786cde73d3cd4902234 Mon Sep 17 00:00:00 2001 From: Intel A80486DX2-66 Date: Sun, 21 Jan 2024 20:30:39 +0300 Subject: [PATCH] add WAVE_byte_swap.py --- src/WAVE_byte_swap.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/WAVE_byte_swap.py diff --git a/src/WAVE_byte_swap.py b/src/WAVE_byte_swap.py new file mode 100644 index 0000000..a6cd0a7 --- /dev/null +++ b/src/WAVE_byte_swap.py @@ -0,0 +1,39 @@ +#!/usr/bin/python3 + +from os.path import basename +from sys import argv +import numpy as np +import wave + +def main(argv: list) -> None: + show_help = (argc := len(argv)) != 3 + show_help = show_help or (argc >= 2 and argv[1] in ["-h", "--help"]) + if show_help: + print("Usage:", basename(argv[0]), " " + "") + return + + input_wave = wave.open(argv[1], "rb") + nchannels, sampwidth, framerate, nframes = input_wave.getparams()[:4] + + if sampwidth == 2: + np_type = np.int16 + else: + print("Unsupported bit depth:", 8 * sampwidth) + return + + audio_data = input_wave.readframes(nframes) + + audio_array = np.frombuffer(audio_data, dtype=np_type).byteswap() + + output_wave = wave.open(argv[2], "wb") + output_wave.setparams( + (nchannels, sampwidth, framerate, 0, "NONE", "not compressed")) + output_wave.writeframes(audio_array.tobytes()) + output_wave.close() + + print("Done") + +if __name__ == "__main__": + main(argv) +