ここからいくつかのコードを実装しようとしています
また、係数を使用してHMMをトレーニングしましたが、ビタビ復号アルゴリズムがどのように機能するかを理解していません。たとえば、次のようになります。
viterbi_decode(MFCC, M, model, q);
where MFCC = coefficents
M = size of MFCC
model = Model of HMM training using the MFCC coefficients
q = unknown (believed to be the outputted path).
しかし、これが私が理解していないことです。私は2つの音声信号(トレーニング、サンプル)を比較して、可能な限り最も近い一致を見つけようとしています。たとえば、DTWアルゴリズムでは、最も近い整数を見つけることができる単一の整数が返されますが、このアルゴリズムではaが返されるint* array
ため、区別するのは困難です。
現在のプログラムの仕組みは次のとおりです。
vector<DIMENSIONS_2> MFCC = mfcc.transform(rawData, sample_rate);
int N = MFCC.size();
int M = 13;
double** mfcc_setup = setupHMM(MFCC, N, M);
model_t* model = hmm_init(mfcc_setup, N, M, 10);
hmm_train(mfcc_setup, N, model);
int* q = new int[N];
viterbi_decode(mfcc_setup, M, model, q);
トレーニングから入力までの最適なパスを特定する問題に対して、ビタビデコーダーがどのように機能するかを教えてください。デコードパスでユークリッド距離とハミング距離の両方を試しました(q)
が、そのような運はありませんでした。
どんな助けでも大歓迎です