Sinovoice-2016-2-18

来自cslt Wiki
2016年2月18日 (四) 05:11Yanglibo讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

数据

  • 16K 灵云数据

10000小时实际语料的标注目标,已立项400小时的标注; 语料从1000小时中,通过ASR打分,取出中间的400小时;

  • 粤语标注了一个测试集,增量9小时,CER:54%;30h,50%

60h trained. no tag text to lm, CER 45% discard english text;

  • 维语

已完成120小时;last train 50h; 16K标注,灵云,180小时,收集验收;

大模型

1)16K10000小时的跑一个DNN训练,加深加宽:7层2400x10000 rectifier 保留英文

MPE的训练: Condition: LM:1e-5/1e-9

                                           test_8000ju     test_10000ju                      
6000H 600*4_800  xEnt                    :  15.16            28.03
6000H 600*4_800  mpe                     :  12.09            23.51
6776H 1200*4_10000 mpe                   :  9.48             18.07

10000H 600*4_800 xEnt(迭代21轮)        :  15.91
10000H 600*4_800 xEnt(迭代完成)        :  15.56            26.71
10000H 2048*7_12000 xEnt(迭代1.7轮)      :  10.12
10000H 2048*7_12000 xEnt(迭代2.6轮)      :  9.73
10000H 2048*7_12000 xEnt(迭代3.8轮)      :  9.51
10000H 2048*7_12000 xEnt(迭代5.1轮)      :  9.53
10000H 2048*7_12000 xEnt(迭代6.0轮)      :  9.41             17.75
10000H 2048*7_12000 xEnt(700.mdl  )      :  9.35             17.71
10000H 2048*7_12000 xEnt(800.mdl  )      :  9.27             17.57
10000H 2048*7_12000 xEnt(900.mdl  )      :  9.20             17.51
10000H 2048*7_12000 xEnt(965.mdl  )      :  9.20             17.60
10000H 2048*7_12000 200H mpe(2.mdl  )    :  8.80             15.99
10000H 2048*7_12000 200H mpe(8.mdl  )    :  8.71             15.91
10000H 2048*7_12000 1000H mpe(13.mdl)    :  8.60             15.84
10000H 2048*7_12000 1000H mpe(13.mdl)    :  8.60             15.84
10000H 2048*7_12000 1000H mpe(17.mdl)    :  8.46             15.76
10000H 2048*7_12000 1000H mpe(26.mdl)    :  8.47             15.71
10000H 2048*7_12000 1000H mpe(35.mdl)    :  8.43             15.84
10000H 2048*7_12000 1000H mpe(42.mdl)    :  8.40             15.87
10000H 2048*7_12000 1000H mpe(56.mdl)    :  8.49             15.96

10000H 2048*7_6565 chain (2700.mdl)  : 8.90 17.51


10000小时MPE,开跑,但是提升空间不大。

2)8K 领域模型,领域通用:设备 7层TDNN2048x10000,含有英文 信道、口音

  华为V3信道压缩:4000小时,GMM

结果如下: | | BJYD | JS2h |ShaanXi2h| ShanXi2h|huaweiFuCe|UnKnown2h| | nnet1 1400h MPE | 22.49 | 19.81 | 19.63 | 21.90 | 16.72 | 22.00 | | nnet1 4200h xEnt | 26.89 | 19.90 | 25.43 | 26.90 | 16.15 | 24.13 | | nnet1 4200h MPE | 24.53 | 18.39 | 22.82 | 23.97 | 14.22 | 21.35 |

8k:

                                             huaweiFuCe
nnet3_xEnt 7*2048+8393   :          14.61

chain 7*2048+6558 200.mdl:          17.83
chain             400.mdl:          17.09
chain             600.mdl:          18.13
chain             800.mdl:          19.05


在A01辽宁移动测试集上的实验结果: dnn模型(mpe增量训练后): 22.39 华为信道模型: 20.26 用辽宁移动数据在华为信道模型上做增量(6 mdl): 18.16 用辽宁移动数据在华为信道模型上做增量(16 mdl): 17.85

平安提高1个点;客户测试集提升3个点;

嵌入式

 * 10000h-chain 5*400+800 has been training.
 * Dark-knowledge training scripts ready

