• 三音素


    三音素,音素的一种,与单音素(如t, iy, n)不同,三音素表示为如t-iy+n,即由三个单音素组成,与单音素iy类似,但其考虑了上下文的关系,即,上文为t,下文为n。

    三音素和单音素都是一个隐马尔科夫模型(HMM)

    三音素是为了考虑上下文的信息(协同发音)

    倒谱特征提取时,汉宁窗向左、向右包含了冗余的频谱,因此,用三音素代替单音素是合理的

    单音素复制为三音素后,状态的个数成指数增加,但复制后的状态。为了解决数据稀疏,而需要训练的数量庞大,因此需要降低参数的数量。

    聚类是为了降低所有三音素参数的数量,即降低三音素的状态的个数。

    决策树的作用就是给三音素的状态做聚类。

    聚类后,所有的三音素的状态被聚类为多个簇,为每个簇内的所有三音素状态进行绑定(即多个状态共享一个状态。

    的参数)。

    单音素训练完成后(train_mono.sh),三音素的训练(train_deltas.sh)

       

       

       

    需要用到exp/mono0a_ali的对齐结果,将对齐结果使用Cross word方法映射到(复制为)三音素:

    sil s p iy ch t ae s k sil

    sil sil-s+p s-p+iy p-iy+ch iy-ch+t ch-t+ae t-ae+s ae-s+k s-k+sil sil

       

    维特比解码是对一段音频进行解码,生成的是状态序列,这个状态序列对应多个音素(HMMs)。维特比解码的解码范围是什么?是FST?但FST是对训练的一句话生成的。是latticelatticeFST的一个实例,与FST类似。是所有的状态(单高斯或混合高斯)?那么A=[aij]从何得来?

       

    Baum-Welch算法是为了确定一个HMM=λ=(π,Α,Β),使P(O/λ)最大

       

    维特比算法中需要的A=[aij]就是单个HMM中的A

    维特比算法的定义:这个算法解决了给定一个观察值序列O=O1,O2,…,OT和一个模型λ=(π,Α,Β),在最佳的意义上确定一个状态序列Q*=q1*,q2*,…,qT*的问题

       

    训练中使用维特比算法时,某个HMM及其对应的特征序列(音频序列)是给定的,这时,是满足维特比算法的定义的。

    解码时使用维特比算法时,有一段较长的特征序列,但不知道其对应的HMMs。不过,这时已经有了一个声学模型(如final.mdl),猜测其中定义了所有HMM的转移和所有聚类状态的参数,或许可以用前向后向算法计算mdl中每个HMM

       

    hmm_chinese.pdf p55 3.1.2 音素HMM连续语音识别

    hmm_chinese.pdf p59

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

    识别时,采用了时间帧同步Viterbi(beam)搜索算法

  • 相关阅读:
    sqlite3.6.10的vs2005 编译错误
    .NET网络编程学习(二)
    Lucene的使用(一)
    .NET网络编程学习(三)
    深入学习Heritrix解析Frontier(链接工厂)
    .NET网络编程学习(一)
    Subversion的Windows服务配置
    深入学习Heritrix解析处理器(Processor)
    log4net的使用
    深入学习Heritrix解析CrawlController
  • 原文地址:https://www.cnblogs.com/JarvanWang/p/7499568.html
Copyright © 2020-2023  润新知