History

python/demos/demo_reading_speed.py: disable other packages by default

Paul Brossier committed 10 years ago

Commit 1e4d90f1 parent 8fb567c1 file · +33 −22Browse files

Showing the changes to python (1 of 1 file). Show all

Unified · Split

python/demos/demo_reading_speed.py+33−22
@@ -5,24 +5,34 @@ · 4 unmodified lines
55
66 Compare the speed of several methods for reading and loading a sound file.
77
8−This file depends on the following packages:
8+Optionally, this file can make use of the following packages:
99
1010 - audioread https://github.com/beetbox/audioread
11+ - scipy https://scipy.org
1112 - librosa https://github.com/bmcfee/librosa
1213 - pydub https://github.com/jiaaro/pydub
1314
15+Uncomment the function names below and send us your speed results!
16+
1417 """
1518
19+
20+test_functions = [
21+ "read_file_aubio",
22+ "load_file_aubio",
23+ #"load_file_scipy",
24+ #"load_file_scipy_mmap",
25+ #"read_file_audioread",
26+ #"load_file_librosa",
27+ #"read_file_pydub",
28+ #"load_file_pydub",
29+ ]
30+
31+
1632 import numpy as np
17−import aubio
18−"""
19−import audioread
20−import librosa
21−import scipy.io.wavfile
22−from pydub import AudioSegment
23−"""
2433
2534 def read_file_audioread(filename):
35+ import audioread
2636 # taken from librosa.util.utils
2737 def convert_buffer_to_float(buf, n_bytes = 2, dtype = np.float32):
2838 # Invert the scale of the data
@@ -42,33 +52,39 @@ def read_file_audioread(filename): · 13 unmodified lines
4252 return total_frames, f.samplerate
4353
4454 def load_file_librosa(filename):
55+ import librosa
4556 y, sr = librosa.load(filename, sr = None)
4657 #print y.mean(), y.shape
4758 return len(y), sr
4859
4960 def load_file_scipy(filename):
61+ import scipy.io.wavfile
5062 sr, y = scipy.io.wavfile.read(filename)
5163 y = y.astype('float32') / 32767
5264 #print y.mean(), y.shape
5365 return len(y), sr
5466
5567 def load_file_scipy_mmap(filename):
68+ import scipy.io.wavfile
5669 sr, y = scipy.io.wavfile.read(filename, mmap = True)
5770 #print y.mean(), y.shape
5871 return len(y), sr
5972
6073 def read_file_pydub(filename):
74+ from pydub import AudioSegment
6175 song = AudioSegment.from_file(filename)
6276 song.get_array_of_samples()
6377 return song.frame_count(), song.frame_rate
6478
6579 def load_file_pydub(filename):
80+ from pydub import AudioSegment
6681 song = AudioSegment.from_file(filename)
6782 y = np.asarray(song.get_array_of_samples(), dtype = 'float32')
6883 y = y.reshape(song.channels, -1) / 32767.
6984 return song.frame_count(), song.frame_rate
7085
7186 def read_file_aubio(filename):
87+ import aubio
7288 f = aubio.source(filename, hop_size = 1024)
7389 total_frames = 0
7490 while True:
@@ -78,6 +94,7 @@ def read_file_aubio(filename): · 3 unmodified lines
7894 return total_frames, f.samplerate
7995
8096 def load_file_aubio(filename):
97+ import aubio
8198 f = aubio.source(filename, hop_size = 1024)
8299 y = np.zeros(f.duration, dtype = aubio.float_type)
83100 total_frames = 0
@@ -94,10 +111,15 @@ def test_speed(function, filename): · 10 unmodified lines
94111 times = []
95112 for i in range(10):
96113 start = time.time()
97− total_frames, samplerate = function(filename)
114+ try:
115+ total_frames, samplerate = function(filename)
116+ except ImportError as e:
117+ print ("error: failed importing {:s}".format(e))
118+ return
98119 elapsed = time.time() - start
99120 #print ("{:5f} ".format(elapsed)),
100121 times.append(elapsed)
122+
101123 #print
102124 times = np.array(times)
103125 duration_min = int(total_frames/float(samplerate) // 60)
@@ -111,16 +133,5 @@ if __name__ == '__main__': · 7 unmodified lines
111133 sys.exit(1)
112134 filename = sys.argv[1]
113135
114− functions = [
115− read_file_aubio,
116− load_file_aubio,
117− #load_file_scipy,
118− #load_file_scipy_mmap,
119− #read_file_audioread,
120− #load_file_librosa,
121− #read_file_pydub,
122− #load_file_pydub,
123− ]
124−
125− for f in functions:
126− test_speed(f, filename)
136+ for f in test_functions:
137+ test_speed(eval(f), filename)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t