16k 嵌入式模型最新结果如下:


            | nnet1_xEnt | nnet1_MPE | nnet3_xEnt | nnet3_MPE |   chain   |

test_8000ju | 16.12 | 11.31 | 14.89 | 12.77 | 11.74 | test_10000ju | 28.83 | 23.82 | 27.43 | 25.05 | 22.35 |


LM = 1e-5, 1e-9 biglm, beam = 13


                   | nnet1_xEnt | nnet1_MPE | nnet3_xEnt | nnet3_MPE |   chain   |

test_8000ju | 16.12 | 11.31 | 14.89 | 12.77 | 11.10 | test_10000ju | 28.83 | 23.82 | 27.43 | 25.05 | 21.33 |


前4个模型结构是4*600+800,chain模型结构是5*400+800。 与nnet1_MPE相比,chain模型在8000ju上稍差,但在10000句上已经明显超过了。 目前chain模型训练还没结束,10000h数据大约过了2遍,不到总进度的1/3,但估计再往后的提升不会太显著了。

MPE没有做完;

TDNN+CTC 10000小时16K 8K5000小时Chain 16K10000小时Chain

TDDN -> Context -> 类CTC

如果比较如下结果,似乎chain的结果还好,毕竟output少了一半。

10000H 2048*7_12000 xEnt(965.mdl  )      :  9.20             17.60
10000H 2048*7_6565 chain (2700.mdl)      :  8.90             17.51

然而,因为chain的objective中是有区分性信息的,导致这一对比不是很合理。需要等MPE出来结果再看。

Chain 包含如下结构:             single state + MMI
我们现在的triphone模型包含如下结构: 3 states + MPE

这意味着:
(1)Chain output 可以比较少 
(2)Chain+MPE可能提高不很明显 
(3) Chain缺少模型状态的精细结构,这些精细结构在大数据大模型时可能是有用的。

所以这里面有个权衡,对于上下文相关建模而言,在输出一定的前提下,是牺牲state来换取更多上下文建模(Chain),还是牺牲一些上下文来描述精细结构 (triphone)。从现在的结果看,似乎是在小模型时,前者重要,而当输出可以很大时,再加入phone context可能已经不重要了,这时state的精细结构就有意义。 这似乎可以得到结论,当我们有足够的数据和足够的计算资源的话,用triphone还是有意义。

之所以出现上面的问题,在于梦原用的Chain是基于TDNN,即用长的context来得到state condition,或者说,NN需要经过一系列网络从context里infer出state。这一方法看起来并不能特别好地描述信号的动态特性,因为对信号的发展过程缺少记忆性。这一记忆性在HMM里信靠状态转移矩阵进行累积,在LSTM里利用recurrent connection进行累积。 这是为什么TDNN离开state,效果不明显的原因。

如果要想较大结构里描述精细结构,或者TDNN+ HMM state (triphone系统),或者LSTM + CD phone。后者用LSTM来代替HMM,即end-to-end training。传统CTC用的是这一结构。

所以在我看来, LSTM + CD phone应该是最理想的结构,LSTM取代HMM的离散状态成为连续状态。如果能用Chain的objective,则应该足够好了。这就是LSTM的Chain model.

可以总结如下:

(1) 训练中在模型输出一定时,优先描述context,再描述state。在模型较大时,state必须描述。
(2) state描述可以用HMM,也可以用RNN(LSTM),前者简单,后者精确。
(3) 当用LSTM描述状态时,网络输出不必考虑state。
(4) 训练时需要考虑alignment不确定性问题,CTC解决此问题。
(5) 训练时需要考虑训练目标和评价指标(WER)匹配,MMI/MPE解决此问题。
(6) 可以在训练时考虑CTC+MPE/MMI。可以逐步加(一般方法),可能会有问题,因为MPE又遇到不确定性,可以同时加。小汤说Chain是后者,我需要再确认。
(7) TDNN增加上下的context,有利于更多信息加入,部分解决state或context dependent的问题,但和LSTM/MPE/CTC等并不冲突,也没什么直接关系。
(8) TDNN + CD state 在大数据下看起来是最容易训练的方法,即是我们的state-of-the-art系统。

建议如下:

