kaldi 源码阅读(一) - 环境搭建

简介: 按照我一贯的做法,来阅读开源代码:1. 编译以及基础功能的测试2. 模块功能划分3. 单一模块解析(添加注释或日志)4. 扩展新demo工程5. 自定义模块及调用文章也会按照上述流程进行开展。

按照我一贯的做法,来阅读开源代码:

1. 编译以及基础功能的测试
2. 模块功能划分
3. 单一模块解析(添加注释或日志)
4. 扩展新demo工程
5. 自定义模块及调用

文章也会按照上述流程进行开展。

进入正题...

一、环境构建

  • 安装必要工具
sudo apt-get install -y git wget libatlas-dev libatlas-base-dev gfortran g++ zlib1g-dev autoconf automake gcc libtool perl subversion
  • 同步代码
git clone https://github.com/kaldi-asr/kaldi.git kaldi
  • kaldi 依赖包

如下工具均在 kaldi/tools 内进行编译安装,详细内容参见 kaldi/tools/Makefile 中的编译文件

- OpenFst                状态机
- IRSTLM                 语言模型工具
- SRILM                    比 IRSTLM 好的语言模型工具
- sph2pipe                将 sph 文件转换为 其他格式比如 wav等。 LDC 数据相关的脚本需要该工具。
- sclite                       打分工具,也可以使用简单程序比如 compute-wer.cc 
- ATLAS                    线代库
- CLAPACK              线代库
- OpenBLAS             线代库

二、编译执行

cd kaldi/tools
# 检查当前系统是否已经安装完所依赖的工具,详细内容参见 kaldi/tools/INSTALL
./extras/check_dependencies.sh
# 安装完所有内容之后执行如下步骤
make; cd ../src; ./configure; make

按上述方式,先安装基础的工具,然后编译 kaldi 基础组件

三、测试

进入 egs/yesno/s5 目录中, 执行如下命令:

run.sh

运行后生产如下日志:

....
fstminimizeencoded 
fstrmsymbols exp/mono0a/graph_tgpr/disambig_tid.int 
fsttablecompose exp/mono0a/graph_tgpr/Ha.fst data/lang_test_tg/tmp/CLG_1_0.fst 
fstdeterminizestar --use-log=true 
fstisstochastic exp/mono0a/graph_tgpr/HCLGa.fst 
0.5342 -0.000482149
HCLGa is not stochastic
add-self-loops --self-loop-scale=0.1 --reorder=true exp/mono0a/final.mdl 
steps/decode.sh --nj 1 --cmd utils/run.pl exp/mono0a/graph_tgpr data/test_yesno exp/mono0a/decode_test_yesno
decode.sh: feature type is delta
steps/diagnostic/analyze_lats.sh --cmd utils/run.pl exp/mono0a/graph_tgpr exp/mono0a/decode_test_yesno
steps/diagnostic/analyze_lats.sh: see stats in exp/mono0a/decode_test_yesno/log/analyze_alignments.log
Overall, lattice depth (10,50,90-percentile)=(1,1,2) and mean=1.2
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 ins, 0 del, 0 sub ] exp/mono0a/decode_test_yesno/wer_10_0.0
目录
相关文章
|
3月前
|
开发工具 Android开发 开发者
Android开发环境搭建
如何搭建Android开发环境,包括下载和安装Android Studio、配置SDK、创建新的Android工程项目等。
123 0
Android开发环境搭建
|
4月前
|
搜索推荐 定位技术
撒旦快速入门实战
撒旦快速入门实战
|
3月前
|
监控 安全 Linux
撒旦快速入门实战2
撒旦快速入门实战2
|
移动开发 数据可视化 JavaScript
谈一谈|小白如何使用egret
谈一谈|小白如何使用egret
256 0
|
Go Android开发
AS常用插件-持续更新
AS常用插件-持续更新
176 0
|
Oracle 关系型数据库 MySQL
从零开始写项目第四篇【搭建Linux环境】(一)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
638 0
从零开始写项目第四篇【搭建Linux环境】(一)
|
负载均衡 应用服务中间件 Linux
从零开始写项目第四篇【搭建Linux环境】(三)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
478 0
从零开始写项目第四篇【搭建Linux环境】(三)
|
弹性计算 关系型数据库 MySQL
从零开始写项目第四篇【搭建Linux环境】(二)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
200 0
从零开始写项目第四篇【搭建Linux环境】(二)
手把手教学APK反编译实现源码阅读
我们编写源程序经过编译变成可执行文件,反编译就是其逆过程。 为什么要需要研究反编译? 在小公司开发中,偶尔就只有1-2个人独立面对一个项目。碰到问题后,可能你身边没有什么技术大牛,这时运用反编译,可以研究一个实现类似功能程序的源代码,吸取别人的编程思路和经验,提高自己的编程能力 。 这边特别声明,告诉你这个方法纯粹是为了学习编程技术,而不是教你盗版别人的软件。
258 0
手把手教学APK反编译实现源码阅读
|
开发工具 IDE
kaldi 源码分析(五) - 开发环境
习惯了使用 ide 开发,做 kaldi 开发使用 vim 虽然也可以,总觉得别扭,所以想找个 IDE 开发,这里使用的是 CLion 作为开发工具。 将项目以 [ Import Project from Source ] 的方式导入到 Clion 里面,然后配置好相关的 CMakeLists.
4215 0