Linux/macOS 安装 Kaldi

news2025/1/13 13:40:46

在这里插入图片描述


文章目录

    • 一、关于 kaldi
    • 二、安装
      • 1、下载源码
      • 2、查看 INSTALL 文件
        • root -- INSTALL
        • tools -- INSTALL
        • src -- INSTALL
      • 3、处理tools
      • 4、处理 src
    • 三、测试
      • 报错1:Bad FST header
      • 报错1:gmm-init-mono: command not found


一、关于 kaldi

Kaldi is a toolkit for speech recognition, intended for use by speech recognition researchers and professionals.

  • 官网 : https://www.kaldi-asr.org
  • Github : https://github.com/kaldi-asr/kaldi
  • 已有的模型:https://www.kaldi-asr.org/models.html
  • 官方文档:https://www.kaldi-asr.org/doc/

参考

  • ubuntu 18.04 安装Kaldi教程(总结安装过程中碰到的坑)
    https://zhuanlan.zhihu.com/p/148524930
  • AssemblyAI / kaldi-install-tutorial
    https://github.com/AssemblyAI/kaldi-install-tutorial/blob/main/setup.sh

二、安装

1、下载源码

你可以从 https://github.com/kaldi-asr/kaldi 直接下载;


也有用户反馈是用这个版本更好:

git clone https://github.com/kaldi-asr/kaldi.git kaldi-trunk --origin golden

网络不好可以在这里下载:https://download.csdn.net/download/lovechris00/87301550


2、查看 INSTALL 文件

root – INSTALL

根目录下的 INSTALL 内容为:

This is the official Kaldi INSTALL. Look also at INSTALL.md for the git mirror installation.
[Option 1 in the following does not apply to native Windows install, see windows/INSTALL or following Option 2]

Option 1 (bash + makefile):
  Steps:
    (1) go to tools/  and follow INSTALL instructions there.
    (2) go to src/ and follow INSTALL instructions there.

Option 2 (cmake):
    Go to cmake/ and follow INSTALL.md instructions there.
    Note, it may not be well tested and some features are missing currently.

tools – INSTALL

tools 下的 INSTALL 文件内容为:

To check the prerequisites for Kaldi, first run

  extras/check_dependencies.sh

and see if there are any system-level installations you need to do. Check the output carefully. There are some things that will make your life a lot easier if you fix them at this stage. If your system default C++ compiler is not supported, you can do the check with another compiler by setting the CXX environment variable, e.g.

  CXX=g++-4.8 extras/check_dependencies.sh

Then run

  make

which by default will install ATLAS headers, OpenFst, SCTK and sph2pipe.
OpenFst requires a relatively recent C++ compiler with C++11 support, e.g.g++ >= 4.7, Apple clang >= 5.0 or LLVM clang >= 3.3.
If your system default compiler does not have adequate support for C++11, you can specify a C++11
compliant compiler as a command argument, e.g.

  make CXX=g++-4.8

If you have multiple CPUs and want to speed things up, you can do a parallel build by supplying the -j option to make, e.g. to use 4 CPUs

  make -j 4

In extras/, there are also various scripts to install extra bits and pieces that are used by individual example scripts. If an example script needs you to run one of those scripts, it will tell you what to do.


src – INSTALL

src 下的 INSTALL 文件内容为:

These instructions are valid for UNIX-like systems (these steps have been run on various Linux distributions; Darwin; Cygwin).
For native Windows compilation, see ../windows/INSTALL .
You must first have completed the installation steps in ../tools/INSTALL (compiling OpenFst; getting ATLAS and CLAPACK headers).
The installation instructions are

  ./configure --shared
  make depend -j 8
  make -j 8

Note that we added the -j 8 to run in parallel because “make” takes a long time. 8 jobs might be too many for a laptop or small desktop machine with not many cores.
For more information, see documentation at http://kaldi-asr.org/doc/ and click on “The build process (how Kaldi is compiled)”.


3、处理tools

从根目录进入 tools 文件夹

cd tools

# 检查
./extras/check_dependencies.sh

如果缺少什么包,这个脚本会提示你安装;
macOS 下使用 brew install xxx 来安装


编译

make -j 4

运行这个脚本,会下载第三方软件包,并自动解压;
如果后续软件安装失败(没有安装、包大小有问题),可以再次执行 make 命令;
没有自动解压的就手动解压一下。


make 第三方包

make openfst
make cub
make sclite
make sph2pip2

后面过程中如果出现报错:you may not have installed OpenFst 一般都是因为这里没有编译好 OpenFst。
参考文章:https://blog.csdn.net/weixin_42103947/article/details/119842650