(1) 现在Chain model在大数据上遇到的瓶颈看起来是用的TDNN前端。应该改用LSTM前端以描述状态。
(2) LSTM对特征context不足,应结合TDNN
(3) LSTM不必特别多层,也不必所有gate都用上,只要能描述状态变化即可。
(4) 倾向构造这样的结构,底层是TDNN,高层是LSTM,LSTM只有一层即可,同时尽可能简化。
(5) TDNN + state + Chain objective或许会比TDNN+state后接MPE有所提高。或者,一个类似的CTC+MPE objective function. 

新松: Online 领域相关 基于字的通用语言模型:背景模型 地图不要,对话要 巨大的通用LM

TagModel

  • 加重path或词边:组合词,lm中加重; 晓明、小韩
  • 新词加重及添加


勤威项目

  • 发布了一个模型:数据62H台湾POI,在6776MPE3上增量;词表量250多万,识别不好;

省市路,分词,句式:tag的方法来做。 晓明 需要测试集,数据中心14日标完。

语音自适应

针对个人的 能提高2~3%(基数CER约10%) 客户端提取ivector,传给服务器;

End-To-End/CTC

Kaldi-nnet1, Kaldi-CTC, Kaldi-Chain and Eesen on WSJ. If GPU Parallel, then on grid-12 and grid-13. mpe-2 means method that considering Transition instead of CctcTransition when mpe, while mpe-1 means method that considering CctcTransition.


         model                                                        %WER (test_eval92)    %WER (after MPE)

kaldi/nnet1/dnn_2048_4(cd-dnn-hmm) 4.18


kaldi/ctc/decode_bd_tgpr_plm0.15 8.01 kaldi/ctc/decode_bd_tgpr_plm0.15, mpe-2, iter1 7.78 kaldi/ctc/decode_bd_tgpr_plm0.15, mpe-2, iter2 __7.73__


Test CTC-mpe (considering CctcTransition) on aurora4.


model  %WER learning rate


kaldi/ctc/decode_bd_tgpr_plm0.15 13.86 kaldi/ctc/decode_bd_tgpr_plm0.15_mpe_iter1 12.70 0.0002 kaldi/ctc/decode_bd_tgpr_plm0.15_mpe_iter2 12.28 kaldi/ctc/decode_bd_tgpr_plm0.15_mpe_iter3 12.43 kaldi/ctc/decode_bd_tgpr_plm0.15_mpe_iter4 12.34


CTC MPE上已成功。

粤语16K

声学模型

已训练完成 130H

语言模型

下载语料,训练模型,PPL:1000+ 16K模型:字错误率21.78

粤语8K

69小时的(CER28%) FreeTalk 90小时的(CER27.5%)质检 之前测试集有问题 字面和英文加入,测试集有,训练现在没有; 粤语只训练最后一层;90小时单独训练模型的最后一层加到1400的最后一层; LM差的比较远; 英文单词还没有加(英文的标音:用粤语的音素标); 粤英文的模型,需要训练;

维语8K

声学模型

已训练35小时;借用梦原的模型;用16K的lm Model,WER:30%左右;

语言模型

和新疆大学调试:公司Word;实验室 35H标注文本数据已提供实验室处理; toolkit做完了,维语句子转成monphone串;

发布了一个维语模型,需要识别标注语料,发布的是word模型: model_35h_20150828 CER:0.419693683925

导出64小时,声学和语言模型进行优化。

声纹识别

  • 数字串模型训练 正在采集数字串语音数据,预期本月内完成;
  • 聚类分类算法 基于Affinity距离的算法研究
  • D-Vector
  • 短语音的识别:

数字模型:单独训练,ivector和plda需要用数字需要训练。 之前录得语料,独立人只有100人; 16K的找到一个1200人的数据,从中挑选; 8K的采购;但是音量小,是否会有影响?

8个Phone和1个Tele的录音模型已训练完; 跨信道,阈值不一致; 需要解决跨信道的识别问题;

手机和固定电话,需要分开测试; ubm256,需要加大; 组织一下数据,跑D-vector实验;

测试集,真实场景的

考勤系统,mic指定; 定制背景模型;

加入情绪,场景的分析,分类的分析;

将测试数据加入训练,看是否有提高?

使用条件的问题:

 音量的影响?
 背景噪音:如大厅中,人声噪杂的影响?

信道适应? 端点检测 Mic信道 背景噪音

端点检测,信噪比计算; 发音方式:坐着、站着

PLDA adaptation