语音识别(ASR)– Kaldi 学习笔记

语音识别(ASR)– Kaldi学习笔记

语音识别简介

语音识别(Speech Recognition)技术,也被称为自动语音识别(Automatic Speech Recognition, ASR)、计算机语音识别(Computer Speech Recognition)或是语音转文本识别(Speech To Text),其目标是用计算机自动将人类的语音内容转换为相应的文字。
语音识别,大体上可分为”传统”识别方式与”端到端”识别方式,其主要差异体现在声学模型上。”传统”方式的声学模型一般采用隐马尔可夫模型(HMM),而”端到端”方式一般采用深度神经网络(DNN)。

  • 声学模型:是将声学和发音学的知识进行整合,以特征提取部分生成的特征作为输入,并为可变长特征序列生成声学模型分数。
  • 语音模型:通过从训练语料(通常是文本形式)学习词之间的相互关系,来估计假设词序列的可能性,又叫语言模型分数。
  • GMM:Gaussian Mixture Model,高斯混合模型,描述基于傅里叶频谱语音特征的统计模型,用于传统声学模型的建模中。
  • HMM:Hidden Markov Model,隐马尔可夫模型,是一种用来描述含有未知参数的马尔可夫过程,其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。
  • MFCC:Mel-Frequency Cepstral Coefficients,梅尔频录倒谱系数,是组成梅尔频率倒谱的系数。衍生自音讯片段的倒频谱(cepstrum)。倒谱与梅尔倒谱的区别在于,梅尔频率倒谱的频带划分是在梅尔刻度上等距划分的,它比用于正常的对数倒频谱中的线性间隔的频带更接近人类的听觉系统。广泛应用于语音识别中。
  • Fbank:Mel Frequency Filter Bank,梅尔频率滤波器组。
  • WER:Word Error Rate,词错误率,是最常见的衡量语音识别系统性能的指标。

GMM-HMM基本原理

语音识别(ASR)-- Kaldi 学习笔记
  • 特征提取:语音识别的第一步就是特征提取,去掉语音信号中对于语音识别无用的冗余信息(如背景噪音),保留能够反映语音本质特征的信息(为后面的声学模型提取合适的特征向量),并用一定的形式表示出来;较常用的特征提取算法又MFCC。
  • 声学模型训练:根据语音库的特征参数训练出声学模型参数,在识别的时候可以将待识别的语音特征参数同声学模型进行匹配,从而得到识别结果。目前主流的语音识别系统多采用HMM进行声学模型建模。
  • 语言模型训练:就是用来计算一个句子出现的概率模型,主要用于决定哪个词序列的可能性更大。语言模型分为三个层次:字典知识、语法知识、句法知识。对训练文本库进行语法、语义分析,经过基于统计模型训练得到语言模型。
  • 语音解码与搜索算法:其中解码器就是针对输入的语音信号,根据已经训练好的声学模型、语言模型以及字典 建立一个识别网络,再根据搜索算法在该网络中寻找一条最佳路径,使得能够以最大概率输出该语音信号的词串,这样就确定这个语音样本的文字。

; DNN-HMM(基于神经网络)

把之前的GMM换成DNN,深度学习模型可以更好的模拟语音信号。

语音识别(ASR)-- Kaldi 学习笔记

Kaldi

Kaldi架构简介

Kaldi语音识别工具将HTK比较零碎的各种各样的指令和功能进行整理集合,使用perl脚本调用。同时也加入了深度神经网络的分类器(DNN),本身由原来做HTK开发的人员制作而成,可以说是HTK的升级加强版。
kaldi官方网站请见:http://kaldi.sourceforge.net/index.html

语音识别(ASR)-- Kaldi 学习笔记

; Kaldi在Windows下的安装

工具准备

  • Git
  • CMake
  • Visual Studio 2017

vs2017安装时要注意安装Win8.1 SDK,如果已经安装了vs2017,也可以在上方的菜单栏中的工具–获取工具和功能来查看是否安装。

语音识别(ASR)-- Kaldi 学习笔记

; 编译OpenFST

首先从 github 上将 openfst clone 下来。然后这里用 cmake 的方式来先编译出 vs 的工程文件,具体操作方法如下:

$ git clone https://github.com/kkm000/openfst.git
$ cd openfst
$ mkdir build64
$ cd build64
$ cmake -G "Visual Studio 15 2017 Win64" ../

