广告

详解语音识别的技术原理:语音如何变为文字?

2019-07-23 阅读:
简要给大家介绍一下语音怎么变文字的吧。需要说明的是,这篇文章为了易读性而牺牲了严谨性,因此文中的很多表述实际上是不准确的。对于有兴趣深入了解的同学,本文的末尾推荐了几份进阶阅读材料。

简要给大家介绍一下语音怎么变文字的吧。需要说明的是,这篇文章为了易读性而牺牲了严谨性,因此文中的很多表述实际上是不准确的。对于有兴趣深入了解的同学,本文的末尾推荐了几份进阶阅读材料。下面我们开始。oOSednc

首先,我们知道声音实际上是一种波。常见的mp3等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如Windows PCM文件,也就是俗称的wav文件。wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。下图是一个波形的示例。oOSednc

015ednc20190722oOSednc

在开始语音识别之前,有时需要把首尾端的静音切除,降低对后续步骤造成的干扰。这个静音切除的操作一般称为VAD,需要用到信号处理的一些技术。oOSednc

要对声音进行分析,需要对声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧。分帧操作一般不是简单的切开,而是使用移动窗函数来实现,这里不详述。帧与帧之间一般是有交叠的,就像下图这样:oOSednc

016ednc20190722oOSednc

图中,每帧的长度为25毫秒,每两帧之间有25-10=15毫秒的交叠。我们称为以帧长25ms、帧移10ms分帧。oOSednc

分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须将波形作变换。常见的一种变换方法是提取MFCC特征,根据人耳的生理特性,把每一帧波形变成一个多维向量,可以简单地理解为这个向量包含了这帧语音的内容信息。这个过程叫做声学特征提取。实际应用中,这一步有很多细节,声学特征也不止有MFCC这一种,具体这里不讲。oOSednc

至此,声音就成了一个12行(假设声学特征是12维)、N列的一个矩阵,称之为观察序列,这里N为总帧数。观察序列如下图所示,图中,每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。oOSednc

017ednc20190722oOSednc

接下来就要介绍怎样把这个矩阵变成文本了。首先要介绍两个概念:oOSednc

  1. 音素:单词的发音由音素构成。对英语,一种常用的音素集是卡内基梅隆大学的一套由39个音素构成的音素集,参见The CMU Pronouncing Dictionary‎。汉语一般直接用全部声母和韵母作为音素集,另外汉语识别还分有调无调,不详述。oOSednc

  2. 状态:这里理解成比音素更细致的语音单位就行啦。通常把一个音素划分成3个状态。oOSednc

语音识别是怎么工作的呢?实际上一点都不神秘,无非是:oOSednc

把帧识别成状态(难点)。oOSednc

把状态组合成音素。oOSednc

把音素组合成单词。oOSednc

如下图所示:oOSednc

018ednc20190722oOSednc

图中,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。oOSednc

那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。比如下面的示意图,这帧在状态S3上的条件概率最大,因此就猜这帧属于状态S3。oOSednc

019ednc20190722oOSednc

那这些用到的概率从哪里读取呢?有个叫“声学模型”的东西,里面存了一大堆参数,通过这些参数,就可以知道帧和状态对应的概率。获取这一大堆参数的方法叫做“训练”,需要使用巨大数量的语音数据,训练的方法比较繁琐,这里不讲。oOSednc

但这样做有一个问题:每一帧都会得到一个状态号,最后整个语音就会得到一堆乱七八糟的状态号。假设语音有1000帧,每帧对应1个状态,每3个状态组合成一个音素,那么大概会组合成300个音素,但这段语音其实根本没有这么多音素。如果真这么做,得到的状态号可能根本无法组合成音素。实际上,相邻帧的状态应该大多数都是相同的才合理,因为每帧很短。oOSednc

解决这个问题的常用方法就是使用隐马尔可夫模型(Hidden Markov Model,HMM)。这东西听起来好像很高深的样子,实际上用起来很简单:oOSednc

第一步,构建一个状态网络。oOSednc

