本文主要以kaldi中的CSJ日语数据集为例进行讲解,文中涉及的路径都是在egs/csj/s5 中可以找到的。
一、online2-wav-nnet3-latgen-faster
online2-wav-nnet3-latgen-faster 是nnet3模型解码的核心程序,它读取wav 文件,进行mfcc 和ivector 特征处理,根据单词符号表生成对应的词图,即lattice,一般是以压缩文件形式存在的lat.gz, 它的C++源码文件是
kaldi-master/src/online2bin/online2-wav-nnet3-latgen-faster.cc,其中逐帧读取语音文件的代码在244-273行,如下所示:
while (samp_offset < data.Dim()) {
int32 samp_remaining = data.Dim() - samp_offset;
int32 num_samp = chunk_length < samp_remaining ? chunk_length
: samp_remaining;
KALDI_LOG << "current time: " << samp_offset / samp_freq;
SubVector<BaseFloat> wave_part(data, samp_offset, num_samp);
feature_pipeline.AcceptWaveform(samp_freq, wave_part);
samp_offset += num_samp;
decoding_timer.WaitUntil(samp_offset / samp_freq);
if (samp_offset == data.Dim()) {
<