Overview

Kaldi 程序中的包含日志信息,警告信息和错误信息的输出都被定向到标准错误流。这也是我们的程序可以直接用在管道里,而这些信息不回和程序的输出所混淆的原因。最常用的生成日志,警告或错误信息输出的方式是通过宏 KALDI_LOG, KALDI_WARN 和 KALDI_ERR。宏 KALDI_ERR 被激活时一般程序都会被终止(除非异常被捕获)。一个代码片段的例子如下:

KALDI_LOG << "On iteration " << iter << ", objective function change was " << delta; if (delta < 0.0) { KALDI_WARN << "Negative objf change " << delta; if (delta < -0.1) KALDI_ERR << "Convergence failure in EM"; }

注意这些例子中不包含换行符(这个是自动添加的)。它产生的消息的一个典型的例子是:

WARNING (copy-feats:Next():util/kaldi-table-inl.h:381) Invalid archive file format

对于不太重要的日志信息(或太冗余的),以至不必在正常的日志中出现的,你可以用 KALDI_VLOG,例如

KALDI_VLOG(2) << "This message is not important enough to use KALDI_LOG for.";

如果-verbose选项设置的比括号中的数字大或者相等,它会被打印出来。e.g.如果程序的参数-verbose=2或更大,上面的信息就会被打印。更多内容见 Implicit command-line arguments

部分代码直接打印日志信息到标准错误流;这种做法不被提倡。

results matching ""

    No results matching ""