语音识别嵌入式训练:3状态单音素HMM拼接复合模型的疑问
3状态单音素HMM拼接为词/语句级复合模型的实操方案
嘿,这个问题我当初入门嵌入式语音识别时也卡过好一阵,咱们从单音素HMM的结构本质入手,一步步捋清楚拼接逻辑:
先明确单音素HMM的核心结构
每个3状态单音素HMM的标准结构是:
- 起始状态(Start):仅作为音素的入口,只能转移到第一个核心状态(S1)
- 3个核心状态(S1、S2、S3):承载音素的声学特征建模,内部转移规则通常是
S1→S1/S2、S2→S2/S3、S3→S3/End - 结束状态(End):仅作为音素的出口,只能由最后一个核心状态(S3)转移而来
拼接的核心思路就是去掉相邻音素之间的冗余起始/结束状态,让核心状态链直接衔接。
具体拼接步骤
1. 处理第一个音素
- 保留它的起始状态(Start)和全部3个核心状态
- 移除它的结束状态(End),并给它的最后一个核心状态(S3)新增一条转移规则:
S3 → 下一个音素的S1 - 转移概率初期可以复用原S3→End的概率值,后续训练会自动优化
2. 处理中间音素(非第一个/最后一个)
- 直接移除它的起始状态(Start)和结束状态(End)
- 给前一个音素的S3新增转移到当前音素S1的规则
- 给当前音素的S3新增转移到下一个音素S1的规则
- 内部核心状态的转移规则和概率完全保留原单音素的设置
3. 处理最后一个音素
- 保留它的全部3个核心状态和结束状态(End)
- 移除它的起始状态(Start),让前一个音素的S3直接转移到它的S1
- 它的S3→End的转移规则和概率保留原单音素的设置
举个直观例子
假设要拼接音素“a”和“b”:
- 原“a”HMM:
Start_a → S1_a → S2_a → S3_a → End_a - 原“b”HMM:
Start_b → S1_b → S2_b → S3_b → End_b - 拼接后复合HMM:
Start_a → S1_a → S2_a → S3_a → S1_b → S2_b → S3_b → End_b - 补充转移:S3_a除了自环,新增
S3_a→S1_b;去掉原S3_a→End_a和Start_b→S1_b
嵌入式训练的补充说明
因为是嵌入式训练,拼接后的复合HMM所有参数(包括跨音素的转移概率、核心状态的观测概率)都会用语句级的标注数据进行迭代更新,所以初期的转移概率设置不用过于精细,只要符合“前音素收尾状态衔接后音素起始核心状态”的逻辑即可,训练过程会自动调整到最优值。
内容的提问来源于stack exchange,提问作者YonF
相关产品推荐
相关产品推荐

