语音识别概述

引言

语音识别定义

语音识别,亦称自动语音识别(Automatic Speech Recognition,ASR)或语音文本转换(Speech to Text, STT),
是一种将语音转为文本的技术。当前的语音识别一般均特指大词汇量连续语音识别。

语音识别应用

语音识别有着广泛的应用,按照使用场景的不同,可以分为以下几类:

  • 语音输入:语音输入法、语音搜索等。
  • 语音助手:手机、音箱、穿戴设备上的语音助手,例如Siri、Cortana、Alexa等。
  • 智能座舱:车载控制、娱乐等车载语音交互,例如NOMI。
  • 智能家居:家居控制、娱乐等家居语音交互,例如小爱同学等。
  • 电话客服:智能外呼、IVR、客服质检等。
  • 商务办公:线上线下会议直播的字幕上屏展示。
  • 语音审核:这类应用面向在线直播、电台等,检测是否存在违规违法内容。

语音识别类别

根据应用场景对实时性的要求高低,可以分为:

  • 实时语音识别:要求系统低延迟,在两百毫秒以内;一般以语音流的方式实时地识别。典型的例子包括语音助手等语音交互、字幕实时上屏。
  • 非实时语音识别:不要求实时返回结果;一般是一句话识别或文件语音识别。会议纪要转写等录音的语音识别属于这类。

根据系统实现架构,可以分为

  • 经典语音识别:系统由声学模型、语言模型、发音词典、解码器几个部分组成。系统模块较多,搭建较为复杂;各个模块‘分工明确’ 模型结构相对简单,不依赖大量训练数据,在小数据集上有一定优势。
  • 端到端语音识别:系统由一个模型实现从语音到文本的直接转换。深度学习引入语音识别之后,端到端的方式逐步成为研究热点。单个模型没有级联累积错误,而且系统搭建相对简单;但由于模型规模较大,需要更多的数据和训练成本。

Read More

Deep Learning Book

无监督学习算法

监督学习算法

随机梯度下降

随机梯度下降的核心是期望。所以可以用小规模的样本去估计梯度,这样就可以用minibatch的方式去计算梯度、更新模型。

构建机器学习算法

深度学习算法的配方:

  • 特定的数据集:
  • 代价函数:代价函数至少含有一项使学习过程进行统计估计的成分。代价函数也可能还有附加项,如正则化。
  • 优化过程:非线性模型要求选择一个迭代数据优化过程,如梯度下降。
  • 模型

促使深度学习发展

  • 维度灾难 参考
  • 局部不变性和平滑正则化
  • 流形学习

深度前馈网络

前馈网络克服了线形网络的局限,是一种高效的非线性函数近似。
现代前馈网络的思想仍然使用反向传播算法和梯度下降方法。主要的性能提升来自于

  1. 训练数据量的提升:减少了统计泛化对神经网络的挑战;
  2. 更大的网络结构:更强的算力和更好的深度学习框架基础使得神经网络能够变得更大;
  3. 少量算法的优化:包括交叉熵取代均方误差作为损失函数,使用RELU等分段线性函数作为激活函数。

Read More

pip清华源

永久更新为清华源

方法一

编辑 vim ~/.pip/pip.conf ,修改为:

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

方法二

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

临时更新为清华源

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

PIP更新方式

更新清华源往往需要使用最新的pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

ESPNET 安装指引

准备Python环境

  1. 建议安装anaconda3: anaconda3
  2. 创建ESPNET的环境: conda create -n espnet python=3.6

Install ESPNET相关依赖

  1. 下载espnet源代码 espnet github
  2. pip install torch==1.0.1 # Installation from anaconda is recommended for PyTorch
  3. pip install chainer==6.0.0
  4. pip install cupy==6.0.0 # Do not install cupy as default
  5. pip install setuptools>=38.5.1
  6. pip install scipy>=1.3.0
  7. pip install librosa>=0.7.0
  8. pip install soundfile>=0.10.2
  9. pip install inflect>=1.0.0
  10. pip install unidecode>=1.0.22
  11. pip install editdistance==0.5.2
  12. pip install h5py==2.9.0
  13. pip install tensorboardX==1.8
  14. pip install pillow>=6.1.0
  15. pip install nara_wpe>=0.0.5
  16. pip install museval>=0.2.1
  17. pip install pystoi>=0.2.2
  18. pip install kaldiio>=2.13.8
  19. pip install matplotlib>=3.1.0
  20. pip install funcsigs>=1.0.2 # A backport of inspect.signature for python2
  21. pip install configargparse>=0.14.0
  22. pip install PyYAML>=5.1.2
  23. pip install sentencepiece>=0.1.82
  24. pip install pysptk>=0.1.17
  25. pip install nltk>=3.4.5
  26. pip install nnmnkwii
  27. pip install jaconv
  28. pip install g2p_en
  29. pip install torch_complex@git+https://github.com/kamo-naoyuki/pytorch_complex.git
  30. pip install pytorch_wpe@git+https://github.com/nttcslab-sp/dnn_wpe.git
  31. pip install warpctc-pytorch10-cuda90==0.1.3 (GitHub源码不易安装,pip安装较为简单)

Install 其他依赖

  1. kaldi相关的依赖: sudo yum install atlas
  2. sudo yum install bc
  3. sudo yum install tree
  4. sudo yum install libsndfile
  5. sudo yum install flac (librispeech 语音转格式,需要安装flac)

install cuda

  1. 目前已支持cuda10,安装 sh /path/to/cuda10/cuda_10.0.130_410.48_linux.run
  2. export LD_LIBRARY_PATH=/path/to/cuda/lib64:$LD_LIBRARY_PATH

Install ESPNET

  1. conda activate espnet (或者recipe里面的 path.sh)
  2. pip install -e /path/to/espnet/

Run ESPNET

  1. conda activate espnet
  2. cd /path/to/espnet/egs/recipe
  3. sh run.sh

Paper Reading: Attention is all you need

论文信息

  • 作者:Vaswani A , Shazeer N , Parmar N , et al.
  • 单位:Google
  • 会议:NIPS 2017
  • 发表日期: 2017-06
  • 论文链接:attention is all you need

简介

主流的序列转换模型一般都是基于循环神经网络或者卷积神经网络来做的,包含编码器(encoder)、解码器(decoder),通过注意力机制连接编码器和解码器取得了最好的效果。
本文提出了一种简单有效的网络架构,即Transformer。

Read More

BERT Pre-training of Deep Bidirectional Transformers for Language Understanding

论文信息

简介

语言模型预训练对于提升很多自然语言处理任务有大帮助,这些任务包括句子级别任务例如自然语言推理、释义)、单词符号级别任务(例如命名实体识别、问答)。有两种策略将预训练的语言表示应用到这些任务上:基于特征的策略和微调优化的策略。这篇文章改进了微调优化的策略提出了BERT方法(Bidirectional Encoder Representations from Transformers)。

BERT

模型结构

结构对比