Changes in python/demos/demo_filter.py [01f7598:8ebcd3d]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
python/demos/demo_filter.py
r01f7598 r8ebcd3d 1 1 #! /usr/bin/env python 2 2 3 import sys 4 import os.path 5 import aubio 3 6 4 def apply_filter(path):5 from aubio import source, sink, digital_filter6 from os.path import basename, splitext7 7 8 def apply_filter(path, target): 8 9 # open input file, get its samplerate 9 s = source(path)10 s = aubio.source(path) 10 11 samplerate = s.samplerate 11 12 12 13 # create an A-weighting filter 13 f = digital_filter(7)14 f = aubio.digital_filter(7) 14 15 f.set_a_weighting(samplerate) 15 # alternatively, apply another filter16 16 17 17 # create output file 18 o = sink("filtered_" + splitext(basename(path))[0] + ".wav", samplerate)18 o = aubio.sink(target, samplerate) 19 19 20 20 total_frames = 0 21 21 while True: 22 # read from source 22 23 samples, read = s() 24 # filter samples 23 25 filtered_samples = f(samples) 26 # write to sink 24 27 o(filtered_samples, read) 28 # count frames read 25 29 total_frames += read 26 if read < s.hop_size: break 30 # end of file reached 31 if read < s.hop_size: 32 break 27 33 34 # print some info 28 35 duration = total_frames / float(samplerate) 29 print ("read {:s}".format(s.uri)) 30 print ("applied A-weighting filtered ({:d} Hz)".format(samplerate)) 31 print ("wrote {:s} ({:.2f} s)".format(o.uri, duration)) 36 input_str = "input: {:s} ({:.2f} s, {:d} Hz)" 37 output_str = "output: {:s}, A-weighting filtered ({:d} frames total)" 38 print(input_str.format(s.uri, duration, samplerate)) 39 print(output_str.format(o.uri, total_frames)) 32 40 33 41 if __name__ == '__main__': 34 import sys 35 for f in sys.argv[1:]: 36 apply_filter(f) 42 usage = "{:s} <input_file> [output_file]".format(sys.argv[0]) 43 if not 1 < len(sys.argv) < 4: 44 print(usage) 45 sys.exit(1) 46 if len(sys.argv) < 3: 47 input_path = sys.argv[1] 48 basename = os.path.splitext(os.path.basename(input_path))[0] + ".wav" 49 output_path = "filtered_" + basename 50 else: 51 input_path, output_path = sys.argv[1:] 52 # run function 53 apply_filter(input_path, output_path)
Note: See TracChangeset
for help on using the changeset viewer.