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函数。

   

posted @ 2020-01-14 11:12  云山之巅  阅读(537)  评论(0编辑  收藏  举报