annotate 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
rev   line source
e@0 1 # -*- coding: utf-8 -*-
e@0 2 """
e@0 3 Created on Fri Apr 17 10:32:20 2015
e@0 4
e@0 5 @author: Emmanouil Chourdakis
e@0 6 """
e@0 7
e@0 8 import essentia
e@0 9 from essentia import Pool
e@0 10 from essentia.standard import *
e@0 11 from sys import argv
e@0 12 import csv
e@0 13
e@0 14 # reqyures matplotlib
e@0 15 from pylab import *
e@0 16
e@0 17 #requires numpy
e@0 18 from numpy import *
e@0 19
e@0 20 #requires scikit-learn
e@0 21 from sklearn.metrics import pairwise_distances
e@0 22
e@0 23 if __name__=="__main__":
e@0 24 if len(argv) < 3:
e@0 25 print("Please provide an input filename and a parameter value.")
e@0 26 else:
e@0 27
e@0 28 d = {}
e@0 29 v = {}
e@0 30
e@0 31 fname = argv[1]
e@0 32 csvfname = argv[2]
e@0 33 csvfile = open(csvfname)
e@0 34 reader = csv.reader(csvfile)
e@0 35
e@0 36 row = reader.next()
e@0 37 print row
e@0 38
e@0 39 for i in range(0, len(row)):
e@0 40 v[i] = i
e@0 41 d[i] = row[i]
e@0 42
e@0 43 for row in reader:
e@0 44 print row
e@0 45
e@0 46 print("Demo with `%s\'" % fname)
e@0 47
e@0 48 # Sampling Rate
e@0 49 SR = 16000.0
e@0 50
e@0 51 # Sampling Frequency
e@0 52 T = 1.0/SR
e@0 53
e@0 54 # FrameSize
e@0 55 tframeSize = 23 #ms
e@0 56 frameSize = int(ceil(tframeSize*SR/1000)) if mod(ceil(tframeSize*SR/1000),2) == 0 \
e@0 57 else int(floor(tframeSize*SR/1000))
e@0 58
e@0 59 # HopSize
e@0 60 hopSize = frameSize/2
e@0 61
e@0 62 # Load Audio
e@0 63 audio = MonoLoader(filename = fname)()
e@0 64
e@0 65 #Window Frames
e@0 66 w = Windowing(size = frameSize, type = 'hamming')
e@0 67
e@0 68 # Spectrum
e@0 69 spec = Spectrum()
e@0 70
e@0 71 # Pool to append mean and variance
e@0 72 pool = Pool()
e@0 73 globalPool = Pool()
e@0 74
e@0 75 # Spectral Contrast
e@0 76 sc = SpectralContrast(frameSize = frameSize, highFrequencyBound = 8000, sampleRate = SR)
e@0 77
e@0 78 # MFCCs
e@0 79 mfccs = MFCC(highFrequencyBound = 8000, sampleRate = SR)
e@0 80
e@0 81 # Onset Detection
e@0 82 onsetdetection = OnsetDetectionGlobal(frameSize = frameSize, hopSize = hopSize, sampleRate = SR)(audio)
e@0 83 onsets = Onsets()(essentia.array([onsetdetection]), [1])
e@0 84
e@0 85 for o in range(0, len(onsets)-1):
e@0 86 IOI = audio[onsets[o]*SR:onsets[o+1]*SR]
e@0 87
e@0 88 if len(IOI) == 0:
e@0 89 break;
e@0 90
e@0 91 for frame in FrameGenerator(IOI, frameSize, hopSize):
e@0 92 framespectrum = spec(w(frame))
e@0 93 framecontrast = sc(framespectrum)
e@0 94 mfcc_coeffs = mfccs(framespectrum)[1]
e@0 95
e@0 96 pool.add('lowlevel.mfcc.coeffs', mfcc_coeffs);
e@0 97 pool.add('lowlevel.spectrum.magnitude', framespectrum)
e@0 98 pool.add('lowlevel.contrast.contrast', framecontrast[0])
e@0 99 pool.add('lowlevel.contrast.valleys', framecontrast[1])
e@0 100
e@0 101
e@0 102
e@0 103 spectrumfull = pool['lowlevel.spectrum.magnitude']
e@0 104 spectralcontrast = pool['lowlevel.contrast.contrast']
e@0 105 spectralvalleys = pool['lowlevel.contrast.valleys']
e@0 106
e@0 107 spectralfeature = concatenate((spectralcontrast,spectralvalleys),1)
e@0 108 mfccfeature = pool['lowlevel.mfcc.coeffs']
e@0 109
e@0 110 globalPool.add('spectralcontrast', mean(spectralfeature, 0))
e@0 111 globalPool.add('mfccs', mean(mfccfeature, 0))
e@0 112
e@0 113 pool.clear()
e@0 114
e@0 115
e@0 116
e@0 117
e@0 118 #simmfcc = pairwise_distances(globalPool['mfccs'], metric='cosine')
e@0 119 # simmfcc = pairwise_distances(globalPool['spectralcontrast'], metric='cosine')
e@0 120
e@0 121 #plot(simmfcc[0,:])
e@0 122 #figure()
e@0 123
e@0 124 spectralcontrastmean = globalPool['spectralcontrast']
e@0 125
e@0 126 imshow(spectralcontrastmean.T, aspect='auto', interpolation='none')
e@0 127 output = YamlOutput(filename = "%s.yaml" % fname.partition('/')[2].partition('.')[0])(globalPool)
e@0 128