在按照Voxforge的教程使用HTK(隐马尔可夫模型工具包)创建语音转文本系统时,我们需要为手机定义原型模型。我正在尝试围绕这个文件进行思考。
~o <VecSize> 25 <MFCC_0_D_N_Z>
~h "proto"
<BeginHMM>
<NumStates> 5
<State> 2
<Mean> 25
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
<Variance> 25
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
<State> 3
<Mean> 25
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
<Variance> 25
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
<State> 4
<Mean> 25
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
<Variance> 25
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
<TransP> 5
0.0 1.0 0.0 0.0 0.0
0.0 0.6 0.4 0.0 0.0
0.0 0.0 0.6 0.4 0.0
0.0 0.0 0.0 0.7 0.3
0.0 0.0 0.0 0.0 0.0
<EndHMM>
在本例中,我们使用长度为 25 的特征向量来表示 HMM 的每个状态。但是,我不太明白为什么每个州都有 25 个"均值"和"方差"。它们是否表示每个特征向量的均值和方差?
此外,为什么我们有 3 个状态,而 5 是 5?<State>1
和<State>5
是否只是入口和出口点,因此它们不需要Mean
和Variance
?
此外,在获取示例 wav 文件时,我打印了如下所示的 MFCC:
0: -15.769 -2.168 8.605 4.979 5.283 1.012 9.631 -0.619 3.622 10.977
5.733 3.260 44.447 -0.153 -0.281 -0.810 -1.176 0.363 -0.658 0.676
-1.569 1.363 -1.221 0.815 -0.759 1.427
1: -18.345 -3.220 7.177 0.293 7.232 3.111 17.942 -6.957 8.197 6.579
9.102 -0.569 49.537 0.378 -0.337 -1.277 -1.709 0.623 -0.450 0.162
0.315 2.088 -1.175 0.624 0.762 1.018
2: -15.244 -3.046 5.269 1.441 6.121 -3.326 8.854 -5.297 8.151 7.072
8.122 1.379 49.036 0.543 -0.119 -1.162 -1.263 1.261 -0.388 -0.234
0.816 1.195 -1.237 -0.288 1.600 0.244
3: -14.143 -3.413 3.887 -1.796 7.981 0.930 10.826 3.294 11.797 7.055
7.661 8.011 47.243 0.613 -0.020 -0.568 -0.364 1.034 -0.165 -0.812
2.525 0.351 -1.670 -1.086 1.493 -0.716
4: -15.156 -2.669 4.440 -0.293 11.213 0.162 12.020 -1.667 7.794 4.553
5.013 6.968 46.813 -0.050 -0.092 -0.050 -0.329 0.325 0.585 0.751
1.253 -0.008 -1.852 -0.845 0.058 -0.430
5: -15.323 -3.510 4.750 -0.660 9.856 0.545 12.301 3.855 10.132 -0.511
5.224 4.104 47.068 0.073 0.151 0.163 -0.180 -0.186 -0.242 -0.335
-0.577 -0.479 -0.745 -0.167 -1.565 0.013
对于每个"窗口",为什么我们有 26 个系数而不是 25 个?它们都代表什么?我相信:
1-12
是倒谱系数14-25
是增量系数26
也是第 13 个数字的 Delta Coeffieienct
但我不知道每个样本中的第 13 个数字代表什么。它们应该是开头显示的原型文件中定义的格式<MFCC_0_D_N_Z>
,这在HTK手册中没有得到很好的解释。但我可以从手册的第80页获得:
MFCC_0
: MFCC系数_D
: 增量系数_N
: 绝对能量抑制_Z
:具有零平均静态系数。
任何解释将不胜感激。
此外,为什么我们有 3 个状态,而 5 是 5?1 和 5 是否只是进入和退出点,因此它们不需要均值和方差?
是的,边界状态是虚拟的。
对于每个"窗口",为什么我们有 26 个系数而不是 25 个?它们都代表什么?我相信:
MFCC 类型MFCC_0_D
如教程步骤 5 所示,因此它们是 13 个 ceps 和 13 个增量。您还可以使用HList -o -h
打印确切的布局:
---------------------------------- Source: ar-03.mfc -----------------------------------
Sample Bytes: 52 Sample Kind: MFCC_D_C_K_0
Num Comps: 26 Sample Period: 10000.0 us
Num Samples: 648 File Format: HTK
-------------------------------- Observation Structure ---------------------------------
x: MFCC-1 MFCC-2 MFCC-3 MFCC-4 MFCC-5 MFCC-6 MFCC-7 MFCC-8 MFCC-9 MFCC-10
MFCC-11 MFCC-12 C0 Del-1 Del-2 Del-3 Del-4 Del-5 Del-6 Del-7
Del-8 Del-9 Del-10 Del-11 Del-12 DelC0
存储在 mfc 文件中的特征类型可能与 HMM 训练中使用的特征类型不同,HMM 特征是根据原型规范从 mfc 动态计算的,因此在磁盘上有 26 个MFCC_0_D
,当您计算时,您通过降低能量并归一化平均值将其转换为 25 个系数MFCC_0_D_N_Z
。
我不太明白为什么每个州都有 25 个"均值"和"方差"。它们是否表示每个特征向量的均值和方差?
均值和方差是每个HMM状态的HMM发射分布的高斯参数,它们不是特征向量的均值。检查HMM是什么。