为什么80%的码农都做不了架构师?>>>   

Sphinx武林秘籍()

――训练自已的中文语言模型与声学模型

一、训练语言模型

   (1) 安装语言模型训练工具CMUCLMTK

      ./configure
      sudo make
      sudo make install
默认安装在/usr/local/bin下面,可以看到下面这些生成文件
idngram2lm   idngram2stats      mergeidngram     text2idngram
text2wfreq    text2wngram       wfreq2vocab

   (2) 准备训练的文档

sudo -i
vi my_db.txt
在 .txt中输入如下内容,记住结尾不可留“\n”(实验证明了这一点)。
<s> 前进 </s>
<s> 后退 </s>
<s> 左转 </s>
<s> 右转 </s>
<s> 停止 </s>
wq 保存退出

   (3)训练文档成模板

cd/usr/local/bin

     text2wfreq < my_db.txt | wfreq2vocab > my_db.tmp.vocab
     text2idngram -vocab my_db.vocab -idngram my_db.idngram < my_db.txt
     idngram2lm –vocab my_db.vocab -idngram my_db.idngram -arpa my_db.arpa
     sphinx_lm_convert -i my_db.arpa -o my_db.lm.DMP

最终生成了语言模型my_db.lm.DMP

二、训练声学模型

   (1)准备一些文件

      分别创建两个目录etc和wav,然后在两个目录下面制作一些数据文件,方便后面训练时使用。如下所示:
  • etc

    • my_db.dic - Phonetic dictionary
    • my_db.phone - Phoneset file
    • my _db.lm.DMP - Language model
    • my_db.fillers - List of fillers
    • my_db_train.fileids - List of files for training
    • my_db_train.transcription - Transcription for training
    • my_db_test.fileids - List of files for testing
    • my_db_test.transcription - Transcription for testing
  • wav
    • speaker_1

      • 1_11.wav - Recording of speech utterance
    • speaker_2
      • 2_11.wav - Recording of speech utterance
    • speaker_3
      • 3_11.wav - Recording of speech utterance
    • speaker_4
      • 4_11.wav - Recording of speech utterance
    • speaker_5
      • 5_11.wav - Recording of speech utterance

     (2)准备etc下的数据文件

        cd /sphinx/Mytrain
        mkdir etc
        cd etc
1. vi  my_db_train.fileids
2. vi  my_db_test.fileids
输入内容:
   speaker_1/1_11
speaker_2/2_11
speaker_3/3_11
speaker_4/4_11
speaker_5/5_11          
3. vi my_db_train.transcription
4. vi  my_db_test.transcription
输入内容如下:
   <s> 前进 </s> (1_11)
<s> 后退 </s> (2_11)
<s> 左转 </s> (3_11)
<s> 右转 </s> (4_11)
<s> 停止 </s> (5_11)
5. vi  my_db.dic
          输入内容:
  前进    Q IAN J IN
 后退    H OU T UI
    左转    Z UO ZH UAN
   右转    Y OU ZH UAN
 停止    T ING ZH IB
      6.vi my_db.filler
       输入内容:
                 <s> SIL
</s> SIL
<sil> SIL
      7.生成my_db.phone
cd ..
      cd scripts
      cp make_phoneset.pl  /sphinx/Mytrain/etc
      ./make_phoneset.pl my_db.dic my_db.filler > my_db.phone
      cd ..
      cd etc
      vi my_db.phone //查看下生成的.phone中的内容
H
IAN
IB
IN
ING
J
OU
Q
SIL
T
UAN
UI
UO
Y
Z
ZH
      以上若有多余字母,可手工删除。
      至此加上之前生成的my_db.lm.DMP,etc下的数据文件已准备完毕。
注意:以上所有的文件在输入结尾不可留下“/n”。

(3)准备wav下的音频文件

我们先在windows下面,录下前进、后退、左转、右转、停止五个命令词的wav音频文件,然后放在共享文件中。
 mkdir  speaker_1  speaker_2  speaker_3  speaker_4  speaker_5
把相应的音频1_11.wav 2_11.wav 3_11.wav 4_11.wav 5_11.wav 分别拷贝到相应的speaker_1  speaker_2  speaker_3  speaker_4  speaker_5 目录下面。
注意:此处音频文件采样率16KHz,单声道录音。
(4) an4sphinxtrain搭建语音训练系统
  cd  /sphinix/MyTrain/  
  SphinxTrain/scripts_pl/setup_SphinxTrain.pl -task an4
pocketsphinx/scripts/setup_sphinx.pl -task an4
  在当前目录下面会产生如下目录:
  bin
  bwaccumdir 
  etc
  feat
  logdir
  model_parameters
  model_architecture  
  scripts_pl
  wav