第二步,从状态网络中寻找与声音最匹配的路径。oOSednc

这样就把结果限制在预先设定的网络中,避免了刚才说到的问题,当然也带来一个局限,比如你设定的网络里只包含了“今天晴天”和“今天下雨”两个句子的状态路径,那么不管说些什么,识别出的结果必然是这两个句子中的一句。oOSednc

那如果想识别任意文本呢?把这个网络搭得足够大,包含任意文本的路径就可以了。但这个网络越大,想要达到比较好的识别准确率就越难。所以要根据实际任务的需求,合理选择网络大小和结构。oOSednc

搭建状态网络,是由单词级网络展开成音素网络,再展开成状态网络。语音识别过程其实就是在状态网络中搜索一条最佳路径,语音对应这条路径的概率最大,这称之为“解码”。路径搜索的算法是一种动态规划剪枝的算法,称之为Viterbi算法,用于寻找全局最优路径。oOSednc

020ednc20190722oOSednc

这里所说的累积概率,由三部分构成,分别是:oOSednc

  1. 观察概率:每帧和每个状态对应的概率oOSednc

  2. 转移概率:每个状态转移到自身或转移到下个状态的概率oOSednc

  3. 语言概率:根据语言统计规律得到的概率oOSednc

其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。语言模型是使用大量的文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。oOSednc

这样基本上语音识别过程就完成了。oOSednc

以上的文字只是想让大家容易理解,并不追求严谨。事实上,HMM的内涵绝不是上面所说的“无非是个状态网络”,如果希望深入了解,下面给出了几篇阅读材料:oOSednc

1. Rabiner L R. A tutorial on hidden Markov models and selected applications in speech recognition. Proceedings of the IEEE, 1989, 77(2): 257-286.oOSednc
入门必读。深入浅出地介绍了基于HMM的语音识别的原理,不注重公式的细节推导而是着重阐述公式背后的物理意义。oOSednc

2. Bilmes J A. A gentle tutorial of the EM algorithm and its application to parameter estimation for Gaussian mixture and hidden Markov models. International Computer Science Institute, 1998, 4(510): 126.oOSednc
详细介绍了用E-M算法训练HMM参数的推导过程,首先讲E-M的基本原理,然后讲解如何应用到GMM的训练,最后讲解如何应用到HMM的训练。oOSednc

3. Young S, Evermann G, Gales M, et al. The HTK book (v3.4). Cambridge University, 2006.oOSednc
HTK Book,开源工具包HTK的文档。虽然现在HTK已经不是最流行的了,但仍然强烈推荐按照书里的第二章流程做一遍,你可以搭建出一个简单的数字串识别系统。oOSednc

4. Graves A. Supervised Sequence Labelling with Recurrent Neural Networks. Springer Berlin Heidelberg, 2012: 15-35.oOSednc
基于神经网络的语音识别的入门必读。从神经网络的基本结构、BP算法等介绍到 LSTM、CTC。oOSednc

5. 俞栋, 邓力. 解析深度学习——语音识别实践, 电子工业出版社, 2016.oOSednc
高质量的中文资料非常稀有,推荐买一本。最早把深度学习技术应用于语音识别就是这本书的作者。oOSednc