如果此步骤成功,则会显示以下提示:

[En]

If this step is successful, the following prompt is displayed:

**-- The C compiler identification is MSVC 19.11.25547.0
-- The CXX compiler identification is MSVC 19.11.25547.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The following ICU libraries were not found:
--   data (required)
--   i18n (required)
--   io (required)
--   test (required)
--   tu (required)
--   uc (required)
-- Failed to find all ICU components (missing: ICU_INCLUDE_DIR ICU_LIBRARY _ICU_REQUIRED_LIBS_FOUND)
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/jtrmal/Documents/openfst/build64**

成功后会在 build64 目录下面生成一个 openfst.sln 文件,用 vs2017 打开这个文件,分别用 Debug|x64 和 Release|x64 来生成一遍,如果失败为 0 则代表编译通过。

配置PortAudio

  1. http://www.portaudio.com/download.html下载PortAudio并解压缩文件夹
  2. 打开实例或Powershell或命令提示符,导航到portaudio目录并键入:$ cmake -G” Visual Studio 15 2017 Win64″
  3. CMake将在目录中生成一个portaudio.sln。 打开它
  4. 右键单击portaudio_static->属性-> C / C +±>代码生成->运行时库,从多线程调试(/ MTd)更改为多线程调试DLL(/ MDd)

配置Kaldi

  1. 从 github 上先将 kaldi clone 下来
$ git clone https://github.com/kaldi-asr/kaldi.git kaldi
  1. 配置线性代数库OpenBLAS,用下面的命令来下载 OpenBLAS 的二进制包(在 kaldi/tools 目录下):
 (kaldi)/tools$ curl -L -O http://sourceforge.net/projects/openblas/files/v0.2.14/OpenBLAS-v0.2.14-Win64-int32.zip
 (kaldi)/tools$ curl -L -O http://sourceforge.net/projects/openblas/files/v0.2.14/mingw64_dll.zip
 (kaldi)/tools$ unzip OpenBLAS-v0.2.14-Win64-int32.zip
 (kaldi)/tools$ unzip mingw64_dll.zip

注意这里要下载 Win64-int32 版本,而不是 Win64-int64 版本

  1. 进入 kaldi/windows 路径想,将 varialbes.props.dev 复制一份重命名为 variables.props,打开 variables.props库修改为自己的路径。
  2. 同样还是在 kaldi/windows 路径下,因为我们是使用 OpenBLAS 所以就把 kaldiwin_openblas.props 复制一份重命名为 kaldiwin.props。
  3. 在 windows 路径下用 git bash 运行以下命令:
./generate_solution.pl --vsver vs2017 --enable-openblas
./get_version.pl
  1. 打开 kaldi/kaldiwin_vs2017_OPENBLAS 这个新生成的文件夹,打开里面的 kaldiwin_vs2017.sln 工程文件,这里面就包括了所有 kaldi/src 中 * bin 中的. cc 文件。这时候需要来测试一下 kaldi 能否运行,首先要把 Debug|Win32 改为 Debug|x64,然后点击生成。如果生成成功则代表之前的工作都做对啦,kaldi 已经配置好了,文件会生成在 kaldiwin_vs2017_OPENBLAS/x64/Debug 中。

Kaldi目录说明

一级目录内容egsKaldi的实例,包含了语音识别,语种识别,声纹识别,关键字识别等misc包含了一些pdf,以及相关docker, htk等资源scripts只用来存放Rnnlm,以及相应的运行脚本src存放Kaldi的源代码,包含GMM, Ivextor, Nnet等一系列的传统语音识别算法tools主要存放Kaldi依赖库的安装脚本,线性代数库、OpenFST等Windows在Windows平台运行所必须的脚本以及相关的执行程序

