• Kaldi基础代码库及建模


    一.通用工具

      在kaldi/src/base/目录下,查看kaldi-common.h文件,内容如下:

    // base/kaldi-common.h
    
    // Copyright 2009-2011 Microsoft Corporation
    
    // See ../../COPYING for clarification regarding multiple authors
    //
    // Licensed under the Apache License, Version 2.0 (the "License");
    // you may not use this file except in compliance with the License.
    // You may obtain a copy of the License at
    //
    //  http://www.apache.org/licenses/LICENSE-2.0
    //
    // THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    // KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
    // WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
    // MERCHANTABLITY OR NON-INFRINGEMENT.
    // See the Apache 2 License for the specific language governing permissions and
    // limitations under the License.
    
    #ifndef KALDI_BASE_KALDI_COMMON_H_
    #define KALDI_BASE_KALDI_COMMON_H_ 1
    
    #include <cstddef>
    #include <cstdlib>
    #include <cstring>  // C string stuff like strcpy
    #include <string>
    #include <sstream>
    #include <stdexcept>
    #include <cassert>
    #include <vector>
    #include <iostream>
    #include <fstream>
    
    #include "base/kaldi-utils.h"
    #include "base/kaldi-error.h"
    #include "base/kaldi-types.h"
    #include "base/io-funcs.h"
    #include "base/kaldi-math.h"
    #include "base/timer.h"
    
    #endif  // KALDI_BASE_KALDI_COMMON_H_

      该文件包括base目录下的许多内容,几乎每个Kaldi程序都使用这些内容。其中包括:错误记录宏、typedef、数学实用程序功能和其它#define等内容。但是,这是一组简化的实用程序。在utils目录下有一个更完整的组,包括命令行解析和I/O函数句柄延伸的文件名,如管道。utils目录内容如下:

      

      查看common-utils.h内容可知,之所以将实用程序的子集隔离到base目录下,是为了使metrix目录的依赖关系最小化。matrix目录仅取决于base目录。

      

    二.矩阵库

      查看matrix/matrix-lib.h文件,可以看见其包含的那些文件,概述了矩阵库中的各种事物。该库基本上是BLAS和LAPACK的C++包装。文件sp-matrix.h和tp-matrix.h分别与对称压缩矩阵和三角形压缩矩阵有关。在kaldi-matrix.h文件中可以了解矩阵代码的外观。

      

      下面进行代码测试,在函数MatrixUnitTest()上面添加代码:

      

      在MatrixUnitTest()函数内部调用该函数,代码如下:

      UnitTestAddVec<Real>();

      

      下面保存,执行编译:

      

      解析:

        1.根据报错信息可知,错误出现在第4594行,且错误为分号,分析程序可知,其定义了两个变量,变量之间应该用逗号区分,因此应该把第一个分号改为逗

    号。

        

        2.重新执行编译,可知仍然存在错误,但无法判断出具体错误出现在哪里

        

        3.使用gdb进行调试

        

        4.下载最新的gdb

        软件服务器http://mirror.centos.org/centos/6/os/i386/Packages/

        5.上传到服务器中,安装

        

    三.声学建模代码

      1.gmm/diag-gmm.h:此类存储高斯混合模型。

      

      2.gmm/am-diag-gmm.h:此类存储GMM的集合。

      

    四.特征提取代码

      1.feat/feature-mfcc.h:专注于MfccOption结构。struct成员使你了解MFCC功能提取那些类型的选项。 

      

      2.featbin/compute-mfcc-feats.cc:命令行程序,可以看到在何处调用了选项结构的Register函数。

       

  • 相关阅读:
    黄页js-sdk开发总结分享
    最近的shell脚本(updating)
    nginx location 的配置
    nodejs 的安全
    paypal之nodejs 框架 Kraken-js 源码分析
    nodejs express 框架解密5-视图
    nodejs express 框架解密4-路由
    nodejs express 框架解密3-中间件模块
    nodejs express 框架解密2-如何创建一个app
    nodejs express 框架解密1-总体结构
  • 原文地址:https://www.cnblogs.com/yszd/p/12190211.html
Copyright © 2020-2023  润新知