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