应用HTK搭建语音拨号系统1:数据准备
选自:http://maotong.blog.hexun.com/6204849_d.html
应用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 I=2 W=!NULL …… J=0 S=2 E=0 J=1 S=16 E=0 …… J=61 S=0 E=29 |
[step 2]字典定义
此例中利用BEEP语音字典,除去其中的重音符,并在每个发音后加入sp(short pause,小停顿)。如果有哑音标志,就用MP命令把sil和sp合并成sil。这些处理命令放在global.ded编辑脚本中:
|
文件名:global.ded |
|
AS sp RS cmu MP sil sil sp |
执行HDMan生成与任务相关的发音词典dict1:
HDMan -m -w .\lists\wlist -n .\lists\monophones1 -l dlog .\dict\dict1 .\dict\beep .\dict\names
上面的names文件是手工制作的专有人名的发音(包括SEND-START,SEND-END),文件wlist是出现在任务语法中的所有单词的有序列表,文件monophones1是用到的音素的列表,dlog为参数文件。
注1:实际上,这里应该手工修改dict1,为SENT-END 和SENT-START加上无输出标志,为了展示队后面步骤地影响,这里故意不添加。
|
文件名:.\dict\dict1 |
|
CALL k ao l sp DAVE d ey v sp DIAL d ay ax l sp EIGHT ey t sp FIVE f ay v sp FOUR f ao sp FOUR f ao r sp JULIAN jh uw l ia n sp JULIAN jh uw l y ax n sp LAW l ao sp LEE l iy sp NINE n ay n sp OH ow sp ONE w ah n sp PHIL f ih l sp PHONE f ow n sp SENT-END sil SENT-START sil SEVEN s eh v n sp SIX s ih k s sp STEVE s t iy v sp SUE s uw sp SUE s y uw sp THREE th r iy sp TWO t uw sp TYLER t ay l ax sp WOOD w uh d sp YOUNG y ah ng sp ZERO z ia r ow sp |
|
文件名:.\dict\names |
|
DAVE d ey v JULIAN jh uw l y ax n JULIAN jh uw l ia n LAW l ao LEE l iy PHIL f ih l SENT-END [] sil SENT-START [] sil STEVE s t iy v SUE s uw SUE s y uw TYLER t ay l ax WOOD w uh d YOUNG y ah ng |
为了避免在dlog里出现烦人的wanning,那就在names和beep同一目录下分别建立同名的编辑脚本,内容为空即可。
|
文件名:names.ded |
|
文件名:beep.ded |
[step 3]录制语音数据
HSGen工具可以生成符合task grammar的句子,用来指导录音(HTK book 里叫sentence prompts):
HSGen -l -n 140 wdnet .\dict\dict1>.\labels\trainprompts
HSGen -l -n 15 wdnet .\dict\dict1>.\labels\testprompts
根据上述指令文件,录制相应的140个训练用语音数据文件和15个测试用语音数据文件。一个录制的例子如下:
HSLab .\data\Train\speech\S0001
注2:随本文的压缩包没有包括这些数据文件,但包括了它们对应的特征文件,所以对整个实验没有什么影响。
[step 4]标注数据,得到真值文件
Perl脚本prompts2mlf可以把录音文本截成单词级真值文件。例如:
perl .\scripts\prompts2mlf .\labels\trainwords.mlf .\labels\trainprompts
perl .\scripts\prompts2mlf .\labels\testwords.mlf .\labels\testprompts
标注编辑器HLEd可把单词级真值文本(word level MLF)转成音素级真值文本(phone level MLF):
HLEd -l * -d .\dict\dict1 -i .\labels\phones0.mlf mkphones0.led .\labels\trainwords.mlf
编辑脚本mkphones0.led的内容如下:
|
文件名:mkphones0.led |
|
EX IS sil sil DE sp |
EX命令表示按照字典dict1进行展开,IS表示在每个话语的前后插入标志,DE一行表示phones0.mlf中单词间不用sp隔开。
[step 5]数据的特征提取
这里所用特征为MFCC。工具HCopy可以实现提取特征的工作。
HCopy -T 1 -C .\config\config1 -S codetr.scp
其中,配置文件config1要设置转换参数,另一脚本文件(script file)codetr.scp指定训练及输入和输出文件列表。执行结果,HCopy对codetr.scp文件左侧的语音数据按config的配置提取特征并存入codetr.scp文件右侧特征文件中。
|
文件名:.\config\config1 |
|
# Coding parameters TARGETKIND = MFCC_0_D_A TARGETRATE = 100000.0 SAVECOMPRESSED = T SAVEWITHCRC = T WINDOWSIZE = 250000.0 USEHAMMING = T PREEMCOEF = 0.97 NUMCHANS = 26 CEPLIFTER = 22 NUMCEPS = 12 ENORMALISE = F |
对于测试数据如法炮制:
HCopy -T 1 -C .\config\config1 -S codete.scp
注3:由于附带的压缩包已经包括了特征文件(在.\data\*\feature下),本步骤不用执行。
应用HTK搭建语音拨号系统1:数据准备的更多相关文章
- 应用HTK搭建语音拨号系统3:创建绑定状态的三音素HMM模型
选自:http://maotong.blog.hexun.com/6261873_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...
- 应用HTK搭建语音拨号系统2:创建单音素HMM模型
选自:http://maotong.blog.hexun.com/6204849_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...
- 应用HTK搭建语音拨号系统4: 识别器评估
选自:http://maotong.blog.hexun.com/6261890_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...
- HTK搭建语音拨号系统实验材料下载
选自:http://maotong.blog.hexun.com/6267266_d.html 压缩包包括全部的配置文件,脚本文件,必备的模型文件和实验手册. 全部实验材料的下载链接: 1 http: ...
- SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——1.安装系统ubuntu_mate_16.04
摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识.接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发.本章将从树莓派3的开发环境搭建入手,为后续ros开 ...
- 如何使用laravel搭建后台登录系统
今天想用laravel搭建一个后台系统,就需要最简单的那种,有用户登录系统,试用了下,觉得laravel的用户登录这块做的还真happy.当然,前提就是,你要的用户管理系统是最简单的那种,就是没有用户 ...
- 超强教程:如何搭建一个 iOS 系统的视频直播 App?
现今,直播市场热火朝天,不少人喜欢在手机端安装各类直播 App,便于随时随地观看直播或者自己当主播.作为开发者来说,搭建一个稳定性强.延迟率低.可用性强的直播平台,需要考虑到部署视频源.搭建聊天室.优 ...
- 基于HTTP Live Streaming(HLS) 搭建在线点播系统
1. 为何要使用HTTP Live Streaming 可以参考wikipedia HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体 网络传输协议.是 ...
- 使用monit搭建一个监控系统
上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情.当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行.我们搭建监控目的不过是出现问题能够及时的知 ...
随机推荐
- 通过Unity3D制作天空盒
1. 将全景图片转换为6面的立方体 最初的原始图片 通过PTGui 软件将图片分解为6个部分 2. 通过Unity进行操作 创建3D项目工程 将之前的6张图片导入到Assets中 创建一个Metria ...
- cx_freeze 把 .py 打包成 .exe
1.安装 python-3.4.3 默认安装路径 C:\Python34 2.安装 cx_Freeze-4.3.3.win32-py3.4 3.运行 Python Version 3.4 regist ...
- Language Tool ,a plugin for TeXStudio
Language Tool ,a plugin for TeXStudio TexStudio supports LanguageTool as an inline grammar checker. ...
- xenserver安装使用
1.下载参考:http://blog.sina.com.cn/s/blog_61c07ac50102vf55.html 2.安装(个人笔记本配置了12G的内存,所以在VM Workstation 11 ...
- SPL--spl_autoload_register
spl_autoload_register() : 调用未定义类时,系统会按顺序调用注册到spl_autoload_register()函数的所有函数,而不是调用__autoload函数. 解决问题: ...
- 1.Redis安装(转)
Redis的官网为: http://redis.io/. 1.Redis安装 redis的安装非常的简单,而且Redis并不依赖其他环境和标准库,很容易上手,这可能也是它流行的一个原因.这里为了测试方 ...
- C# 连接mongodb副本集+分片读写分离及学习资料
一.副本集配置 搭建完毕,1台主实例.1台从实例.1台仲裁实例.mongodb建议副本集中的机器数量为奇数,即至少需要3台实例 二.副本集连接字符串 1.读 mongodb://secondary.c ...
- 发布自己的包到Nuget上
1.首先下载Nuget.exe https://dist.nuget.org/index.html 2.设置环境变量 设置apikey nuget setApiKey <my_api_key& ...
- Backbone.js源码分析(珍藏版)
源码分析珍藏,方便下次阅读! // Backbone.js 0.9.2 // (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc. // Backbone ...
- 【转载】利用Unity自带的合图切割功能将合图切割成子图
虽然目前网上具有切割合图功能的工具不少,但大部分都是自动切割或者根据plist之类的合图文件切割的, 这种切割往往不可自己微调或者很难维调,导致效果不理想. 今天逛贴吧发现了一位网友写的切割合图插件很 ...