详细解析Ubuntu22 部署Kaldi大模型

news2024/12/24 21:49:42

一、下载Kaldi模型

        下载地址:GitHub - kaldi-asr/kaldi: kaldi-asr/kaldi is the official location of the Kaldi project.

下载文件解释:

一般常用的是src、tools和egs包

src(源代码)包:  包含Kaldi的核心源代码,提供了实现语音识别所需的基础功能,例如声学建模、特征提取、解码器等。

tools(工具)包:  包含与Kaldi相关的工具和第三方依赖项。这些工具可以用于数据预处理、特征提取、模型训练等。例如,sph2pipe工具用于处理SPH音频格式,sox工具用于音频格式转换和处理

egs(示例)包:包含一些示例和教程,用于演示如何使用Kaldi构建语音识别系统。这些示例通常包括数据准备、特征提取、模型训练和解码等步骤,帮助用户理解和使用Kaldi。


cmake 目录:包含用于构建 Kaldi 的 CMake 脚本和相关文件。CMake 是一个跨平台的构建工具,用于自动化构建过程

scripts 目录:包含用于执行各种任务的脚本文件。这些脚本可以用于数据准备、特征提取、模型训练、解码等操作。

二、按照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

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.

1. 要检查Kaldi的依赖项,并安装

(1)检查依赖项
extras/check_dependencies.sh

        每次运行,会给出安装依赖的建议。安装完每一步依赖,再运行一遍,直到可以成功运行

        使用以下命令,安装所需要的依赖包:

        这个命令将会安装 g++makeautomakeautoconfgitsoxgfortranlibtool,

 subversion, 和 python2.7

sudo apt-get install g++ make automake autoconf git sox gfortran libtool subversion python2.7

        继续跳出安装建议:

sudo apt-get install zlib1g-dev

        安装intel-mkl-full

sudo apt-get install intel-mkl-full

        安装过程会跳出如下提示:

        使用Tab按键,选中确定后回车,下列步骤选择默认"否",继续安装

        此时,再运行extras/check_dependencies.sh应该会看到如下反馈,表示依赖安装完毕。

(2)兼容问题的处理方案(上面一步执行成功的请跳过)

        如果extras/check_dependencies.sh因为兼容问题不能正确执行,可以按照下列格式,指定你拥有的g++最新版本执行。这里的4.8可以更换为您系统当前的g++版本。

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

2. 编译

(1)在tools文件夹下执行下列命令:
make

安装完毕,显示如下:

 (2)兼容问题的处理方案(上面一步执行成功的请跳过)

        如果执行make时因为兼容问题不能正确执行,可以按照下列格式,指定你拥有的g++最新版本执行。这里的4.8可以更换为您系统当前的g++版本。

  make CXX=g++-4.8

3. CPU配置

        如果您有多个CPU并希望加快速度,可以通过向make提供"-j"选项来进行并行构建,例如使用4个CPU:

make -j 4

        执行完毕,显示如下:

 4. 安装模型

(1)按照提示,安装IRSTLM
extras/install_irstlm.sh
         执行完毕,显示如下:

(2)继续执行下列安装代码
extras/install_kaldi_lm.sh

 5. 设置环境变量

        按照上面安装后的提示:“Please source tools/env.sh in your path.sh to enable it” 设置环境变量。

        上一步操作后,当前目录为kaldi-master/tools,需要退回到kaldi-master目录下,使用cd命令退一层目录,执行环境变量配置命令, 将tools/env.sh脚本中的命令和设置加入到当前Shell的环境中。

cd ..
source tools/env.sh

 执行结果如下

(二)在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)".

上述文件:

        这些说明适用于类UNIX系统(这些步骤已在各种Linux发行版、Darwin和Cygwin上运行过)。对于原生Windows编译,请参见…/windows/INSTALL。

        您必须首先完成…/tools/INSTALL中的安装步骤(编译OpenFst;获取ATLAS和CLAPACK头文件)。

1.  执行./configure --shared

./configure --shared

2. 编译命令

(1)执行命令一:

第一次执行使用A.第一种执行方式,非第一次执行,使用B. 第二种执行方式

 A. 第一种执行方式:直接生成依赖关系,同时运行的作业数被固定为2。
make depend -j 2直接生成依赖关系,同时运行的作业数被固定为2。

        其中,数字 2 是调用cpu核心数,一半为当前硬件cpu核心数的一半以内为宜。如果不做设置,该命令不会限制并行作业的数量,甚至会压倒强大的工作站,因为Kaldi构建是高度并行化的。

        当前使用虚拟机是4核cpu,所以执行时选择了使用2颗核心。执行完毕显示如下:

B. 第二种执行方式:首先会执行清理操作,然后生成依赖关系,同时运行的作业数由系统CPU核心数决定。
make -j clean depend

        执行完毕后,显示如下:

(2)执行命令二:
make -j 2

再次强调:其中,数字 2 是调用cpu核心数,一半为当前硬件cpu核心数的一半以内为宜。如果不做设置,该命令不会限制并行作业的数量,甚至会压倒强大的工作站,因为Kaldi构建是高度并行化的。

