annotate dsp/segmentation/SavedFeatureSegmenter.h @ 44:00603b8a940f

* Add direct support for ATLAS version of CLAPACK
author cannam
date Wed, 13 Feb 2008 12:49:47 +0000
parents 8bdbda7fb893
children
rev   line source
cannam@18 1 /*
cannam@18 2 * SavedFeatureSegmenter.h
cannam@18 3 * soundbite
cannam@18 4 *
cannam@18 5 * Created by Mark Levy on 23/03/2006.
cannam@18 6 * Copyright 2006 Centre for Digital Music, Queen Mary, University of London. All rights reserved.
cannam@18 7 *
cannam@18 8 */
cannam@18 9
cannam@18 10 #include <vector>
cannam@18 11
cannam@18 12 #include "segment.h"
cannam@18 13 #include "Segmenter.h"
cannam@20 14 #include "hmm/hmm.h"
cannam@18 15
cannam@18 16 using std::vector;
cannam@18 17
cannam@18 18 class SavedFeatureSegmenterParams
cannam@18 19 {
cannam@18 20 public:
cannam@18 21 SavedFeatureSegmenterParams() : hopSize(0.2), windowSize(0.6),
cannam@18 22 nHMMStates(40), nclusters(10), histogramLength(15), neighbourhoodLimit(20) { }
cannam@18 23 double hopSize; // in secs
cannam@18 24 double windowSize; // in secs
cannam@18 25 int nHMMStates;
cannam@18 26 int nclusters;
cannam@18 27 int histogramLength;
cannam@18 28 int neighbourhoodLimit;
cannam@18 29 };
cannam@18 30
cannam@18 31 class SavedFeatureSegmenter : public Segmenter
cannam@18 32 {
cannam@18 33 public:
cannam@18 34 SavedFeatureSegmenter(SavedFeatureSegmenterParams params);
cannam@18 35 virtual ~SavedFeatureSegmenter();
cannam@18 36 virtual void initialise(int samplerate);
cannam@18 37 virtual int getWindowsize() { return static_cast<int>(windowSize * samplerate); }
cannam@18 38 virtual int getHopsize() { return static_cast<int>(hopSize * samplerate); }
cannam@18 39 virtual void extractFeatures(double* samples, int nsamples) { }
cannam@18 40 void setFeatures(const vector<vector<double> >& f); // provide the features yourself
cannam@18 41 virtual void segment(); // segment into default number of segment-types
cannam@18 42 void segment(int m); // segment into m segment-types
cannam@18 43 int getNSegmentTypes() { return nclusters; }
cannam@18 44 protected:
cannam@18 45 void makeSegmentation(int* q, int len);
cannam@18 46
cannam@18 47 model_t* model; // the HMM
cannam@18 48 int* q; // the decoded HMM state sequence
cannam@18 49 vector<vector<double> > histograms;
cannam@18 50
cannam@18 51 double hopSize; // in seconds
cannam@18 52 double windowSize; // in seconds
cannam@18 53
cannam@18 54 // HMM parameters
cannam@18 55 int nHMMStates;
cannam@18 56
cannam@18 57 // clustering parameters
cannam@18 58 int nclusters;
cannam@18 59 int histogramLength;
cannam@18 60 int neighbourhoodLimit;
cannam@20 61 };
cannam@20 62