Mercurial > hg > chourdakisreiss2016
view experiment-reverb/code/segment1.py @ 2:c87a9505f294 tip
Added LICENSE for code, removed .wav files
author | Emmanouil Theofanis Chourdakis <e.t.chourdakis@qmul.ac.uk> |
---|---|
date | Sat, 30 Sep 2017 13:25:50 +0100 |
parents | 246d5546657c |
children |
line wrap: on
line source
# -*- coding: utf-8 -*- """ Created on Fri Apr 17 10:32:20 2015 @author: Emmanouil Chourdakis """ import essentia from essentia import Pool from essentia.standard import * from sys import argv import csv # reqyures matplotlib from pylab import * #requires numpy from numpy import * #requires scikit-learn from sklearn.metrics import pairwise_distances if __name__=="__main__": if len(argv) < 3: print("Please provide an input filename and a parameter value.") else: d = {} v = {} fname = argv[1] csvfname = argv[2] csvfile = open(csvfname) reader = csv.reader(csvfile) row = reader.next() print row for i in range(0, len(row)): v[i] = i d[i] = row[i] for row in reader: print row print("Demo with `%s\'" % fname) # Sampling Rate SR = 16000.0 # Sampling Frequency T = 1.0/SR # FrameSize tframeSize = 23 #ms frameSize = int(ceil(tframeSize*SR/1000)) if mod(ceil(tframeSize*SR/1000),2) == 0 \ else int(floor(tframeSize*SR/1000)) # HopSize hopSize = frameSize/2 # Load Audio audio = MonoLoader(filename = fname)() #Window Frames w = Windowing(size = frameSize, type = 'hamming') # Spectrum spec = Spectrum() # Pool to append mean and variance pool = Pool() globalPool = Pool() # Spectral Contrast sc = SpectralContrast(frameSize = frameSize, highFrequencyBound = 8000, sampleRate = SR) # MFCCs mfccs = MFCC(highFrequencyBound = 8000, sampleRate = SR) # Onset Detection onsetdetection = OnsetDetectionGlobal(frameSize = frameSize, hopSize = hopSize, sampleRate = SR)(audio) onsets = Onsets()(essentia.array([onsetdetection]), [1]) for o in range(0, len(onsets)-1): IOI = audio[onsets[o]*SR:onsets[o+1]*SR] if len(IOI) == 0: break; for frame in FrameGenerator(IOI, frameSize, hopSize): framespectrum = spec(w(frame)) framecontrast = sc(framespectrum) mfcc_coeffs = mfccs(framespectrum)[1] pool.add('lowlevel.mfcc.coeffs', mfcc_coeffs); pool.add('lowlevel.spectrum.magnitude', framespectrum) pool.add('lowlevel.contrast.contrast', framecontrast[0]) pool.add('lowlevel.contrast.valleys', framecontrast[1]) spectrumfull = pool['lowlevel.spectrum.magnitude'] spectralcontrast = pool['lowlevel.contrast.contrast'] spectralvalleys = pool['lowlevel.contrast.valleys'] spectralfeature = concatenate((spectralcontrast,spectralvalleys),1) mfccfeature = pool['lowlevel.mfcc.coeffs'] globalPool.add('spectralcontrast', mean(spectralfeature, 0)) globalPool.add('mfccs', mean(mfccfeature, 0)) pool.clear() #simmfcc = pairwise_distances(globalPool['mfccs'], metric='cosine') # simmfcc = pairwise_distances(globalPool['spectralcontrast'], metric='cosine') #plot(simmfcc[0,:]) #figure() spectralcontrastmean = globalPool['spectralcontrast'] imshow(spectralcontrastmean.T, aspect='auto', interpolation='none') output = YamlOutput(filename = "%s.yaml" % fname.partition('/')[2].partition('.')[0])(globalPool)