this file is part of audioread 2011 adrian sampson permission is hereby granted free of charge to any person obtaining a copy of this software and associated documentation files the software to deal in the software without restriction including without limitation the rights to use copy modify merge publish distribute sublicense andor sell copies of the software and to permit persons to whom the software is furnished to do so subject to the following conditions the above notice and this permission notice shall be included in all copies or substantial portions of the software commandline tool to decode audio files to wav files import audioread import sys import os import wave import contextlib def decodefilename filename os path abspathos path expanduserfilename if not os path existsfilename printfile not found filesys stderr sys exit1 try with audioread audioopenfilename as f print input file i channels at i hz 1f seconds f channels f samplerate f duration filesys stderr print backend strtypef module split 1 filesys stderr with contextlib closingwave openfilename wav w as of of setnchannelsf channels of setframeratef samplerate of setsampwidth2 for buf in f of writeframesbuf except audioread decodeerror printfile could not be decoded filesys stderr sys exit1 if name main decodesys argv1 this file is part of audioread 2011 adrian sampson permission is hereby granted free of charge to any person obtaining a copy of this software and associated documentation files the software to deal in the software without restriction including without limitation the rights to use copy modify merge publish distribute sublicense and or sell copies of the software and to permit persons to whom the software is furnished to do so subject to the following conditions the above notice and this permission notice shall be included in all copies or substantial portions of the software command line tool to decode audio files to wav files
import audioread
import sys
import os
import wave
import contextlib


def decode(filename):
    filename = os.path.abspath(os.path.expanduser(filename))
    if not os.path.exists(filename):
        print("File not found.", file=sys.stderr)
        sys.exit(1)

    try:
        with audioread.audio_open(filename) as f:
            print('Input file: %i channels at %i Hz; %.1f seconds.' %
                  (f.channels, f.samplerate, f.duration),
                  file=sys.stderr)
            print('Backend:', str(type(f).__module__).split('.')[1],
                  file=sys.stderr)

            with contextlib.closing(wave.open(filename + '.wav', 'w')) as of:
                of.setnchannels(f.channels)
                of.setframerate(f.samplerate)
                of.setsampwidth(2)

                for buf in f:
                    of.writeframes(buf)

    except audioread.DecodeError:
        print("File could not be decoded.", file=sys.stderr)
        sys.exit(1)


if __name__ == '__main__':
    decode(sys.argv[1])