¿Cómo convertir wav a flac desde python?

Acabo de comenzar a usar Python y estoy usando los módulos PyAudio y Wave para tomar el sonido de mi micrófono y convertirlo en un archivo .wav .

Lo que estoy tratando de hacer ahora es convertir ese .wav a un .flac . He visto algunas formas de hacer esto, todas involucran instalar un convertidor y colocarlo en mi RUTA ambiental y llamarlo a través de os.system .

¿Hay otras formas de convertir un .wav a un .flac través de Python? La solución que estoy buscando debe funcionar tanto en Windows como en Linux.

Puede ser que estés buscando herramientas de audio de Python.

Parece que PAT puede hacer lo que quieras.

No he probado esta solución pero puedes usar pydub

  from pydub import AudioSegment song = AudioSegment.from_wav("test.wav") song.export("testme.flac",format = "flac") 

la conversión es compatible con numerosos formatos de archivo (consulte la lista de formatos de archivo compatibles con ffmpeg aquí https://ffmpeg.org/general.html#Audio-Codecs

Aquí hay un ejemplo de código que utiliza las herramientas de audio de Python de la biblioteca de Python para convertir un archivo .wav en un archivo .flac :

 import audiotools filepath_wav = 'music.wav' filepath_flac = filepath_wav.replace(".wav", ".flac") audiotools.open(filepath_wav).convert(filepath_flac, audiotools.FlacAudio, compression_quality) 

Para instalar herramientas de audio de Python: http://audiotools.sourceforge.net/install.html

introduzca la descripción de la imagen aquí

https://wiki.python.org/moin/Audio/ ( mirror ) intenta enumerar todas las bibliotecas de Python útiles para trabajar con audio en combinación con Python.


Una secuencia de comandos de Python más larga para convertir por lotes de manera múltiple archivos wav en archivos FLAC, de 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)