如何利用kaldi搭建说话人识别的例子。仅仅是搭建,具体的很多参数的调整需要大家根据数据集的不同慢慢调整。
数据准备:无论使用kaldi来做语音识别还是说话人识别,第一步就是数据准备,对于说话人识别来说,需要准备的几个文件为wav.scp,utt2spk,spk2utt这三个文件。对应的格式如下:
1.1 wav.scp有两列,第一列是key,这个可以一定要唯一;第二列是 wav的路径wavpath;
1.2 utt2spk也有两列,第一列是key,与wav.scp的第一列一样;第二列是对应的说话人信息,叫spk。这个对于说话人识别来说很重要。此外,spk2utt可以根据utils/utt2spk_to_spk2utt.pl来生成。
特征提取:使用steps/make_mfcc.sh来进行提取mfcc特征。
vad:由于说话人识别里静音会有很大的干扰,所以一般都会进行vad。具体kaldi里也有个简单的根据能量来判断vad的脚本。当然这个越精确越好。
训练阶段:主要训练gmm-ubm跟i-vector系统。
sid/train_diag_ubm.sh;sid/train_full_ubm.sh;train_ivector_extractor.sh
提取训练集的i-vector向量,并训练分类器,kaldi提供了三类:
dot-proucts,lda,plda等。
这样咱们就训练好了一个i-vector系统。当然前提你要有一些说话人识别的理论知识。
kaldi里的说话人识别的例子是sre0
版权声明:本文为weixin_38858860原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。