sudo ./extras/install_irstlm.sh

sudo ./extras/install_kaldi_lm.sh

sudo ./extras/install_openblas.sh

4、处理 src

src 是和 tools 平行的 src 文件夹
从 tools 切换到 src

cd ../rsc

./configure --shared
 make depend -j 8
 make -j 8

三、测试

在kaldi目录下

cd egs/yesno/s5
./run.sh

如果得到类似下方结果,代表基本运行成功(kaldi安装成功)

steps/diagnostic/analyze_lats.sh: see stats in exp/mono0a/decode_test_yesno/log/analyze_lattice_depth_stats.log
local/score.sh --cmd utils/run.pl data/test_yesno exp/mono0a/graph_tgpr exp/mono0a/decode_test_yesno
local/score.sh: scoring with word insertion penalty=0.0,0.5,1.0
%WER 0.00 [ 0 / 232, 0 in , 0 del, 0  ub ] exp/mono0a/decode_te t_ye no/wer_10_0.0

报错1:Bad FST header

如果你出现下述报错:

ERROR: FstHeader::Read: Bad FST header: standard input

需要将 openfst bin 目录添加到环境变量;
你也可以添加到 egs/yesno/s5/path.sh

export FST_PATH='/Users/xx/kaldi-trunk/tools/openfst-1.7.2/bin'

然后执行

source path.sh 
./run.sh 

报错1:gmm-init-mono: command not found

run.pl: job failed, log is in exp/mono0a/log/init.log

# gmm-init-mono --shared-phones=data/lang/phones/sets.int "--train-feats=ark,s,cs:apply-cmvn  --utt2spk=ark:data/train_yesno/split1/1/utt2spk scp:data/train_yesno/split1/1/cmvn.scp scp:data/train_yesno/split1/1/feats.scp ark:- | add-deltas  ark:- ark:- | subset-feats --n=10 ark:- ark:-|" data/lang/topo 39 exp/mono0a/0.mdl exp/mono0a/tree 
# Started at Fri Dec 16 20:27:09 CST 2022
#
bash: line 1: gmm-init-mono: command not found
# Accounting: time=0 threads=1
# Ended (code 127) at Fri Dec 16 20:27:09 CST 2022, elapsed time 0 seconds

根据猜测,gmm-init-mono 是个命令工具,但终端找不到他的地址;
经过搜索 kaldi 文件夹,可以发现它位于 src/gmmbin/gmm-init-mono 目录下,那么将这个目录添加到环境变量;
macOS 下是 ~/.bash_profile, linux 下是 ~/.bashrc

export GMMBIN_PATH='/Users/XX/XX/XX/kaldi-trunk/src/gmmbin'

然后继续执行

source ~/.bash_profile
./run.sh 

伊织 2022-12-16(五)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenMAX——数据格式OMX输入缓冲

开放多媒体加速层(英语:Open Media Acceleration,缩写为OpenMAX),一个不需要授权、跨平台的软件抽象层,以C语言实现的软件接口,用来处理多媒体。它是由Khronos Group提出的标准,也由…

[整型/浮点型二分算法详解]二分查找算法真的很简单吗

🏖️作者:malloc不出对象 ⛺专栏:《初识C语言》 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录前言一、二分查找是什么二、二分查找…

html大作业【NBA篮球介绍 22个页面】学生网页设计源码

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

python教你如何跳过验证识别登录并自动发送弹幕

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 开发环境: Python 3.8 Pycharm 2021.2 谷歌浏览器 谷歌驱动 模块使用: selenium >>> pip install selenium3.141.0 指定版本安装 time 打码平台 安装python第三方模块: win R 输…

程序猿的福音——猿如意使用有感

猿如意介绍: 猿如意是一款面向开发者的辅助开发工具箱,包含了效率工具、开发工具下载,教程文档,代码片段搜索,全网博文搜索等功能模块。帮助开发者提升开发效率,帮你从“问题”找到“答案”。 猿如意的下…

KEIL5软件仿真支持的器件

问题的提出 用KEIL进行软件仿真,想观察一下处理器STM32F091RCY的I2C和DAC引脚输出的波形,发现无法向波形中添加信号,如下图所示 当在命令行中输入 dir vtreg 指令时,仅仅能够显示内核的寄存器,外设的寄存器无法输出&a…

【DevOps实战系列】第九章:详解Sonarqube搭建及集成Jenkins环境