编译完成显示如下:

 (三)测试

1. yesno语音识别

        参考网站:刘永浩记__Kaldi理解与部署cvte模型_kaldi cvte-CSDN博客

        进入egs/yesno/s5文件夹,执行run.sh,命令如下:

./run.sh  

        在执行该脚本的时候,会首先从kaldi官网上下载yesno例子的wav文件,然后再对其进行训练和识别

执行结束显示如下:

        在最后显示:%WER 0.00 [ 0 / 232, 0 ins ,0 del ,0 sub ],表示识别结果非常准确。

WER(Word Error Rate)代表的是字错误率,是衡量语音识别系统的准确程度的标准

计算公式:WER=(ins+del+sub)/N


其中:
ins:        被插入的单词的个数(多认的)
del:        被删除的单词的个数(少认的)
sub:       被替换的单词个数(认错的)
N:           总共的单词个数

        上述执行结果,表示,总共单词个数为232个,多认的(ins)、少认的(del)、认错的(sub)单词数加起来,去除以总共测试的单词数(N),WER反映了识别的准确率,该值越小越好。

2. 以aishell为例的语音识别过程

        参考网站:kaldi做语音识别_语音识别_Paprika_coin-GitCode 开源社区

cd egs/aishell/s5

        修改cmd.sh的配置,我是用的是geany,可以通过sudo apt install geany下载安装。

geany cmd.sh
(1)将cmd.sh修改为: 

export train_cmd="run.pl --mem 2G" #"queue.pl --mem 2G"
export decode_cmd="run.pl --mem 4G" #"queue.pl --mem 4G"
export mkgraph_cmd="run.pl --mem 8G" #"queue.pl --mem 8G

原文件的queue是基于集群的,这里我们用本机/服务器跑,因此改为run.sh。

(2)新建目录

        首先在根目录下建立路径:/export/a05/xna/data然后下载数据集。

        回到根目录命令:

cd /

         新建export文件夹,并进入该文件夹,由于在根目录下操作,需要使用sudo

sudo mkdir export
cd export

         新建a05文件夹,并进入

sudo mkdir a05
cd a05

         新建xna文件夹,并进入

sudo mkdir xna
cd xna

         新建data文件夹

sudo mkdir data
(3) 执行下载数据并训练

        之后输入下列命令开始执行,这里下载数据集要在run.sh前面加sudo命令,这是路径的缘故。下载数据集用到的脚本是local/download_and_untar.sh 需要下载两个数据文件:data_aishell 和 resource_aishell.

sudo ./run.sh

        就开始进行语音识别过程了。强烈建议逐行运行,运行当前行时,把其他暂时注释调,这样清楚看见每个阶段的过程。

过程简单阐述如下:

  • 语料数据准备 下载语料库到本地/服务器的文件夹
  • 数据关系,词典、语言文件(text, wav.scp, utt2pk, spk2utt)准备,训练集、测试集、验证集准备
  • 单音素(或者其他模型)训练和解码
  • 构建解码图
  • 解码查看结果

        由于我的虚拟机只能使用2个CPU核心,无法使用GPU,处理速度太慢。这里不展示最后结果。

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

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

相关文章

Flutter调用本地web

前言: 在目前Flutter 环境中,使用在线 webview 是一种很常见的行为 而在 app 环境中,离线使用则更有必要 1.环境准备 将依赖导入 2.引入前端代码 前端代码有两种情况 一种是使用打包工具 build 而来的前端代码 另一种情况是直接使用 HTML 文件 …

Quantlab整合Alpha158因子集,为机器学习大类资产配置策略做准备(代码+数据)

原创文章第565篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 我们的研报得现工作,用了两篇文章讲数据准备: 【研报复现】年化16.19%,人工智能多因子大类资产配置策略 【研报复现】年化27.1%,人…

vmware workstation下centos7屏幕切换及大小调整