把(2)、(3)中etc、wav下面的文件相应的拷贝到刚生成的wav与etc中。
(5) 修改etc/sphinx_train.cfg配置
  1.路径
# These are filled in at configuration time
$CFG_DB_NAME = "an4";
$CFG_BASE_DIR = "/sphinx/MyTrain/an4";
$CFG_SPHINXTRAIN_DIR = "SphinxTrain";
改为
# These are filled in at configuration time
$CFG_DB_NAME = "my_db";
$CFG_BASE_DIR = "/sphinx/MyTrain";
$CFG_SPHINXTRAIN_DIR = "SphinxTrain";
  2.音频
# Audio waveform and feature file information
$CFG_WAVFILES_DIR = "$CFG_BASE_DIR/wav";
$CFG_WAVFILE_EXTENSION = 'sph';
$CFG_WAVFILE_TYPE = 'nist'; # one of nist, mswav, raw
改为
# Audio waveform and feature file information
$CFG_WAVFILES_DIR = "$CFG_BASE_DIR/wav";
$CFG_WAVFILE_EXTENSION = 'wav';
$CFG_WAVFILE_TYPE = 'mswav'; # one of nist, mswav, raw
3.文件命名
#*******variables used in main training of models*******
$CFG_DICTIONARY     = "$CFG_LIST_DIR/$CFG_DB_NAME.dic";
$CFG_RAWPHONEFILE   = "$CFG_LIST_DIR/$CFG_DB_NAME.phone";
$CFG_FILLERDICT     = "$CFG_LIST_DIR/$CFG_DB_NAME.filler";
$CFG_LISTOFFILES    = "$CFG_LIST_DIR/${CFG_DB_NAME}_train.fileids";
$CFG_TRANSCRIPTFILE = "$CFG_LIST_DIR/${CFG_DB_NAME}_train.transcription";
$CFG_FEATPARAMS     = "$CFG_LIST_DIR/feat.params";
 
确定etc下面的文件是以这种方式命名的。
4.模板类型与模板参数
#*******variables used in characterizing models*******
 
$CFG_HMM_TYPE = '.cont.'; # Sphinx III
#$CFG_HMM_TYPE  = '.semi.'; # Sphinx II
 
pocketsphinx和Sphinx III一样,都是.cont。
(6) 配置声音特征参数
这里的操作为采样率为8KHz的情况,若采样率为16KHz,则可以直接略过此步操作。
vi feat.params
添加修改如下:
-samprate 8000.0
-nfilt 31
-lowerf 200.00
-upperf 3500.00
-dither yes
(7) 配置解码参数
1.路径
# These are filled in at configuration time
$DEC_CFG_DB_NAME = 'an4';
$DEC_CFG_BASE_DIR = '/sphinx/MyTrain/an4';
$DEC_CFG_SPHINXDECODER_DIR = 'pocketsphinx';
改为
# These are filled in at configuration time
$DEC_CFG_DB_NAME = 'my_db';
$DEC_CFG_BASE_DIR = '/sphinx/MyTrain';
$DEC_CFG_SPHINXDECODER_DIR = 'pocketsphinx';
2、语言模型名称
# This variables, used by the decoder, have to be user defined, and
# may affect the decoder output
 
$DEC_CFG_LANGUAGEMODEL_DIR = "$DEC_CFG_BASE_DIR/etc";
$DEC_CFG_LANGUAGEMODEL  = "$DEC_CFG_LANGUAGEMODEL_DIR/my_db.lm.DMP";
$DEC_CFG_LANGUAGEWEIGHT = "10";
$DEC_CFG_BEAMWIDTH = "1e-80";
$DEC_CFG_WORDBEAM = "1e-40";
改为
# This variables, used by the decoder, have to be user defined, and
# may affect the decoder output
 
$DEC_CFG_LANGUAGEMODEL_DIR = "$DEC_CFG_BASE_DIR/etc";
$DEC_CFG_LANGUAGEMODEL  = "$DEC_CFG_LANGUAGEMODEL_DIR/an4.lm.DMP";
$DEC_CFG_LANGUAGEWEIGHT = "10";
$DEC_CFG_BEAMWIDTH = "1e-80";
$DEC_CFG_WORDBEAM = "1e-40";
(8) 开始训练
 cd /sphinx/MyTrain
./scripts_pl/make_feats.pl -ctl etc/my_db_train.fileids
./scripts_pl/make_feats.pl -ctl etc/my_db_test.fileids
./scripts_pl/RunAll.pl
在目录model_parameters下面生成了新的声学模型my_db.cd_cont_1000
 

