Kaldi 学习笔记--实例yesno

参考:https://blog.csdn.net/nsh119/article/details/81587462

         https://blog.csdn.net/shichaog/article/details/73264152

         https://www.cnblogs.com/welen/p/7485151.html

yesno是关于yes和no两个孤立词的识别,该实例是一个非常小的数据集,每一条记录都是一系列yes或者no的语音。

在终端输入: cd kaldi-trunnk/egs/yesno/s5      #进入到yesno的样例目录

再输入:  ls     #查看该目录下的有哪些文件

其中:conf文件夹里是一些配置文件,例如MFCC的参数,HMM的拓扑结构;

          local文件夹里主要是一些准备的数据脚本,供顶层的脚本run.sh调用;

         steps和utils文件夹里主要是一些运行时调用的脚本;

         data文件夹里主要存放语言模型、发音字典和音素信息等等;

再输入:./run.sh  #该脚本执行孤立词识别流程;

经过训练和测试,可以看到运行结果。

其中:WER是字错误率,是一个衡量语音识别系统的准确程度的度量。其计算公式是WER=(I+D+S)/N,其中I代表被插入的单词个数,D代表被删除的单词个数,S代表被替换的单词个数。也就是说把识别出来的结果中,多认的,少认的,认错的全都加起来,除以总单词数。这个数字当然是越低越好。

看看run.sh脚本:

1.音频文件下载,每个.wav文件的发音是yes,no.。文件名1代表yes,0代表no。这种文件名的命名方便以后的数据准备。

2.数据准备

  •   wav文件预处理,local/prepare_data.sh waves_yesno  结果保存在s5/data/train_yesno 和s5/data/test_yesno中,主要由以下文件:

   text:音频文件id(文件名)与单词的对应;

   wav.scp:音频文件id 与音频文件的对应;

   utt2spk:音频文件id与说话人的对应;

   spk2utt:说话人id与音频文件id的对应;

其大致步骤为:将60个音频文件提取出文件id,其中30个作为训练,剩余30个作为测试。根据文件名中的1和0获取音频文件的内容。将其写入相应的文件,在实际大规模音频内容的情况下,需要自己制作上面的文件来做数据准备。

  • 字典准备,local/prepare_dict.sh   结果保存在s5/data/local/dict/目录下面

    lexicon.txt :完整的词位(包括静音SIL)-音素对

    lexicon_words.txt:单词-音素对

    silence_phones.txt :非语言学音素

    nonsilence_phones.txt: 语言学音素

     optional_silence.txt :备选非语言音素  

其大致步骤为:将input的文件夹下的已经写好的文件复制到该目录下,并加入SIL。

  • lang 目录,utils/prepare_lang.sh --position-dependent-phones false data/local/dict "<SIL>" data/local/lang data/lang   结果保存在s5/data/lang/目录下

  phones.txt:音素与整形的对应(openfst格式的symbol tables),以后的操作单词将以整形数字代替

  words.txt: 单词与整形的对应(openfst格式的symbol tables),以后的操作音素将以整形数字代替

    L_disambig.fst:加消歧符号的字典fst(可以被kaldi识别的字典)

    L.fst:字典fst(可以被kaldi识别的字典)

     topo:音素状态转移图(HMM)Y,N每个音素为三种状态;SIL为五种状态

     oov:词汇表之外的单词会映射到该文件中

   phones:该目录下有许多关于音素集的信息。同一类信息可能有三种不同的格式,分别以.csl、.int和.txt结尾。感兴趣的话可以逐个打开查看!~~~

  • 语言模型: local/prepare_lm.sh 

该脚本其实很简单,将已经生成好的语言模型(s5/input/task.arpabo)转化为Kaldi格式的G.fst,其结果在s5/data/lang_test_tg目录下,有关语言模型创建可参考语音识别-SRILM安装与使用

3.特征向量提取,结果在s5/mfcc/目录下,其中.ark文件为MFCC的特征向量;.scp文件是音频文件或者说话人与相应ark文件的对应关系;cmvn为说话人,raw为音频文件。有关MFCC可以参考语音识别-MFCC特征提取

4.单音素训练,该步的输出在s5/exp/mono0a/目录下,该步骤将生成声学模型。

5.构图,该步骤生成最终的HCLG.fst

6.解码,结果在s5/exp/mono0a/decode_test_yesno/目录下

7.查看结果,for x in exp/*/decode*; do [ -d $x ] && grep WER $x/wer_* | utils/best_wer.sh; done

 

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值