io_sec_mapped
为了压缩很多程序中反复出现的特定代码模式,我们已经介绍了模板类RandomAccessTableReaderMapped。不像RandomAccessTableReader,这需要两个初始化参数,比如:
std::string rspecifier, utt2spk_map_rspecifier; // get these from somewhere. RandomAccessTableReaderMapped<BaseFloatMatrixHolder> transform_reader(rspecifier, utt2spk_map_rspecifier);
如果utt2spk_map_rspecifier是空字符串,它和普通的RandomAccessTableReader表现得一样。如果不是空,e.g.ark:/data/train/utt2spk,它会读一个 utterance-to-speaker 的映射,并在任何查询到特定字符串 e.g.utt1的地方,将这个 utterance-id 映射到一个 speaker-id (e.g.spk1)然后用这个作为key来查询从 rspecifier读到的 table。这个 utterance-to-speaker映射也是一个 archive,因为这碰巧是 Table代码最容易读的方式。