虚拟机版本:vmware workstation15.5.2 操作系统版本:centos 7.9.2009 一 图形界面和命令行界面切换方法 在CentOS 7中,可以使用以下方法切换界面: 1 使用快捷键切换:按下Ctrl Alt F2(或F3&#xff0…

0.5 逐行扫描(Progressive scan)简介

0.5 逐行扫描简介 逐行扫描(Progressive scan)是一种将图像显示在扫描式的显示设备上的方法。 逐行扫描常被用在计算机显示器上。 逐行扫描按照从左到右,从上到下的顺序扫描图像的所有行。如下图: 下图粗略的将逐行扫描与隔行…

LORA、UNB无线网关物联网锁助力人才公寓智慧化管理

吸引和留住青年人才是城市持续发展的关键,解决青年人才住房问题又是其中重要一环。“人才跟着产业走、公寓跟着人才建”已成为全国各地新建及改造人才公寓的目标,“引才聚才”离不开人才公寓行业布局与发展。 人才公寓不同于普通的长短租公寓&#xff0c…

[HGAME 2022 week1]Matryoshka(古典密码混合)

题目: 直接说方法: 首先这是一段盲文,要先将盲文反转, 然后再用摩斯密码转换 将得到的字符串去掉“,”后,base16解码 在尝试维吉尼亚密码 再用base64解码 然后用凯撒密码 最后栅栏密码(22栏)

专家观点∣企企通采购供应链数字化总监于海生:如何利用数字化技术重构采购流程,推动企业降本增效?

摘要 数字化转型现已成为企业提升竞争力、实现降本增效的必由之路。企业应主动参与到数字经济的建设中,以数据资源为关键要素,以现代信息网络为主要载体,以信息通信技术的有效使用作为效率提升和经济结构优化的重要推动力的一系列经济活动&a…

基于STC12C5A60S2系列1T 8051单片机接收串口调试助手发送的固定长度字符串控制单片机的功能

基于STC12C5A60S2系列1T 8051单片机接收串口调试助手发送的固定长度字符串控制单片机的功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功能…

广州化工厂可燃气体报警器检定检验:安全生产新举措显成效

随着科技的不断发展,可燃气体报警器的检定检验技术也在不断进步。 广州的一些化工厂开始采用先进的智能检测系统和数据分析技术,对报警器的性能进行更加精准和全面的评估。 这些新技术不仅能够提高检定检验的效率和准确性,还能够为化工厂的…

第11章 测试代码

第11章 测试代码 11.1 测试函数11.1.1 单元测试和测试用例11.1.2 可通过的测试11.1.3 未通过的测试11.1.4 测试未通过时怎么办11.1.5 添加新测试 11.2 测试类11.2.1 各种断言方法11.2.2 一个要测试的类11.2.3 测试 AnonymousSurvey 类11.2.4 11.1 测试函数 11.1.1 单元测试和测…

Rancher注册已有k8s集群

Rancher安装后注册K8s集群操作 1.Rancher安装 编辑docker—compose文件 version: 3.8services:rancher:image: registry.cn-hangzhou.aliyuncs.com/rancher-images/rancher:v2.8.5container_name: rancherprivileged: truerestart: unless-stoppedports:- "18080:80&qu…

2004年上半年软件设计师【下午题】试题及答案

文章目录 2004年上半年软件设计师下午题--试题2004年上半年软件设计师下午题--答案2004年上半年软件设计师下午题–试题

Ant Design Vue中的Table和Tag的基础应用

目录 一、Table表格 1.1、显示表格 1.2、列内容过长省略展示 1.3、完整分页 1.4、表头列颜色设置 二、Tag标签 2.1、根据条件显示不同颜色 2.2、控制关闭事件 一、Table表格 效果展示&#xff1a; 官网&#xff1a;Ant Design Vue 1.1、显示表格 <a-tableref&quo…

Simufact Additive仿真助力金属粘结剂喷射成型(MBJ)工业化

引 言 烧结过程中“设计”补偿变形的能力被视为是实现金属粘结剂喷射成型&#xff08;MBJ&#xff09;快速商业化的关键。针对烧结过程的仿真分析&#xff0c;Simufact Additive软件现已推出了MBJ仿真模块第三个版本&#xff0c;当前版本能够准确模拟烧结过程&#xff0c;预测…

微信多开器

由于微信的限制&#xff0c;我们平时只能登录一个微信&#xff0c;要登录多个微信一般需要多台手机&#xff0c;很显然这种方法很费手机&#xff01;&#xff01;一个微信多开神器可以给你省下好几台手机钱&#xff0c;抓紧拉下来放手机里落灰http://www.xbydon.online/?p132 …

Windows清理C盘的4类方法【新手小白专用】

一、系统清理法 1.磁盘清理 【Win R】启动命令提示符&#xff0c;输入【cleanmgr】,选择打开C盘&#xff0c;勾选要清理的文件 一般大的文件是【临时文件和下载的程序文件】 2.存储清理&#xff08;1&#xff09; 打开【设置】-【系统】-【存储】-【配置存储感知或立即运行…

Vue elementui表格

去除表头 <el-table:data"tableData"stripestyle"width: 100%":cell-style"{ text-align: justify-all }":show-header"false"></el-table>合并 <template><div class"elife-container"><el-ro…

大模型LLM微调技术进展与热门方法汇总

大模型微调是机器学习中的一项重要技术&#xff0c;旨在帮助我们降低成本&#xff0c;进一步提高模型的性能。具体来说&#xff0c;大模型微调指的是在现有预训练模型的基础上&#xff0c;根据特定任务数据进行微调&#xff0c;以适应任务的特定需求&#xff0c;以便我们更好地…

偏微分方程算法之抛物型方程差分格式编程示例四(Richardson外推)

目录 一、研究问题 二、C++代码 三、结果分析 一、研究问题 已知其精确解为。分别取以下三种步长: ①

口罩佩戴智能监测摄像机

智能监测摄像机在现代城市安全管理中扮演着关键角色&#xff0c;尤其是像口罩佩戴智能监测摄像机这样的设备&#xff0c;其应用正在日益扩展&#xff0c;对于公共卫生和安全至关重要。 这类摄像机利用先进的图像识别技术&#xff0c;能够实时监测人群中是否佩戴口罩。通过高精度…