Original: https://blog.csdn.net/qq_43318971/article/details/111238736
Author: Diyh
Title: 语音识别(ASR)– Kaldi 学习笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/525141/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 从DDPM到DDIM:深入解读《Denoising Diffusion Implicit Models》

    Diffusion Models专栏文章汇总:入门与实战 _前言:_DDIM发表在ICRL2021上,是DDPM重要的改进之一,能显著提高DDPM的样本质量、减少采样时间,并且已经…

    人工智能 2023年7月26日
    0137
  • 安装tensflow2 CPU版经历

    此文为个人安装过程,仅供参考 当前配置:● Win10 家庭中文版● Python版本:3.10 由于Tensflow和Anaconda3都只支持到Python3.9,所以只能降级…

    人工智能 2023年7月10日
    069
  • 基于PaddleOCR的体检报告识别

    👨‍💻 作者简介:大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享, 公众号:GoAI的学习小屋,免费分享书籍、简历、导图等资料,更有…

    人工智能 2023年5月27日
    077
  • 图像基本处理(灰度化)

    项目场景: 今天我们开始最基础的图像处理,将一张图片进行灰度化处理。我们将使用OpenCV来进行图像的处理 基础知识 图片主要包含以下内容:1.像素,也就是我们通常说的RGB模型,…

    人工智能 2023年5月26日
    084
  • Pytorch 搭建自己的Unet语义分割平台

    文章目录 * – 前言 – Unet实现思路 – + 一、预测部分 + * 1、主干网络介绍 * 2、加强特征提取结构 * 3、利用特征获得预测…

    人工智能 2023年7月23日
    068
  • 备赛笔记:神经网络

    机器学习:寻找一组最优函数映射 监督学习(supervised learning):模型输入和输出已知,要选择合适的模型模拟输入和输出的函数关系 机器学习的步骤:1 选择合适网络结…

    人工智能 2023年6月10日
    070
  • OpenVINO 的安装及配置

    目录 1.安装外部软件依赖 2.安装OpenVINO工具套件 3.临时环境变量的配置 4.安装MovidiusDriver与验证 6.配置环境变量 7.编译inference en…

    人工智能 2023年6月25日
    0158
  • 聚类–DBSCAN算法

    模型:sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric=’euclidean’, metric_p…

    人工智能 2023年5月31日
    0115
  • 【深度学习】初识ndarray

    文章目录 前言 1. 矩阵操作 * 1.1 ndarray 1.2 创建行向量 1.3 改变张量的形状 1.4 获取张量中的元素个数 2. 创建矩阵 * 2.1 创建一个全是0的矩…

    人工智能 2023年5月23日
    080
  • 深度学习环境搭建:Pytorch与CUDA的安装

    回答1: Ubuntu 18.04 需要以下步骤: 1. 和cuDNN: 是NVIDIA提供的用于GPU加速的并行计算平台,cuDNN是NVIDIA提供的用于 的GPU加速库。可以…

    人工智能 2023年6月16日
    083
  • yolo-V4-预测框解码部分

    这部分主要关于对网络输出的三个不同大小的特征层(13,13)、(26,26)、(52,52)的预测框利用先验框anchors进行解码的过程(也就是利用先验框来对模型输出的预测框进行…

    人工智能 2023年7月12日
    045
  • 知识图谱(二)——知识表示

    一、经典知识表示理论 1. 语义网络 语义网络:是一个通过语义关系连接的概念网络,将知识表示为相互连接的点和边的模式。节点——实体、事件、值;边——对象间的语义关系。 语义网络中最…

    人工智能 2023年6月1日
    083
  • python逻辑量是什么意思_python中逻辑回归算法是什么?

    在处理一个稍微复杂的问题时,我们可以简单的把它进行拆分,针对不同的小问题进行处理。在python中逻辑回归算法,用到的就是这种思想,不过在具体的操作上有一些复杂。下面我们就pyth…

    人工智能 2023年6月18日
    0125
  • Python计算机视觉——Harris角点检测

    Python计算机视觉——Harris角点检测 文章目录 Python计算机视觉——Harris角点检测 * 写在前面 1 Harris角点检测基本思想 2 Harris角点检测公…

    人工智能 2023年6月16日
    066
  • Normalization)是什么?有什么作用

    之前我们已经介绍了前处理中的特征缩放方法,包括标准化和归一化。现在我们将重点介绍归一化方法的一种形式,即Normalization(规范化),它是机器学习中一种常用的数据处理手段。…

    人工智能 2024年1月1日
    045
  • 深度强化学习-强化学习基础-SARSA算法(四)

    本片主要介绍SARSA算法,蒙特卡洛算法,以及自举的概念。内容比较细,比较基础,大家可以认真看。有不懂的地方可以先看之前的文章。 目录 SARSA: SARSA算法和Q学习的对比:…

    人工智能 2023年5月26日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球