1. 向量量化 Vector Quantization
所谓Vector Quantization,即大家熟知的K-means。运用VQ之前,需要定义一个距离的计算方法,可以是欧式距离Euclidiean Distance,也可以是别的距离公式。
假设输入为, 该输入为一个说话人speaker的spectral features,可以是Mel-spectrogram或MFCC系数,在比较早的论文中,也有直接将spectrogram作为特征的情况。每个
为一帧的数据,一共有T帧,T的大小取决于说话人录音数据的长短。利用K-means的算法,用已有的距离公式生成N个特征点,这N个特征点即为此说话人的codebook,象征了该说话人的N个特点。将每一个人说话人都按此方式生成其对应的codebook。这即为VQ的训练阶段,随后当有数据进行测试时,只需要计算输入和每个说话人的codebook平均距离,最小者对应的speaker为识别结果。
2. LDA/QDA 线性判别分析或二次判别分析
该方法思路和VQ类似,区别为假设每个人输入数据的T个向量遵循n维高斯分布,训练参数为其对应的均值和协方差矩阵。那么如果一共有M个不同的speaker,则有M个对应的高斯分布。则训练阶段为对每个输入数据求出对应的均值和协方差矩阵,测试阶段对每个输入的数据求出其在任何一个高斯分布出现的概率,最高者即为识别结果。和1相比,LDA或QDA可训练的参数个数完全取决于输入数据的维度n, 而Vector Quantization训练的参数N是完全可以自己决定的,N越大,则可描述speaker的特征越多,结果也就越准确。
3. 期望最大算法(Expectation-Maximum Algorithm)
假设同一分布的两个不同参数的变量混合,得到概率密度函数为
最大似然函数为
直接求导是没有闭式解的,可以用梯度下降法,但是运算量太大,这里可以用一个数学trick,即
其中,,由詹森不等式,得
等号当且仅当取得。
而,即两者本就是相等的,所以上述等号存在。我们只需要求
的最小值就行了。这里的数学trick用詹森不等式将ln里面的加号去掉了,从而存在闭式解。
所以E-M算法存在两步,首先初始化
Expectation: 计算
Maximization: 将上一步的值代入,对
求导,从而获得其最优值。然后回到E步。