読み始める前に、下手な英語を許してください、ありがとう。
私はリビアのコンピューター工学コースの最終学年です。
私の卒業プロジェクト名は「分類器融合法を用いた孤立単語の音声認識システム」です。このプロジェクトの基本的な考え方は、数字 (0 ~ 9) の 1 秒の記録を入力すると、それがテキストとして画面に表示されるというものです。私の手順は次のとおりです。
* Input the word .
* Pre-processing of the speech signal.
* Extract features using Mel Frequency Cepstral Coefficients.
* classify the word using:
* MED Classifier.
* Dynamic Time Warping Classifier .
* Bayes Classifier .
* Classifier Fusion: Combination of the above classifiers, hoping to compensate for weak
classier performance.
そのため、MFCC を使用して機能を抽出した後、MED を使用して、ASR システム全体を見て、それがどのように機能するかを視覚化しました。それから私は DTW 分類子から始めました。正直なところ、私はそれを正しく行っているかどうか確信が持てません。したがって、ここにコードを示します。以前に DTW を分類子として使用したことがある場合は、DTW を使用するのが良い考えかどうか教えてください。それで、私はそれを正しくやっていますか?
test.mat には 2 つの変数があります。'm' は 1 番目の話された単語、'b' も 1 番目の話された単語ですが、すべてが単独で記録されたので、'm' を保持して比較します記録された単語2に対して、1vs1のコストは1vs2よりも小さくなければなりませんが、私の場合はそうではありません.なぜですか????
clear;
load('test.mat')
b=m;
m=b;
dis=zeros(length(m),length(b));
ac_cost=zeros(length(m),length(b));
cost=0;
p=[];
%we create the distance matrix by calculating the Eucliden distance between
%all pairs
for i = 1 : length(m)
for j = 1 : length(b)
dis(i,j)=(b(j)-m(i))^2;
end
end
ac_cost(1,1)=dis(1,1);
%calculate first row
for i = 2 : length(b)
ac_cost(1,i)=dis(1,i)+ac_cost(1,i-1);
end
%calculate first coulmn
for i = 2 : length(m)
ac_cost(i,1)=dis(i,1)+ac_cost(i-1,1);
end
%calculate the rest of the matrix
for i = 2 : length(m)
for j = 2 : length(b)
ac_cost(i,j)=min([ac_cost(i-1,j-1),ac_cost(i-1,j),ac_cost(i,j-1)])+dis(i,j);
end
end
%find the best path
i=length(m)
j=length(b)
cost=cost+dis(i,j)+dis(1,1)
while i>1 && j>1
cost=cost+min([dis(i-1, j-1), dis(i-1, j), dis(i, j-1)]);
if i==1
j=j-1;
elseif j==1
i=i-1;
else
if ac_cost(i-1,j)==min([ac_cost(i-1, j-1), ac_cost(i-1, j), ac_cost(i, j-1)])
i=i-1;
elseif ac_cost(i,j-1)==min([ac_cost(i-1, j-1), ac_cost(i-1, j), ac_cost(i, j-1)])
j=j-1;
else
i=i-1;
j=j-1;
end
end
end
よろしくお願いします