В настоящее время я работаю над проектом распознавания речи в MATLAB. Я взял два голосовых сигнала и извлек их коэффициенты MFCC. Насколько мне известно, теперь я должен вычислить евклидово расстояние между ними, а затем применить алгоритм DTW. Вот почему я рассчитал расстояние между ними и получил массив расстояний. Итак, мой вопрос: как реализовать DTW в результирующем массиве?
Вот мой код MATLAB:
очистить все; закрыть все; клк;
% 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');