如何在MFCC系数数组上执行DTW?

问题描述 投票:1回答:2

目前我正在MATLAB中从事语音识别项目。我已经拍摄了两个语音信号,并提取了相同的MFCC系数。据我所知,我现在应该计算两者之间的欧几里德距离,然后应用DTW算法。这就是为什么我计算了两者之间的距离并获得了一系列距离。所以我的问题是如何在结果数组上实现DTW?

这是我的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');
arrays matlab speech-recognition voice-recognition mfcc
2个回答
0
投票

免责声明:我不是matlab用户。

我认为你的陈述中可能存在误解“我现在应该计算两者之间的欧几里德距离然后应用DTW算法”。

使用DTW的要点是你必须比较两个系列(wav 1和wav 2的MFCCs系列),并且两个wavs的持续时间可能不同,所以你最终会得到两组不同的MFCCs矢量尺寸。 DTW可帮助您比较两个MFCC系列,无论其大小如何(请参阅https://en.wikipedia.org/wiki/Dynamic_time_warping)。

因此,例如,如果你已经提取了waves 1的3个MFCC特征向量,并且wav 2有5个MFCC特征向量,通过应用DTW,你可以比较它们,从而有效地获得它们之间的差异或距离。你不必在“DTW之前”计算距离,你使用DTW来计算它(实际上,我不知道如何计算不同长度系列之间的距离)。

就像我在开始时说的那样,我不是一个matlab用户,但是快速谷歌搜索“matlab dtw”向我指出了这篇文章:https://www.mathworks.com/help/signal/ref/dtw.html,其中他们引用了dtw()

  dist = dtw(x,y) stretches two vectors, x and y, onto a common set of
  instants such that dist, the sum of the Euclidean distances between
  corresponding points, is smallest

0
投票

我建议使用标准欧几里德距离而不是欧几里德,因为de MFCC系数在每个维度上具有不同的范围。

例如,如果您有以下2维向量A(500,4),B(504,4)和C(502,3),则使用欧氏距离将得到dist(A,C)dist(A,B) ,因为每个尺寸距离都标准化为它的平均值。因此,您将(504-500)/ 502 <(4-3)/3.5

因此,对于MFCC,最好使用此标准化步骤来改善结果。

© www.soinside.com 2019 - 2024. All rights reserved.