HTK - HMM 模型和输入 WAV 文件的 MFCC 代表什么?



在按照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是否只是入口和出口点,因此它们不需要MeanVariance

此外,在获取示例 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是什么。

相关内容

  • 没有找到相关文章

最新更新