目录

  • 0 引言
  • 1 发展历程
  • 2 基本原理
  • 3 语言模型
    • 3.1 n-gram
    • 3.2 RNN
  • 4 声学模型的传统模型
  • 5 声学模型的深度学习模型
    • 5.1 DNN
    • 5.2 RNN和LSTM
  • 6 声学模型的端到端模型
    • 6.1 CTC
    • 6.2 Seq2Seq

0 引言

这是北理计算机研究生的大数据课程的汇报作业,我负责这一部分的讲述,故通过整理这个博客来梳理一些下周一的讲演思路。

1 发展历程

2 基本原理


我录了一句自己说这句话时的音频,将这一段音频转化为声音的波形图就如下图所示。

第一个波峰就是“嗨”字,后面的三个紧凑的波峰也就是剩下的三个字,这很简单。
而对这样一个波形图,为进行语音的识别需要经历三个大的步骤,分别是

  • 预处理
  • 声音特征提取
  • 建立声学模型和语言模型


在预处理阶段,首先要做的事情叫做VAD(Voice Activity Detection),翻译过来就是语音端点检测或者说是静音抑制。
指的是从声音信号流里识别和消除长时间的静音期。
图中演示的是通过短时能量(绿)和过零率(红)来切割下“嗨大家好”声音的首尾空白。
下一步预处理的操作就是分帧

概念其实很简单,就是把刚刚的声音波形图分成一小段一小段,值得注意的是分帧时是要有交叠的;正因为如此,分帧后再展开的声音波形图比原波形图要长而且出现锯齿。
预处理阶段最重要的结束之后,再下一步就是声音特征的提取

如图所示的就是将之前我说的那句“嗨,大家好”转化成MFCC特征的矩形方阵。具体转化过程会更加复杂一些,包括但不限于短时傅里叶变换、取倒谱等等。这个程序是github上找到的AcousticFeatureExtraction-master,对于声音特征的提取做的很好。
基本的事情处理结束之后,最重要也是最复杂的一步就是声学模型和语言模型的建模了。
在这一部分,只简单介绍一下这俩模型什么意思,后续会详细说明不同的模型。

如上图的公式所示,其中W表示文字序列,Y表示语音输入。在语音文字识别当中,就是要把语音输入转化为对应的文字序列;而将这句话转化成数学表达,就是(1)式中的条件概率。将(1)通过贝叶斯定理转化成(2),又由于(2)中分母的概率对整个式子影响不大,所以约等于不考虑分母,这样就得到了(3)式。
而(3)式当中的两个,就分别是声学模型和语言模型。
声学模型是对声学、语音学、环境的变量、说话人性别、 口音等的差异的知识表示, 即给定文字之后发出这段语音的概率;而语言模型是对一组字序列构成的知识表示,即判定一个文字序列出现的概率。 声学模型一般得到语音特征到音素的映射; 语言模型一般得到词与词、词与句子的映射。

3 语言模型

首先说明一下较为好说的语言模型。

仍以刚才这段“嗨大家好”举例。
当通过声学模型建立出声音对应的发音音素之后,语言模型就要考虑这样一段发音因素对应的文字最大的概率是什么文字。比如说刚出来“hai”之后,对应的就是“嗨”,而不是“害”“还”“海”,因为在语言模型当中,单个“hai”对应“嗨”字的概率最大。其余的也同理。
更刁钻一点,同音字问题也要通过语言模型去进行处理。

比如说这一段有名的《季姬击鸡记》。
为了处理这些问题,在这里介绍两个语言模型。

3.1 n-gram


仍以这一段为例,对于“haidajiahao”,这一串词是一个个词组成的。好像是废话,但总结成数学表示就是

T是由词序列A1,A2,A3,…AnA1,A2,A3,…AnA1,A2,A3,…An组成的,即使得

P(T)=P(A1A2A3…An)P(T)=P(A1A2A3…An)P(T)=P(A1A2A3…An)最大

P(T)=P(A1A2A3…An)=P(A1)P(A2∣A1)P(A3∣A1A2)…P(An∣A1A2…An−1)P(T)=P(A1A2A3…An)=P(A1)P(A2|A1)P(A3|A1A2)…P(An|A1A2…An-1)P(T)=P(A1A2A3…An)=P(A1)P(A2∣A1)P(A3∣A1A2)…P(An∣A1A2…An−1)

而最后一行的公式在实际运算中显然是过于苦难和繁琐了。因此,我们要引入马尔科夫假设

马尔科夫假设:一个item的出现概率,只与其前m个items有关

举个例子来说明的话就是,假设你一直在转圈(原地改变方向),那么你下一刻所处什么方向,只与你现在在什么方向有关,与之前的积累量无关。
上面那个圈圈图说明的就是,一个状态到另一个状态建立这种概率连接,它能否从一个状态转移到另一个状态只与当前状态有关,这样就不需要为之前众多的变化而费心了。
在语言模型中,以2-gram举例说明,之前的概率就可以简化为

