You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kaldi计算GOP时找不到apply-cmvn和add-deltas的解决求助

解决Kaldi GOP计算中找不到apply-cmvn和add-deltas命令的问题

问题原因

apply-cmvn和add-deltas是Kaldi自带的核心二进制工具,出现找不到命令的错误,本质是系统Shell无法定位到这些工具的所在路径,通常是Kaldi的bin目录未被添加到环境变量PATH中,或者运行脚本时未加载Kaldi的环境配置。

解决方法

方法1:临时配置环境变量(单次生效)

找到你的Kaldi安装根目录(比如/home/user/kaldi),在终端执行以下命令,将Kaldi的工具目录加入PATH:

export PATH=$PATH:/home/user/kaldi/src/bin:/home/user/kaldi/tools/openfst/bin

执行完成后,再运行run.sh即可。

方法2:修改run.sh脚本,自动加载Kaldi环境

打开run.sh文件,在脚本最开头添加一行(替换为你的Kaldi根目录):

source /home/user/kaldi/tools/env.sh && source /home/user/kaldi/src/env.sh

这样每次运行脚本时,都会自动加载Kaldi的环境配置,无需手动设置PATH。

方法3:永久配置环境变量(全局生效)

编辑用户目录下的~/.bashrc(如果使用zsh则编辑~/.zshrc),在文件末尾添加:

export PATH=$PATH:/home/user/kaldi/src/bin:/home/user/kaldi/tools/openfst/bin

保存后执行以下命令使配置生效:

source ~/.bashrc

之后所有终端会话都会自动识别Kaldi的工具命令。

错误日志参考

# compute-gmm-gop exp/eval_gop/tree exp/eval_gop/final.mdl data/lang/L.fst "ark,s,cs:apply-cmvn --utt2spk=ark:data/eval/split1/1/utt2spk scp:data/eval/split1/1/cmvn.scp scp:data/eval/split1/1/feats.scp ark:- | add-deltas ark:- ark:- |" "ark:utils/sym2int.pl --map-oov 221 -f 2- data/lang/words.txt data/eval/split1/1/text|" ark,t:exp/eval_gop/gop.1
# Started at Thu Feb 23 22:31:43 IST 2023
# compute-gmm-gop exp/eval_gop/tree exp/eval_gop/final.mdl data/lang/L.fst 'ark,s,cs:apply-cmvn --utt2spk=ark:data/eval/split1/1/utt2spk scp:data/eval/split1/1/cmvn.scp scp:data/eval/split1/1/feats.scp ark:- | add-deltas ark:- ark:- |' 'ark:utils/sym2int.pl --map-oov 221 -f 2- data/lang/words.txt data/eval/split1/1/text|' ark,t:exp/eval_gop/gop.1
sh: 1: apply-cmvn: not found
sh: 1: add-deltas: not found
sym2int.pl: replacing ORALS with 221
sym2int.pl: replacing P with 221
sym2int.pl: replacing H with 221
sym2int.pl: replacing D with 221
sym2int.pl: replacing (TW-) with 221
sym2int.pl: replacing YAHOO with 221
sym2int.pl: replacing (N-) with 221
sym2int.pl: replacing (AL-) with 221
sym2int.pl: replacing (YOU) with 221
sym2int.pl: replacing (MEAN) with 221
sym2int.pl: replacing MHM with 221
sym2int.pl: replacing (PLANES) with 221
sym2int.pl: replacing SCHOLARLY with 221
sym2int.pl: replacing (US-) with 221
sym2int.pl: replacing RACHEL with 221
sym2int.pl: replacing (C-) with 221
sym2int.pl: replacing (%HESITATION) with 221
sym2int.pl: replacing (WEE-) with 221
sym2int.pl: replacing CESSNA with 221
** Replaced 19 instances of OOVs with 221
LOG (compute-gmm-gop[5.3]:main():gopbin/compute-gmm-gop.cc:68) Done.
WARNING (compute-gmm-gop[5.3]:Close():kaldi-io.cc:512) Pipe apply-cmvn --utt2spk=ark:data/eval/split1/1/utt2spk scp:data/eval/split1/1/cmvn.scp scp:data/eval/split1/1/feats.scp ark:- | add-deltas ark:- ark:- | had nonzero return status 32512
ERROR (compute-gmm-gop[5.3]:~SequentialTableReaderArchiveImpl():util/kaldi-table-inl.h:678) TableReader: error detected closing archive 'apply-cmvn --utt2spk=ark:data/eval/split1/1/utt2spk scp:data/eval/split1/1/cmvn.scp scp:data/eval/split1/1/feats.scp ark:- | add-deltas ark:- ark:- |'
[ Stack-Trace: ]
kaldi::MessageLogger::HandleMessage(kaldi::LogMessageEnvelope const&, char const*)
kaldi::MessageLogger::~MessageLogger()
kaldi::SequentialTableReaderArchiveImpl<kaldi::KaldiObjectHolder<kaldi::Matrix<float> > >::~SequentialTableReaderArchiveImpl()
kaldi::SequentialTableReaderArchiveImpl<kaldi::KaldiObjectHolder<kaldi::Matrix<float> > >::~SequentialTableReaderArchiveImpl()
kaldi::SequentialTableReader<kaldi::KaldiObjectHolder<kaldi::Matrix<float> > >::~SequentialTableReader()
main
__libc_start_main
_start
terminate called after throwing an instance of 'std::runtime_error'
what():
# Accounting: time=1 threads=1
# Ended (code 134) at Thu Feb 23 22:31:44 IST 2023, elapsed time 1 seconds

内容的提问来源于stack exchange,提问作者snailoftheyear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:48:20