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


本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/archive/2012/12/01/2796967.html,如需转载请自行联系原作者。


目录
相关文章
|
1天前
|
C++
C++番外篇—— ostream和istream详解
C++番外篇—— ostream和istream详解
9 1
|
2月前
|
存储 JSON 数据可视化
用Python分析S11决赛EDGvsDK,教你怎么硬核吹EDG
用Python分析S11决赛EDGvsDK,教你怎么硬核吹EDG
33 4
用Python分析S11决赛EDGvsDK,教你怎么硬核吹EDG
|
4月前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!
|
3月前
|
数据挖掘 数据处理 Python
醍醐灌顶!真的不愧是整个python界的神作!
这本书由Python pandas项目的创始人Wes McKinney亲自撰写,全面介绍了如何运用Python进行数据操作、处理、清洗和整理等关键技能。
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
豆瓣评分9.5!清华大牛熬夜整理的Python深度学习教程开发下载!
深度学习目前已经成为了人工智能领域的突出话题。它在“计算机视觉和游戏(AlphaGo)等领域的突出表现而闻名。 今天给小伙伴们分享的这份手册,详尽介绍了用 Python 和 Keras进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。
|
4月前
|
算法 NoSQL Python
开山之作!Python数据与算法分析手册,登顶GitHub!
若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。 Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。只有洞彻数据结构与算法,才能真正精通Python。
|
4月前
|
JavaScript 数据挖掘 程序员
老程序员分享:Piwik学习
老程序员分享:Piwik学习
|
5月前
|
运维 监控 供应链
《统计学简易速速上手小册》第7章:时间序列分析(2024 最新版)
《统计学简易速速上手小册》第7章:时间序列分析(2024 最新版)
48 1
|
算法 Python
Python基础训练 建议学弟学妹们收藏
经典题目解析以及代码实现
124 0
Python基础训练 建议学弟学妹们收藏
还在为520礼物发愁吗?教你用python撩女朋友
还在为520礼物发愁吗?教你用python撩女朋友
还在为520礼物发愁吗?教你用python撩女朋友