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