文章目录
- 关于 OpenFST
- 安装 openfst
 
- 关于 WFST
- 编译 WFST
 
 
关于 OpenFST
- 官网:https://www.openfst.org/twiki/bin/view/FST/WebHome
- 快速入门文档:https://www.openfst.org/twiki/bin/view/FST/FstQuickTour
- 下载:https://www.openfst.org/twiki/bin/view/FST/FstDownload
FST : Finite State Transducer,有限状态机
 OpenFST 就是 FST 的一个实现,遵循 Apache 协议的开源软件。
安装 openfst
cd openfst-1.7.9/
./configure --enable-python --enable-far
make 
sudo make install
关于 WFST
WFST : Weighted Finite-State Transducer,加权有限状态转录机。
 Kaldi 中 WFST 的实现,基于OpenFST。
- WFST 由一组状态(State) 和状态间的有向跳转(Transition)构成
- 每个跳转上保存了三种信息:输入标签(input label)、输出标签(ouput label)和权重(weight),以 input_label:output_label/weigt格式记录
- WFST 具备一个起始状态(initial state,用粗圈表示) 和至少一个终止状态(final state,用双圈表示);
- 每个终止状态可以有一个终止权重(final weight)
- WFST 还需定义两个二元操作 + 和 x,这两个操作与其权重集合应构成一个半环。
- 用 
     
      
       
        
         ϵ
        
       
       
        \epsilon
       
      
     ϵ 表示空标签,也常被写作 <eps>
- WFST 把一个序列转录为另一个序列
  
- fst.txt 状态文件
 除了最后一行,每行由5个元素构成:
 跳转的源状态,目标状态,输入标签,输出标签,权重
 最后一行表示 终止状态,终止权重为 1
- symbols.txt 标签文本到数字的映射表
 映射表中的 0 是为空标签(即: ϵ \epsilon ϵ 或<spe>)保留的。其他标签从1开始分配数字作为 ID。
编译 WFST
可以使用 openfst 的编译工具将 WFST 编译成二进制文件:
fstcompile --isymbols=symbols.txt --osymbols=symbols.txt fst.txt  output.fst
- 可以使用 fstinfo 查看信息
- 使用 fsprint 打印成文本形式
- 使用 fstdraw 输出成 graphviz 定义的图格式
参考:
- 李理:《WFST介绍》
 http://fancyerii.github.io/wfst/wfst/



















