40 lines
936 B
Python
40 lines
936 B
Python
#!/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]), "<input file name> "
|
|
"<output file name>")
|
|
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)
|
|
|