• 构建CTC语音识别解码网络


    物联网

      本文介绍 kaldi-ctc 构建 CTC[1, 2, 3, 4] 语音识别加权有限状态机(WFST)解码网络的方式。

      示例相关资源 lifeiteng/codingmath/CTC-decoding-graph

      构建语言模型

      以 单句 “how are you are” 作为文本语料,训练 bi-gram(order=2)语言模型

    物联网

      生成 G.fst [data/lang_2/G.pdf],如下图

    物联网

      准备"发音" 词典

      不同单元 phone[1, 2] / character[3, 4],都可以抽象为“发音”词典的形式,以 phone 词典为例

    物联网

      其中 !SIL SIL 为额外添加,作为 OOV 的替换符号使用,亦可使用其他记号 e.g. UNK NSN 。

    物联网

      其中 --num-sil-states 1 --num-nonsil-states 1 用于构建单状态TransitionModel(HMM)。

      生成 L.fst [data/lang_2/L.pdf]

    物联网

      Optinal 的 SIL( SIL : / 2_1 )使得发音词典与语言模型 Composition 之后的搜索空间允许单词间停顿而不影响语言模型概率计算。

      构建HCLG

      像 DNN-HMM hybrid 系统一样构建HCLG[5]:

    物联网

      kaldi-ctc 可以方便构建CI[1] phone / CD[2] phone / character[3, 4] 的 CTC 系统,只需构建相应 CI-phone / CD-phone / character 的决策树和训练数据即可。

      HCLG [exp/mono_ctc_decoding_graph/HCLG.pdf] 网络:

    物联网

      修改HCLG 构建CTC解码网络

      修改 HCLG 的 input label(即 TransitionId)并插入 blank loop 构建CTC解码网络。

      arc.ilabel++, 添加 blank loop

    物联网

      最终 CTC 解码网络如下: [exp/mono_ctc_decoding_graph/CTC.pdf]

    物联网

      解码时从解码网络获得TransitionId转为对应的PdfId做为 RNN 输出层索引获得

      log_likelihood = log(RNN output[pdf_id]) - log(prior[pdf_id])

      尖峰现象

      以 CTC 准则训练的 RNN 模型输出概率有明显的尖峰现象[1]: [images/pink.png]

    物联网

      解码时跳过blank概率接近1的帧可以极大提升实时率。

  • 相关阅读:
    UIImagePickerController 获取相片视频
    plist文件Boolean类型读写方法
    stringstream 用法
    C++11中提供了std::bind
    图像的亮度和对比度调节
    windows C++ 全局异常捕捉函数
    windows 下多线程
    C++11 Lambda表达式(匿名函数)
    图像亮度调节--幂次变换
    SEH:结构化异常处理 学习
  • 原文地址:https://www.cnblogs.com/smart123/p/6485996.html
Copyright © 2020-2023  润新知