P(T)=P(A1)P(A2∣A1)P(A3∣A2)…P(An∣An−1)P(T)=P(A1)P(A2|A1)P(A3|A2)…P(An|An-1)P(T)=P(A1)P(A2∣A1)P(A3∣A2)…P(An∣An−1)

3.2 RNN


RNN(循环神经网络)也是常用的一个语言模型。当把词依次输入到网络中,每输入一个词,循环神经网络就输出截止到目前为止下一个最可能的词。在此不详细展开了。

4 声学模型的传统模型


传统的声学模型一般基于GMM(高斯混合模型)和HMM(隐马尔可夫模型)。
GMM指的是将多个正态分布(高斯分布)的数据进行混合的一种概率模型。在语音识别中,可以通过高斯混合模型将先前得到的声音特征进一步转化为声音的状态。
隐马尔可夫模型是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。马尔可夫过程之前提到过,就是当下状态只与前一个或几个状态有关,与再往前的状态无关。之前得到的状态需要通过HMM来判定是否保留或跳转。
图中的viterbi是一种找寻有向无环图中最短路径的算法。声音特征再处理得到的状态会构成一个庞大的状态网络,而利用viterbi算法就可以方便的找到状态网络中的最短路径,也就是最终的文字序列。

5 声学模型的深度学习模型

5.1 DNN


DNN实际上就是用DNN替换了GMM来对输入语音信号的观察概率进行建模。与GMM采用单帧特征作为输入不同,DNN将相邻的若干帧进行拼接来得到一个包含更多信息的输入向量。
相比于GMM-HMM,DNN-HMM具有如下优点:

  • DNN不需要对声学特征所服从的分布进行假设
  • DNN由于使用拼接帧,可以更好地利用上下文的信息
  • DNN的训练过程可以采用随机优化算法来实现,可以接受更大的数据规模

5.2 RNN和LSTM


语音的协同发音现象说明声学模型需要考虑到语音帧之间的长时相关性,尽管上文中DNN-HMM通过拼帧的方式对上下文信息进行了建模,但是毕竟拼接的帧数有限,建模能力不强,因此引入了RNN(循环神经网络)增强了长时建模的能力,RNN隐层的输入除了接收前一个隐层的输出之外,还接收前一时刻的隐层输出作为当前输入,通过RNN的隐层的循环反馈,保留了长时的历史信息,大大增强了模型的记忆能力,语音的时序特性通过RNN也得到了很好的描述。但是RNN的简单结构在模型训练进行BPTT(Backpropagation Through Time)时很容易引起梯度消失/爆炸等问题,因此在RNN的基础上引入了LSTM(长短时记忆模型),LSTM是一种特殊的RNN,通过Cell以及三个门控神经元的特殊结构对长时信息进行建模,解决了RNN出现的梯度问题,实践也证明了LSTM的长时建模能力优于普通RNN。

6 声学模型的端到端模型

6.1 CTC

CTC(Connectionist temporal classification )翻译过来叫做连接时序分类,主要用于处理序列标注问题中的输入与输出标签的对齐问题。

传统的语音识别的声学模型训练,对于每一帧的数据,需要知道对应的label才能进行有效的训练,在训练数据之前需要做语音对齐的预处理。采用CTC作为损失函数的声学模型序列,不需要预先对数据对齐,只需要一个输入序列和一个输出序列就可以进行训练。CTC关心的是预测输出的序列是否和真实的序列相近,而不关心预测输出序列中每个结果在时间点上是否和输入的序列正好对齐。
CTC建模单元是音素或者字,因此它引入了Blank。对于一段语音,CTC最后输出的是尖峰的序列,尖峰的位置对应建模单元的Label,其他位置都是Blank。

6.2 Seq2Seq


Sequence-to-Sequence方法原来主要应用于机器翻译领域。给定序列 X,输出 Y,最直白的一种办法就是延伸在机器翻译中所使用的 Seq2Seq 模型。2017年,Google将其应用于语音识别领域,取得了非常好的效果,将词错误率降低至5.6%。
如图所示,Google提出新系统的框架由三个部分组成:Encoder编码器组件,它和标准的声学模型相似,输入的是语音信号的时频特征;经过一系列神经网络,映射成高级特征henc,然后传递给Attention组件,其使用henc特征学习输入x和预测子单元之间的对齐方式,子单元可以是一个音素或一个字。最后,attention模块的输出传递给Decoder,生成一系列假设词的概率分布,类似于传统的语言模型。

