Momentan arbeite ich an einem Spracherkennungsprojekt in MATLAB. Ich habe zwei Sprachsignale genommen und die MFCC-Koeffizienten derselben extrahiert. Soweit ich weiß, sollte ich jetzt den euklidischen Abstand zwischen den beiden berechnen und dann den DTW-Algorithmus anwenden. Deshalb berechnete ich die Entfernung zwischen den beiden und bekam eine Reihe von Entfernungen. Also meine Frage ist, wie DTW auf resultierende Array zu implementieren?Wie man DTW auf einem Array von MFCC-Koeffizienten durchführt?
Hier ist mein MATLAB-Code:
klar alle; alle schließen; clc;
% Define variables
Tw = 25; % analysis frame duration (ms)
Ts = 10; % analysis frame shift (ms)
alpha = 0.97; % preemphasis coefficient
M = 20; % number of filterbank channels
C = 12; % number of cepstral coefficients
L = 22; % cepstral sine lifter parameter
LF = 300; % lower frequency limit (Hz)
HF = 3700; % upper frequency limit (Hz)
wav_file = 'Play.wav'; % input audio filename
wav_file1 = 'Next.wav';
% Read speech samples, sampling rate and precision from file
[ speech, fs, nbits ] = wavread(wav_file);
[ speech1, fs, nbits ] = wavread(wav_file1);
% Feature extraction (feature vectors as columns)
[ MFCCs, FBEs, frames ] = ...
mfcc(speech, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L);
[ MFCC1s, FBEs, frames ] = ...
mfcc(speech1, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L);
L = pdist2(MFCCs, MFCC1s, 'euclidean');