解决【kaldi】生成L.fst时 报错:libfst.so.16: cannot open shared object file 及类似问题

发布于:2022-11-07 ⋅ 阅读:(282) ⋅ 点赞:(0)

解决【kaldi】生成L.fst时 报错:libfst.so.16: cannot open shared object file 及类似问题

报错信息:fstcompile: error while loading shared libraries: libfst.so.16: cannot open shared object file: No such file or directory

报错信息:fstarcsort: error while loading shared libraries: libfst.so.16: cannot open shared object file: No such file or directory

使用脚本utils/prepare_lang.sh 生成L.fst

utils/prepare_lang.sh ~/kaldi/data/dict/ 'SIL' ~/kaldi/data/tmp/01/ ~/kaldi/data/L/lang/

报错信息如下:
在这里插入图片描述
出现这个错误是无法正常生成L.fst的

原因暂且未知,有说法是因为编译好kaldi之后移动了目录导致,但是总的来说原因一般有两个:

  • 一是:操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对,遇到这种情况那就去网上下载并安装上即可。

  • 二是:已经安装了该共享库,但执行需要调用该共享库的程序的时候,程序按照默认共享库路径找不到该共享库文件。

我们这里属于原因2


解决方案

  1. 首先在kaldi根目录下 查找 报错库位置
cd ~/kaldi/kaldi/
find . -name libfstscript.so.16
# 缺少什么就查找什么 如下所示

在这里插入图片描述
记住这两个位置的上一路径,下面进行配置

  1. 在环境变量文件当中设置 LD_LIBRARY_PATH
    LD_LIBRARY_PATH 的意思是告诉 loader 在哪些目录中可以找到共享库
vim ~/.bashrc
export LD_LIBRARY_PATH=~/kaldi/kaldi/tools/openfst-1.7.2/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=~/kaldi/kaldi/tools/openfst-1.7.2/src/script/.libs:$LD_LIBRARY_PATH 
# wq

source  ~/.bashrc #激活环境变量

在这里插入图片描述
一般来说到这里已经可以正常使用了,可以返回执行刚刚的脚本文件了,

如果还不行,再看下面…

  1. 配置 /etc/ld.so.conf文件:
cat /etc/ld.so.conf
# 输出: include ld.so.conf.d/*.conf
 
echo "~/kaldi/kaldi/tools/openfst-1.7.2/lib" >> /etc/ld.so.conf
echo "=~/kaldi/kaldi/tools/openfst-1.7.2/src/script/.libs" >> /etc/ld.so.conf
 
ldconfig

ldconfig命令的用途:
主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的链接和缓存文件。缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。

如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它“非/lib或/usr/lib”目录下,那么在执行ldconfig命令前,就要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中.

  1. 如果上述方法都未成功 将kaldi根目录移回原来安装的位置,这样立即解决问题。

  2. 如都未解决可考虑重新编译Kaldi

现在再运行结果如下:
在这里插入图片描述
成功解决 beautiful !!!

本文含有隐藏内容,请 开通VIP 后查看