Kaldi个人资料记录

相关资料


transition id

以kaldi中的yesno为例谈谈transition
kaldi中的chain model(LFMMI)详解
我想问下kaldi中的pdf-id是什么意思?和state-id有什么关系?
LF-MMI笔记

Bug record

  • error “utils/validate_data_dir.sh: utt2spk is not in sorted order when sorted first on speaker-id”
    utt_id的前缀必须为spk_id,另外spk_id与utt_id之间最好为下划线ref
  • Refusing to split data because number of speakers 3 is less than the number of output .scp files 10
    让我修改nj小于说话人数量?可能work
    确实需要nj小于说话人数量,但之前理解的说话人定义不太合适,导致定义的说话人数量过少
    较好的说话人的定义可以不为现实定义的人,同一个人不同的说话场景也可视为不同的说话人
  • bailiao训练集数据为163449 速度感觉好慢 设了nj=30 从1.28下午14点多开始训 后来应该是确实数据量过大,需要慢慢训练
  • decode.sh如果需要打分的话 需要自己定义local/score.sh
    steps/decode.sh: Not scoring because local/score.sh does not exist or not executable.
    aishell默认使用下述所示的两个打分脚本
    #!/bin/bash
    
    set -e -o pipefail  
    set -x
    steps/score_kaldi.sh "$@"  # 以WER为标准(word error rate)
    steps/scoring/score_kaldi_cer.sh --stage 2 "$@" #以CER为标准(char error rate?)
    
    echo "$0: Done"
    
  • sox 变速直接输出为管道会遇到warning
    Length in output .wav header will be wrong since can’t seek to fix it
    参考

目录解释

  • data目录
    |—— wav.scp 句子id→句子路径(path)映射
    |—— text 句子id→文本映射
    |—— spk2utt 说话人id→句子id映射
    |—— utt2spk 句子id→说话人id映射
    |—— segments 句子切割方式指示
    |—— utt2dur 句子id→时长映射
    |—— spk2gender 说话人id→性别映射

  • decode 目录
    exp/mono/decode_dev/scoring_kaldi/test_filt.chars.txt 为以char为单位的test text
    exp/mono/decode_dev/scoring_kaldi/test_filt.txt 为以word为单位的test text
    上述两个文件是用来作为标准的
    exp/mono/decode_dev/scoring_kaldi/best_wer 指示了最小WER的解码结果,如下为文件内容

    %WER 42.17 [ 53854 / 127698, 2824 ins, 8597 del, 42433 sub ] exp/mono/decode_dev/wer_10_0.0
    # 10 代表 LM-weight for lattice rescoring (默认从7-17)
    # 0.0 代表 word_ins_penalty (默认0.0 0.5 1.0)
    

    exp/mono/decode_dev/scoring_kaldi/best_cer 指示了最小CER的解码结果,如下为文件内容

    %WER 32.97 [ 67698 / 205341, 1153 ins, 5041 del, 61504 sub ] exp/mono/decode_dev/cer_10_0.0
    # 解释同上
    

    exp/mono/decode_dev/scoring_kaldi/penalty_0.0/10.txt 即代表了最好的以WER为标准的解码结果
    exp/mono/decode_dev/scoring_kaldi/penalty_0.0/10.chars.txt 即代表了最好的以CER为标准的解码结果

  • arpa语言模型格式,arpa这里的概率用的是 l o g 10 x log_{10}{x} log10x,fst上用的是 − l n x -ln{x} lnx
    在这里插入图片描述
    在这里插入图片描述


常用命令记录

  • 参考语音识别:模型文件介绍之FST[kaldi]
    # 1) fstprint:打印fst为文本格式
    # 参数有—isymbols和—osymbols分别表示输入符号表和输出符号表,这两个参数可以省略
    # 例子如下:
    fstprint G.fst G.txt 
    fstprint --isymbols=phones.txt --osymbols=words.txt L.fst L.txt
    
    # fstdraw+graphviz:将fst绘成图(需要安装graphviz才可以使用dot命令来画图)
    fstdraw --isymbols=phones.txt --osymbols=words.txt L.fst 
    fstdraw --isymbols=phones.txt --osymbols=words.txt HCLG.fst 
    # 可以加上graphviz来画成pdf
    fstdraw --isymbols=phones.txt --osymbols=words.txt L.fst | dot -Tps | ps2pdf - L.pdf
    fstdraw --isymbols=words.txt --osymbols=words.txt G.fst | dot -Tps | ps2pdf - G.pdf
    # 注意画G.fst时 输入输出符号应为word
    

  • top命令查看CPU情况

    top -bn 1 -i -c
    top -c # 实时监控
    top -u $user # 查看特定user的进程
    

  • ngram语言模型输出结果解释
    $ ngram -lm data/local/lm/srilm/srilm.o3g.kn.gz -ppl data/local/lm/srilm/heldout
    file data/local/lm/srilm/heldout: 200 sentences, 3083 words, 0 OOVs
    0 zeroprobs, logprob= -6910.93 ppl= 127.37 ppl1= 174.432
    
    第一行 文件 heldout 的基本信息:200 句,3083 个单词,0 个未登录词;
    第二行 为评分的基本情况:无 0 概率;logP(T)=-6910.93,ppl==127.37, ppl1= 174.432,均为混淆度。其公式稍有不同,如下:
    p p l = 1 0 − l o g P ( T ) / S e n + W o r d ;   p p l 1 = 1 0 − l o g P ( T ) / W o r d ppl=10^{-{logP(T)}/{Sen+Word}}; ppl1=10^{-{logP(T)}/Word} ppl=10logP(T)/Sen+Word; ppl1=10logP(T)/Word
    其中 S e n 和 W o r d 分别代表句子和单词数 . 其中 Sen 和 Word 分别代表句子和单词数. 其中SenWord分别代表句子和单词数.

  • irstlm github
    irstlm手动安装
    这里要声明IRSTLM的安装路径:
    # download example
    wget -c https://sourceforge.net/projects/irstlm/files/irstlm/examples/irstlm-sampledata-20110916.zip
    # add env 
    export IRSTLM=$userpath/tools/irstlm
    export PATH=$PATH:$IRSTLM/bin:/$IRSTLM/bin/$MACHTYPE
    
    irstlm的工具脚本都在bin中

  • python设置gpu

    os.environ["CUDA_VISIBLE_DEVICES"] = "6"
    


  • 展示nnet3模型文件

    src/nnet3bin/nnet3-am-copy --binary=false exp/nnet3/tdnn/final.mdl exp/nnet3/tdnn/final.mdl.txt
    
  • 展示神经网络loss

    steps/nnet3/report/generate_plots.py
    grep Overall exp/nnet3/tdnn_1b_kws/log/compute_prob_*.100.log
    
  • sox截取音频

截取1-6秒的音频出来
sox audio1.wav audio1_0003_sil.wav trim 1 5
sox audio1.wav audio1_0003_sil.wav trim 1 =6
  • batch normalization
    model.train() model.eval()主要用于通知dropout层和BN层在train和validation/test模式间切换:
    在train模式下,dropout网络层会按照设定的参数p设置保留激活单元的概率(保留概率=p); BN层会继续计算数据的mean和var等参数并更新。
    在eval模式下,dropout层会让所有的激活单元都通过,而BN层会停止计算和更新mean和var,直接使用在训练阶段已经学出的mean和var值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值