From: Paul Brossier Date: Tue, 10 May 2016 20:08:06 +0000 (+0200) Subject: python/demos/demo_reading_speed.py: disable other packages by default X-Git-Tag: 0.4.4~300^2~93 X-Git-Url: https://git.aubio.org/?p=aubio.git;a=commitdiff_plain;h=1e4d90f5bb7713d52f74ed1dfdc4b3744bb78713 python/demos/demo_reading_speed.py: disable other packages by default --- diff --git a/python/demos/demo_reading_speed.py b/python/demos/demo_reading_speed.py index 1158cec8..92d9c24d 100755 --- a/python/demos/demo_reading_speed.py +++ b/python/demos/demo_reading_speed.py @@ -5,24 +5,34 @@ Compare the speed of several methods for reading and loading a sound file. -This file depends on the following packages: +Optionally, this file can make use of the following packages: - audioread https://github.com/beetbox/audioread + - scipy https://scipy.org - librosa https://github.com/bmcfee/librosa - pydub https://github.com/jiaaro/pydub +Uncomment the function names below and send us your speed results! + """ + +test_functions = [ + "read_file_aubio", + "load_file_aubio", + #"load_file_scipy", + #"load_file_scipy_mmap", + #"read_file_audioread", + #"load_file_librosa", + #"read_file_pydub", + #"load_file_pydub", + ] + + import numpy as np -import aubio -""" -import audioread -import librosa -import scipy.io.wavfile -from pydub import AudioSegment -""" def read_file_audioread(filename): + import audioread # taken from librosa.util.utils def convert_buffer_to_float(buf, n_bytes = 2, dtype = np.float32): # Invert the scale of the data @@ -42,33 +52,39 @@ def read_file_audioread(filename): return total_frames, f.samplerate def load_file_librosa(filename): + import librosa y, sr = librosa.load(filename, sr = None) #print y.mean(), y.shape return len(y), sr def load_file_scipy(filename): + import scipy.io.wavfile sr, y = scipy.io.wavfile.read(filename) y = y.astype('float32') / 32767 #print y.mean(), y.shape return len(y), sr def load_file_scipy_mmap(filename): + import scipy.io.wavfile sr, y = scipy.io.wavfile.read(filename, mmap = True) #print y.mean(), y.shape return len(y), sr def read_file_pydub(filename): + from pydub import AudioSegment song = AudioSegment.from_file(filename) song.get_array_of_samples() return song.frame_count(), song.frame_rate def load_file_pydub(filename): + from pydub import AudioSegment song = AudioSegment.from_file(filename) y = np.asarray(song.get_array_of_samples(), dtype = 'float32') y = y.reshape(song.channels, -1) / 32767. return song.frame_count(), song.frame_rate def read_file_aubio(filename): + import aubio f = aubio.source(filename, hop_size = 1024) total_frames = 0 while True: @@ -78,6 +94,7 @@ def read_file_aubio(filename): return total_frames, f.samplerate def load_file_aubio(filename): + import aubio f = aubio.source(filename, hop_size = 1024) y = np.zeros(f.duration, dtype = aubio.float_type) total_frames = 0 @@ -94,10 +111,15 @@ def test_speed(function, filename): times = [] for i in range(10): start = time.time() - total_frames, samplerate = function(filename) + try: + total_frames, samplerate = function(filename) + except ImportError as e: + print ("error: failed importing {:s}".format(e)) + return elapsed = time.time() - start #print ("{:5f} ".format(elapsed)), times.append(elapsed) + #print times = np.array(times) duration_min = int(total_frames/float(samplerate) // 60) @@ -111,16 +133,5 @@ if __name__ == '__main__': sys.exit(1) filename = sys.argv[1] - functions = [ - read_file_aubio, - load_file_aubio, - #load_file_scipy, - #load_file_scipy_mmap, - #read_file_audioread, - #load_file_librosa, - #read_file_pydub, - #load_file_pydub, - ] - - for f in functions: - test_speed(f, filename) + for f in test_functions: + test_speed(eval(f), filename)