美文网首页
【Kaldi学习.2】运行实例

【Kaldi学习.2】运行实例

作者: Colleen_oh | 来源:发表于2019-04-29 16:13 被阅读0次

    其实kaldi的例子有很多,但是我还是决定从小例子出发,因为我菜哈哈哈哈哈。kaldi的介绍和安装编译在我上一篇kaldi学习中:https://www.jianshu.com/p/e337120c5885

    kaldi里面有很多运行实例,

    一、运行yesno实例

    该实例是一个非常小的数据集,每一条记录都是一系列yes或者no的语音,标注是由文件名来标注的。先运行一下。

    $ cd ../egs/yesno/s5
    $ sudo ./run.sh
    

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



    WER为0,说明对于yesno这个例子的识别很准确。

    二、运行THCHS-30实例

    数据下载地址:http://www.openslr.org/18/


    这三个都下载下来,然后放在文件夹中,然后解压(可能需要等几分钟)
    tar zxvf data_thchs30.tgz -C./
    tar zxvf resource.tgz -C./
    tar zxvf test-noise.tgz -C./
    

    数据集中包括了train、dev(交叉验证集)、test。训练好的语言模型word.3gram.lm和phone.3gram.lm以及相应的词典lexicon.txt。训练和测试的目标数据也分为两类:word(词)和phone(音素)。

    1.local/thchs-30_data_prep.sh主要工作是从$thchs/data_thchs30(下载的数据)三部分分别生成word.txt(词序列),phone.txt(音素序列),text(与word.txt相同),wav.scp(语音),utt2pk(句子与说话人的映射),spk2utt(说话人与句子的映射)

    2.#produce MFCC features是提取MFCC特征,分为两步,先通过steps/make_mfcc.sh提取MFCC特征,再通过steps/compute_cmvn_stats.sh计算倒谱均值和方差归一化。

    3.#prepare language stuff是构建一个包含训练和解码用到的词的词典。而语言模型已经由王东老师处理好了,如果不打算改语言模型,这段代码也不需要修改。
    a)基于词的语言模型包含48k基于三元词的词,从gigaword语料库中随机选择文本信息进行训练得到,训练文本包含772000个句子,总计1800万词,1.15亿汉字
    b)基于音素的语言模型包含218个基于三元音的中文声调,从只有200万字的样本训练得到,之所以选择这么小的样本是因为在模型中尽可能少地保留语言信息,可以使得到的性能更直接地反映声学模型的质量。
    c)这两个语言模型都是由SRILM工具训练得到。

    二、修改脚本

    得到数据后,我们就要修改脚本才能运行我们的数据。要寻找到egs/thchs30/s5/cmd.sh 才可以在我的虚拟机上的路径为

    kaldi-trunk/egs/thchs30/s5
    
    vim cmd.sh
    

    然后按insert进行修改,修改成下面那样,修改为本地运行,至少4核内存。记得等号前后不要有空格。。。我就是因为有空格。。报错了,习惯了用python。。习惯了前后空格,sh语言是不一样的。

    #export train_cmd=queue.pl
    #export decode_cmd="queue.pl --mem 4G"
    #export mkgraph_cmd="queue.pl --mem 8G"
    #export cuda_cmd="queue.pl --gpu 1"
    export train_cmd=run.pl
    export decode_cmd="run.pl --mem 4G"
    export mkgraph_cmd="run.pl --mem 8G"
    export cuda_cmd="run.pl --gpu 1"
    

    修改完cmd.sh后,我们就要修改run.sh文件,一样是在s5的目录下的。我们要修改两个地方,第一个是修改并行任务的数量,可以根据你的电脑性能决定,第二个地方是修改数据集放的位置,

    vim run.sh
    

    然后修改成下图


    三、运行

    我们在s5下执行以下代码,就可以运行了

    ./run.sh
    

    下面是挺不错的文章,大家可以去看看!
    本文参考:
    https://blog.csdn.net/snowdroptulip/article/details/78914687
    https://blog.csdn.net/by21010/article/details/49072699
    https://blog.csdn.net/shichaog/article/details/73655628
    https://blog.csdn.net/snowdroptulip/article/details/78943748#comments

    相关文章

      网友评论

          本文标题:【Kaldi学习.2】运行实例

          本文链接:https://www.haomeiwen.com/subject/qdxynqtx.html