Here is a sample code that uses the Python Python Audio Tools library to convert a .wav file to a .flac file:
import audiotools filepath_wav = 'music.wav' filepath_flac = filepath_wav.replace(".wav", ".flac") audiotools.open(filepath_wav).convert(filepath_flac, audiotools.FlacAudio, compression_quality)
To install Python Audio Tools: http://audiotools.sourceforge.net/install.html

https://wiki.python.org/moin/Audio/ ( mirror ) tries to list all the useful Python libraries for working with sound in conjunction with Python.
Longer Python script for multi-threaded conversion of wav files to FLAC files, from http://magento4newbies.blogspot.com/2014/11/converting-wav-files-to-flac-with.html
from Queue import Queue import logging import os from threading import Thread import audiotools from audiotools.wav import InvalidWave """ Wave 2 Flac converter script using audiotools From http://magento4newbies.blogspot.com/2014/11/converting-wav-files-to-flac-with.html """ class W2F: logger = '' def __init__(self): global logger # create logger logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # create a file handler handler = logging.FileHandler('converter.log') handler.setLevel(logging.INFO) # create a logging format formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) # add the handlers to the logger logger.addHandler(handler) def convert(self): global logger file_queue = Queue() num_converter_threads = 5 # collect files to be converted for root, dirs, files in os.walk("/Volumes/music"): for file in files: if file.endswith(".wav"): file_wav = os.path.join(root, file) file_flac = file_wav.replace(".wav", ".flac") if (os.path.exists(file_flac)): logger.debug(''.join(["File ",file_flac, " already exists."])) else: file_queue.put(file_wav) logger.info("Start converting: %s files", str(file_queue.qsize())) # Set up some threads to convert files for i in range(num_converter_threads): worker = Thread(target=self.process, args=(file_queue,)) worker.setDaemon(True) worker.start() file_queue.join() def process(self, q): """This is the worker thread function. It processes files in the queue one after another. These daemon threads go into an infinite loop, and only exit when the main thread ends. """ while True: global logger compression_quality = '0' #min compression file_wav = q.get() file_flac = file_wav.replace(".wav", ".flac") try: audiotools.open(file_wav).convert(file_flac,audiotools.FlacAudio, compression_quality) logger.info(''.join(["Converted ", file_wav, " to: ", file_flac])) q.task_done() except InvalidWave: logger.error(''.join(["Failed to open file ", file_wav, " to: ", file_flac," failed."]), exc_info=True) except Exception, e: logger.error('ExFailed to open file', exc_info=True)
Franck dernoncourt
source share