zoukankan      html  css  js  c++  java
  • 训练与解码

    BW算法是对某一个HMM(一个音素)进行训练,需要该HMM对应的观察向量(一段音频),如何让一段文本中的某个音素找到对应一整段音频中的一小段音频?需要用到对齐来找到所有的[音素-音频]的配对。

       

    训练时也需要解码

    1,设训练的一句话有n个音素,即n个HMM,即3n个状态。将这句话对应的音频平均地切分为n个片段(无环回的HMM),每个片段有3个状态(无环回,否则一个HMM大于三个状态)

    2,使用k-means算法,将每个状态对应的所有特征向量聚类为M个簇(这句话有3nM个簇)

    3,为状态i中的每个簇计算均值、协方差矩阵和混合权重(即计算一个GMM,这句话有3nMGMM)

    4,用3中计算好的所有GMMs(3nM个)将这一段音频解码(维特比解码)为多个状态,多个HMM

    5,重复上述2-4步直至收敛

       

    hmm_chinese.pdf p59

    在训练时用的是Viterbi算法,在识别时则用状态Viterbi算法处理状态级数据,用词汇Viterbi算法处理词汇级数据

       

    识别过程

    不考虑句法时,识别过程很类似连接词识别中的一次通过算法

    将词汇表中所有词对应的所有音素的所有状态排成一排,读入一个待识别句子的语音数据,由维特比算法可得到一个最佳状态序列。得到状态序列后,可通过类似编译原理中的文法来得到对应的HMM序列。

       

    声学模型(HMMs)表示的是各词内状态之间的转移

    语言模型(n-gram)表示的是词之间的转移概率关系

       

    解码时需要用到状态Viterbi算法和词汇Viterbi算法

       

    一句话的识别过程需要在状态层与词汇层之前不断切换,状态层:为当前状态选择概率最大的几个下一状态,直至词的最后状态处;词汇层:为当前词选择概率最大的几个下一词。这样直至这句话的结尾,就得到了多条路径,每条路径包含两个信息:累积概率和回溯路径,选择多条路径中累积概率最大的那条路径,使用其回溯路径进行回溯,就得到了该句子的识别结果。

  • 相关阅读:
    Linux驱动之Framebuffer子系统基础知识
    C/C++语言常见面试题汇总
    转载-Linux驱动面试题汇总
    nginx服务在html中嵌入php代码无法显示问题
    关于strsep函数以及联想
    system替代函数
    system问题总结记录
    C语言-判断文件是否存在
    vue常见表单信息收集
    sublime 设置格式化快捷键
  • 原文地址:https://www.cnblogs.com/JarvanWang/p/7499575.html
Copyright © 2011-2022 走看看