Вот пример кода с использованием библиотеки Python Python Audio Tools для преобразования файла .wav
в файл .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)
Чтобы установить Python Audio Tools: http://audiotools.sourceforge.net/install.html
https://wiki.python.org/moin/Audio/ (mirror) пытается перечислить все полезные библиотеки Python для работы. аудио в сочетании с Python.
Более длинный скрипт Python для многопоточного пакетного преобразования wav-файлов в файлы FLAC из 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)
person
Franck Dernoncourt
schedule
01.01.2018