Mercurial > hg > pyin
comparison SparseHMM.cpp @ 131:b877df85ad9e fixedlag
mono pitch works now with the refactored HMM implementation
author | Matthias Mauch <mail@matthiasmauch.net> |
---|---|
date | Fri, 03 Jul 2015 14:09:05 +0100 |
parents | 080fe18f5ebf |
children | 926c292fa3ff |
comparison
equal
deleted
inserted
replaced
130:080fe18f5ebf | 131:b877df85ad9e |
---|---|
50 { | 50 { |
51 size_t nFrame = obsProb.size(); | 51 size_t nFrame = obsProb.size(); |
52 if (nFrame < 1) { | 52 if (nFrame < 1) { |
53 return vector<int>(); | 53 return vector<int>(); |
54 } | 54 } |
55 | 55 |
56 | |
57 initialise(obsProb[0]); | 56 initialise(obsProb[0]); |
58 | 57 |
59 // rest of forward step | 58 // rest of forward step |
60 for (size_t iFrame = 1; iFrame < nFrame; ++iFrame) | 59 for (size_t iFrame = 1; iFrame < nFrame; ++iFrame) |
61 { | 60 { |
64 | 63 |
65 vector<int> path = finalise(); | 64 vector<int> path = finalise(); |
66 return(path); | 65 return(path); |
67 } | 66 } |
68 | 67 |
68 void | |
69 SparseHMM::reset() | |
70 { | |
71 m_scale.clear(); | |
72 m_psi.clear(); | |
73 for (size_t i = 0; i < m_delta.size(); ++i) m_delta[i] = 0; | |
74 for (size_t i = 0; i < m_oldDelta.size(); ++i) m_oldDelta[i] = 0; | |
75 } | |
69 | 76 |
70 void | 77 void |
71 SparseHMM::initialise(vector<double> firstObs) | 78 SparseHMM::initialise(vector<double> firstObs) |
72 { | 79 { |
80 reset(); | |
81 | |
73 double deltasum = 0; | 82 double deltasum = 0; |
74 | 83 |
75 // initialise first frame | 84 // initialise first frame |
76 for (size_t iState = 0; iState < m_nState; ++iState) | 85 for (size_t iState = 0; iState < m_nState; ++iState) |
77 { | 86 { |