(本文转载自《知乎》:语音识别的技术原理是什么?——张俊博oOSednc

  • 我瑞了
本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • Microchip模拟嵌入式SuperFlash技术助力存算一体创新 SuperFlash memBrain存储器解决方案使知存科技片上系统(SoC)能够满足最苛刻的神经处理成本、功耗和性能要求
  • 用TinyML开始设计——开发评估套件 本文中展示的开发套件和评估板得到一些流行的机器学习库和用于 TinyML 工作流程资源的支持,包括用于微控制器的 Google TensorFlow Lite 和 Edge Impulse,因而它们能够成为您第一个项目的理想起点。
  • “中国IC设计成就奖”提名产品简介:高性能GPU芯片及解 沐曦致力于提供国际顶尖的高性能通用GPU芯片及解决方案,结合我国人工智能等领域对GPU芯片的强烈市场需求,对标当前国际领先的GPU芯片产品立项开展技术研发。
  • “中国IC设计成就奖”提名产品简介:全志科技高性能智能 高性能三重异构智能语音应用处理器R329芯片,采用业界先进的半导体工艺,首款集成Arm中国周易语音处理器。集成DSP、NPU、64位CPU及丰富的外设接口,创新突破了低功耗、边缘语音AI超级算力、多重异构通讯、多核调度等关键技术,处于国内领先水平。
  • “中国IC设计成就奖”提名产品简介:追萤3D AI芯片Ai310 埃瓦科技自主研发的追萤 3D AI芯片创新的采用了异构架构 SOC 设计和微内核架构设计,包含 NPU 神经网络加速核、3D 立体匹配加速核、ISP 核等功能性处理核心;其中 NPU 神经网络加速核基于可重构以及片上多级存储和缓存设计,使数据可高效送达加速核心,使该芯片拥有领先的高效智能处理能力、分析以及低功耗管理的能力;其设计架构的资源复用性使硬件计算单位可灵活分配,适应于不同场景的计算需求;在 3D 视觉算法加速方面创新的采用了自研立体匹配算法的 3D 加速微内核架构设计,可有效加速双目立体视觉、结构光等多种 3D 视觉算法。
  • “中国IC设计成就奖”提名产品简介:ada200优势 1.九天睿芯,感存算一体芯片,可以在功耗和性能满足”低功耗AI场景“的同时,成本也大幅度下降。2.采用模数混合的存内计算架构,ADA200相比传统数字芯片,1/3成本,1/10功耗。
  • “中国IC设计成就奖”提名产品简介:面向边缘视觉分析的 面向边缘视觉分析的数据流AI芯片CAISA是鲲云科技自主研发的专为人工智能图像提供高性能计算加速的AI芯片产品,是全球首个量产的数据流AI芯片。
  • “中国IC设计成就奖”提名产品简介:人工智能语音芯片CI 1、人工神经网络硬件引擎架构:具备高计算性能,进行神经网络计算时相当于数十个CPU并行计算的能力;低访问带宽和低功耗,通过并行计算和共用神经元权重参数,大幅降低访问带宽及功耗;高可配置性,支持神经元层数和节点数、神经网络结构的配置。 2、单、双、及麦克风阵列降噪增强技术:支持各种平稳、非平稳环境噪声抑制;可支持线阵、圆阵结构等常用麦阵结构;采用定向波束形成与自适应信号处理技术相结合;拾取方向动态可调;支持单声道、立体声等回声抑制;采用独立研发的空间预测技术,支持强回声情况下回声抑制;与降噪处理技术相结合;自动增益调节、高通、带通滤波等。 3、低功耗和可靠性设计技术:具备低功耗集成电路设计技术,包括基于活动语音检测的低功耗控制技术和时钟门控技术。 4、逻辑设计技术:掌握了语音信号处理IP的设计方法,包括算法硬件化、定点、浮点运算处理等。同时积累了整套SoC设计所需的控制类IP,并成功通过流片验证。
  • “中国IC设计成就奖”提名产品简介:智能安防AI SoC芯片 亿智SV826是2021年推出的高性能的安防AI SoC芯片,主要面向视频编解码AI摄像机产品。
  • “中国IC设计成就奖”提名产品简介:低功耗视觉AIoT SoC 亿智SH516芯片是亿智电子2021年推出的一款低功耗的智能视觉AIoT SoC芯片。
  • “中国IC设计成就奖”提名产品简介:高性能大算力全场景 - AI性能跑分更强,超越Nvidia Orin - 应用当前先进的安全技术和研发流程 - 国内唯一可获得、支持快速量产的整车智能计算平台芯片
  • “中国IC设计成就奖”提名产品简介:高端AIoT芯片RV1126 RK3568是瑞芯微的高端AIoT芯片。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了