李理的博客

XLNet原理

本文介绍XLNet的基本原理,读者阅读前需要了解BERT等相关模型,不熟悉的读者建议学习BERT课程


XLNet代码分析

本文介绍XLNet的代码,读者阅读前需要了解XLNet的原理,不熟悉的读者请先阅读XLNet原理


Kaldi代码分析

本系列文章分析Kaldi的源代码(6/22更新MFCC特征提取)。


常见Linux工具用法

记录一下常见工具的用法。目前包括:命令行设置各种代理服务器的方法;ssh的各种用法;git上传大文件的方法。


Linux sort命令简介

用sort对文件排序,发现这个命令比想象中要复杂和强大,仔细研究了一下文档,记录一下。


微软Edx语音识别课程

本系列文章是作者学习微软在Edx上的语音识别课程DEV287x的笔记。

(6/6增加模块三:声学模型;6/15增加模块四:语言模型;7/15增加模块五:解码器)

这是一个非常好的课程,尤其是实验的设计,通过实际的代码让我们一步步完成特征提取;神经网络声学模型训练;语言模型训练和基于WFST的解码器实现。

我在《深度学习理论与实战:提高篇》里虽然介绍了语音识别的基础理论,也试图提供实战的例子,比如HMM和WFST代码示例Kaldi简介DeepSpeech理论与实战等内容。但是这些例子都是孤零零没有联系的,读者很难了解全貌,那本书中缺乏一个完整的从头到尾的基于WFST的HMM-DNN的例子。虽然End-to-end的语音识别系统在是学术界研究的重点,但是目前业界流行的还是HMM-DNN的基于WFST解码器的系统。在那本书里没有介绍WFST尤其是解码器的代码,只是简单的介绍了流行的Kaldi系统的用法,但是Kaldi的代码过于复杂,不适合初学者了解WFST的基本原理。

最近找到了这个课程,花时间学习了一遍,觉得这个课程的例子非常好,因此借这个课程把之前那本书的缺陷弥补一下。另外这个课程的理论讲到太少了,比如WFST的解码器,只是提供了代码,而没有任何介绍,这让学习者很难看懂其中的代码,因此我也对其中不够详细的地方做一些补充。


Kaldi文档解读

本系列文章主要是翻译Kaldi的官方文档,但是也不完全是翻译。有些内容比如如何安装作者会略过,而其它重要的内容作者会根据自己的理解增加更加详细的说明。(6/6增加术语表;6/12增加数据准备;6/15增加Kaldi的编译过程;6/22增加Kaldi的矩阵库Kaldi的特征提取;7/18增加外部矩阵库;7/19增加CUDA矩阵库;7/26增加Kaldi的I/O机制;8/1增加Kaldi的I/O机制的命令行用法;8/9增加Kaldi的logging和错误报告Parsing命令行选项其它工具;8/15增加Kaldi的聚类机制)


日历相关的算法

这是2011年写的一篇文章,主要介绍日历相关的概念。这些基本概念今天依然是有用的,因此把它整理到我的博客上。历法其实是很有意思的学问,通过本文可以更清楚了了解中国的农历。八年过去了,对于Java语言来说date time相关的API发生了很大的变化,首先是Joda-Time在Java8之前成为事实的标准,Java8通过JSR 310引入了新的API。另外之前计算农历的icu目前看已经有问题了,因此本文介绍新的time4j库用来计算农历。


mxGraph教程

作为伪全栈工程师,在缺人的时候当然要冲出来。本文调研mxGraph的基本用法,用于绘制流程图。