个人亲自录制全套DevOps系列实战教程 :手把手教你玩转DevOps全栈技术 质量安全审计:Sonarqube Sonarqube(声呐)大家应该不陌生,通过扫描代码分析代码质量与代码安全,方便我们快速定位代码缺陷、潜在风险。 个人建议:…

希尔贝壳邀您参加 ISCSLP 2022 Program

第十三届中文口语语言处理国际会议将于2022年12月11-14日(本周日~下周三)正式开启,本次会议中的部分Session将通过语音之家视频号进行线上直播,欢迎大家参加! 官网:www.iscslp2022.org 大会简介 中文口语…

别再秃头背锅了,这个小技巧统计第三方接口耗时很安逸

前言 之前我有写过一篇记录生产环境事故的文章,获得了不少好评。 后续,我们团队有做过一些讨论,为了支撑运营维护,搭建了更好的日志平台 GranfaLoki,也引入了 SkyWalking 做链路追踪。 但过程中也遇到了一些问题&#…

30多个Flatsome主题优秀电商网站案例

想知道您可以使用 WordPress Flatsome WooCommerce主题(最畅销的电子商务主题之一)制作什么样的网站吗? 我们已经浏览了使用这个非常受欢迎的电商主题尽可能多的案例(近1000个),并汇总了30个Flatsome主题优…

windows安装es、kibana教程

目录 前言 第一个部分:安装ES的包 1.安装成功的截图 2.下载es的安装包 3.检查本地的jdk的安装是否存在问题 4.修改config文件夹下面的配置 第二部分:windows 安装Kibana可视化工具 1.下载安装包 2.安装过程中遇到的问题 3.安装6.0.0的版本是可以…

【Android】BlueTooth开发记录

Ble开发中,存在着两个角色:中心设备角色和外围设备角色。 外围设备:一般指非常小或者低功耗设备,更强大的中心设备可以连接外围设备为中心设备提供数据。外设会不停的向外广播,让中心设备知道它的存在。 例如小米手环。中心设备:可…

学习周报-20221216

文章目录一 centos6和centos7系统的服务启动与关闭二 Linux下的/etc/pam.d/system-auth配置文件参数各列参数说明1)第一列2)第二列3)第三列和第四列常用类说明三 Linux用户密码过期策略一 相关文件二 修改密码三 设置密码过期策略四 Linux中使…

将渲染计算搬到云端,开启低成本、强交互、沉浸式体验

云渲染可以解放本地计算需求,这意味着生产力的大幅提升。 云渲染的基本原理是将3D渲染应用部署到云端,接收本地的控制指令发送到云端,云端启动游戏引擎并进行画面渲染,编码成视频流传输到本地。 不难看出,云渲染技术的…

3节点Fate集群实战记录(全网最详细)--横向联邦学习

集群配置 集群的三台服务器分别部署了fate-10000, fate-9999, fate-9998命名空间,集群的具体部署情况请转:link查看。 文章后面以命名空间名来区分操作所在的节点(注意节点的实际名字不等于命名空间名)。集群的配置信息如下&…

【嵌入式开源库:cJSON】 一个轻量级C语言JSON数据解析库用法详解

cJSON简介 cJSON是使用C语言编写,用来创建、解析JSON文件的库。cJSON特点就是工程文件简单,只有一个.c和一个.h,但提供函数接口功能齐全,麻雀虽小五脏俱全,使得在嵌入式工程中使用起来得心应手。 cJSON获取 https:/…

小程序本地 存储/获取值以及删除本地的值

场景:小程序本地存储的方法 wx.setStorageSync:直接给定key和value值 wx.setStorage:需指定key及value,然后再指定相应的值 小程序获取本地值的方法 wx.getStorageSync:直接指定key值获取到对应的数据 wx.getStorage&a…

Node.js模块系统的实现机制简析

目录nodejs模块系统简介C版native模块的定义和加载加载过程JavaScript接口层万能的binding机制JavaScript版native模块的定义和加载js2c技术NativeModule的工作原理Node启动时构造NativeModule对象,完成name到source的映射懒加载机制总结nodejs模块系统简介 Node.j…

[附源码]Nodejs计算机毕业设计基于的校园商城Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

Linux系统编程2——进程介绍

文章目录前言一、程序和进程二、并行和并发三、进程控制块PCB进程状态四、创建进程相关函数1、fork函数fork函数总结2、getpid/getppid3、exec函数族3.1、execl函数3.2、execlp函数3.3、exec函数族原理介绍五、进程回收1、为什么要进行进程资源回收2、孤儿进程3、僵尸进程4、进…