语音文字识别基本原理和经典综述相关推荐

  1. html识别文字转语音,万能君工具箱v1.8 - 基于百度AI实现语音转文字/文字转语音/文字识别OCR/翻译...

    一.需求分析 1.音频转文字:目前市面上的音频转文字大多收费.音频转文字的需求是:上传一段音频,直接识别成文字,对于会议记录的比较好使,注意不是实时的语音识别. 2.文字转语音:转的语音不要太生硬. ...

  2. 语音性别识别_语音识别识别性别_语音文字识别 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 一句话识别,错误码,产品简介,产品优势,应用场景,计费概述,购买方式,欠费说明,功 ...

  3. 基于神经网络的文字识别,神经网络如何识别图像

    ocr文字识别系统 . OCR软件OCR(OpticalCharacterRecognition)软件是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符 ...

  4. 【综述】【场景文字识别】Text Recognition in the Wild: A Survey

    论文地址:https://arxiv.org/abs/2005.03492 摘要 1.介绍 2.背景 2.1图像中的文字 2.2基本问题和特殊问题 2.2.1基本问题 2.2.2特殊问题 2.3应用 ...

  5. Python 神工具包!翻译、文字识别、语音转文字统统搞定

    今天给大家介绍一款 Python 制作的实用工具包,包含多种功能: 音频转文字 文字转语音 截图 OCR文字识别 复制翻译 举个例子,比如截图 OCR 文字识别就有很多实用场景. 常会遇到有些 PDF ...

  6. python识别pdf文字_Python 神工具包!翻译、文字识别、语音转文字统统搞定

    今天给大家介绍一款 Python 制作的实用工具包,包含多种功能: 音频转文字 文字转语音 截图 OCR文字识别 复制翻译 举个例子,比如截图 OCR 文字识别就有很多实用场景. 常会遇到有些 PDF ...

  7. html5语音读取文字_文字识别神器最新版-文字识别神器安卓版下载

    文字识别神器app是一款非常好用的多功能手机识别软件,通过这款软件可以有效的提高我们的工作效率.软件功能十分强大可以轻松读取任何文本内容,还可以将语音内容一键转化为文本内容.一键添加图片和收藏文档非常 ...

  8. 几行代码就搞定一个文字识别功能,同时还能转换成语音,畅快!

    前几天想把一篇不错的文章保存下来,无奈是图片的,于是想利用python把图片中的文字识别出来 实现的方式还是挺多的,这里介绍下百度的AI开放平台,毕竟大公司,感觉识别的精度会高点,同时相信他们的算法也 ...

  9. 语音情感识别研究进展综述

    人类之所以能够通过聆听语音捕捉对方情感状态的变化,是因为人脑具备了感知和理解语音信号中的能够反映说话人情感状态的信息(如特殊的语气词.语调的变化等)的能力.自动语音情感识别则是计算机对人类上述情感感知 ...

  10. 方正畅听 文字识别自动语音朗读软件

    方正畅听是一款基于科大讯飞语音合成技术开发的免费文字识别自动语音朗读软件,它可以帮您把任何文本文字转换成语音朗读,看书变成听书,支持朗读RTF.TXT.DOC.PDF.HTML等类型的文本,本次发布的 ...

最新文章

  1. Java项目构建打包规范,jenkins2.121.1构建java项目环境,一键打包发布
  2. Android开发究竟该如何学习,含泪整理面经
  3. F# 4.0于全平台发布
  4. 真相残酷:如何衡量自己是否适合做科研?
  5. bootstrap轮播图 原点变为方块_JS实现无缝切换轮播图(自动+手动)
  6. ctypealpha php_php中Ctype函数用法详解
  7. 设计模式之GOF23装饰模式
  8. CAD绘图教程之CAD中怎么进行消防计算?
  9. php方法-------将汉字转为拼音或者提取汉字首字母
  10. Ubuntu删除用户和卸载服务命令
  11. Android UI 自定义控件大全
  12. 神经网络做多元线性回归,神经网络是线性模型吗
  13. IIS与CuteFTP进行网站发布
  14. CSDN 空间:“迷你博客”很迷人(2)
  15. html写前端手机页面,前端编写手机兼容页面(简易方式)
  16. C++枚举类型实验:三色球问题
  17. 51nod 1326 遥远的旅途 最短路建模
  18. 重要的, 需要记下来的
  19. 合工大c语言课后作业,填空类 合工大C语言题库
  20. windows操作系统支持文件名大小写区分的设置方法

热门文章

  1. 【开源】个人发卡程序源码 带会员+分站+三级分销+对接易+码+免签支付+完美运营
  2. 高斯克吕格投影分带计算
  3. python爬取网易云音乐_手把手教你用Python网络爬虫获取网易云音乐歌曲
  4. JavaScript 上传文件并展示
  5. 2018年最全阿里巴巴开源项目汇总
  6. Linux 快捷键总结
  7. postgresql 修改表字段的长度
  8. 08.存储Cinder→5.场景学习→02.Create Volume→1.cinder-api处理过程
  9. Tomcat8安装即配置教程
  10. 绕过广告拦截插件的解决方案