应用 HTK 搭建语音拨号系统
苏统华
哈尔滨工业大学人工智能研究室
2006 年 10 月 30 日
声明:版权所有,转载请注明作者和来源
该系统能够识别连续说出的数字串和若干组姓名。建模是针对子词(sub-word, eg. 音
素),具有一定的可扩充性。当加入一个新名字时,只需修改发音词典和任务语法即可。模
型为连续混合高斯输出,运用语音决策树聚类形成的绑定状态式三音素。
1. 数据准备
需要录制训练数据和测试数据。为进行校准,还需要数据的标注文本。这里用任务语法
(task grammar)产生真值文本(ground truth)。为了处理训练数据,需要定义一个语音集合和一
个字典用以涵盖训练和测试数据中涉及的单词。
[step 1]任务语法定义
任务语法以包含变量的正则表达式形式定义,存储在文件 gram 里:
文件名:gram
$digit = ONE | TWO | THREE | FOUR | FIVE |
SIX | SEVEN | EIGHT | NINE | OH | ZERO;
$name = [ SUE ] LAW |
[ JULIAN ] TYLER |
[ DAVE ] WOOD |
[ PHIL ] LEE |
[ STEVE ] YOUNG;
( SENT-START ( DIAL <$digit> | (PHONE|CALL) $name) SENT-END )
上面的语法是高层表示,必须通过 HParse 转成 HTK 可用的底层表示。底层表示存于文
件 wnet 中:
HParse gram wdnet
文件名:wdnet
VERSION=1.0
N=31 L=62
I=0 W=SENT-END
I=1 W=YOUNG
……
J=0 S=2 E=0
……
J=61 S=0 E=29
- 1
- 2
- 3
前往页