转载于:https://my.oschina.net/VenusV/blog/703405

Sphinx武林秘籍(中)相关推荐

  1. Sphinx武林秘籍(上)

    为什么80%的码农都做不了架构师?>>>    Sphinx武林秘籍(上) ――使用现有的语言模型与声学模型 一.     使用平台 Windows XP.VMware workst ...

  2. Sphinx武林秘籍(下)

    为什么80%的码农都做不了架构师?>>>    Sphinx武林秘籍(下) ――使用训练好的语言模型与声学模型 一.第一次使用 #cp -rf my_db.cd_cont_1000 ...

  3. JAVAWEB增删改查武林秘籍

    增删改查武林秘籍 学之受用无穷,可在30分钟内写完增删改查所有后台代码 1.项目搭建 1:创建一个maven 带骨架webapp的项目 2:创建表:book表(你所要增删改查的表) 并且使用idea ...

  4. 计算机界的“武林秘籍”——经典教材推荐

    本文来源于网络,对最经典的教材进行了排行,堪称计算机界的"武林秘籍",秘籍在手,谁与争锋!整理后全文如下: 几年前,台湾著名技术作家侯捷先生曾经写过一篇影响很大的书评文章,叫做&l ...

  5. 武林秘籍之设计模式迷你手册

    作者博客 http://www.jianshu.com/u/9fa7fc2f3733 文章目录 前言 剑谱真容 入门必备 组合模式(Composite) 责任链模式(Chain of Responsi ...

  6. 武林秘籍之Spring AOP 切面编程的简单应用

    年轻人,我观你骨骼精奇,定是万里无一的练武奇才,老夫这里有一本失传已久的武林秘籍,现赠于你,望你勤加苦练,早日修成正果... AOP(面向切面编程):Aspect Oriented Programmi ...

  7. Qt武林秘籍学习笔记摘要

    1 原文链接 Qt开发经验: 自己总结的这十多年来做Qt开发以来的经验,以及Qt相关武林秘籍电子书,会一直持续更新增加,欢迎各位留言增加内容或者提出建议,谢谢! (gitee.com) 编程语录: 自 ...

  8. 基金套利的常见招数:高人套利手法像武林秘籍

    [题外话] 有人的地方就有江湖. 如今,在巨大的财富效应面前,投资基金已经成为一场"全民运动".虽然基金是强调价值投资的中长期投资品种,买入并长期持有就会有不错的收益,但江湖中人并 ...

  9. 大佬的QT武林秘籍(整理)

    根据大佬的武林秘籍,整理出来一些网的时候自己可以直接查看 大佬主页:https://blog.csdn.net/feiyangqingyun?type=blog 1.QTimer::singleSho ...

最新文章

  1. oracle 关联出现重复数据,ORACLE 分页查询出现重复记录的解决办法
  2. 如何使用Hadoop的JobControl
  3. 360导入html没有,IE无法加载到外部CSS样式, 用360浏览器就可以,上CSS引用代码[急]_html/css_WEB-ITnose...
  4. 十年的老代码,你敢动?
  5. multiple context container - entry point for tile click
  6. mwc校准油门_编写下载服务器。 第五部分:油门下载速度
  7. 如何利用python语言实现对象数组
  8. 信息学奥赛一本通 2051:【例3.1】偶数
  9. ceph mds的客户端告警记录
  10. 条件运算符的嵌套_条件运算符
  11. 内网渗透总结二:第二步管理员密码的明文和hash获取
  12. Python repr()函数
  13. scrapy框架之全站数据的爬取
  14. 百度红包架构分析与推测
  15. Google Earth Engine(gee)中的Geometry
  16. SAP成都研究院的体育故事
  17. Java中输出所有的水仙花数
  18. linux中生成内核模块时部分函数undefined的应对方法
  19. 香槟分校计算机研究生专业,伊利诺伊大学香槟分校研究生计算机系统专业排名...
  20. Android懒人库

热门文章

  1. 阿里云盘终于可以分享文文件了!!!
  2. HTML5期末大作业:在线电影网站设计——我不是药神电影介绍(4页) HTML+CSS+JavaScript 大二实训大作业HTML源码
  3. 《痞子衡嵌入式半月刊》 第 70 期
  4. 5G混战:改变世界不需要论资排辈
  5. 2021年电工(中级)报名考试及电工(中级)考试资料
  6. 调岗调薪带来的法律风险
  7. zcmu1684 求余数
  8. Lumiprobe 活性染料丨氨基染料:花青5胺
  9. 带宽、吞吐量与线速的关系(转载)
  10. SmartRefreshLayout 下拉刷新上拉加载框架