基于TensorFlow.js的英文语音识别研究与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:eclipse
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,而本文将介绍其衍生的js版本即TensorFlow.js框架,并且基于这个框架和浏览器环境加载一个预训练模型来实现语音识别简单孤立的英文单词的功能。通过对预训练模型的使用与优化研究,为进一步使用TensorFlow.js实现更加复杂的商业化功能做了前期探索。
  关键词:预训练模型;TensorFlow.js;语音识别
  1 概述
  简单的语音识别实际上也是属于分类问题,而声音在计算机中是被当成声谱图,既然是图片类的,那么就可以使用卷积神经网络来构建训练模型[1]。实际上很多成熟的语音识别模型也是基于卷积神经网络构建的,本文也将采用Tfjs-model这个官方模型库里面的speech-commands这个预训练好的语音命令模型,该模型可以获取一秒的音频片段,十分适合用来实现一个简单的语音识别功能。
  相对于绑定完成并且支持版本兼容运行的语言为C和Python的TensorFlow机器学习库,TensorFlow.js则是一个javascript库,用于在浏览器和Node.js上訓练和部署模型,既可以从头到尾的自己重新训练一个模型,也可以直接运行现有的模型。可以说,它的出现让市场流行的传统的前端界面、App有了更多的机遇,可以通过嵌入各种各样的机器学习模型,让界面产生更多的智能化的交互[2]。
  2 TensorFlow.js框架
  2.1 TensorFlow.js特性
  TensorFlow.js是一个用javascript实现的机器学习库,使开发者可以直接在node.js和浏览器中使用机器学习技术,而且该库繁荣的生态系统还提供了一系列的工作流程,方便使用javascript开发和训练模型,并在多个平台上部署模型,具有较好的兼容性和强大的支持[3]。目前TsensorFlow.js已经被应用到多个计算机相关领域如语音识别、图片识别、自然语言处理等[4]。
  需要说明的是TensorFlow.js使用的是Tensor,也称为张量,有别于一般数组,它是向量和矩阵向更高维度的拓展,也可以近似的看成一个多维数组。而神经网络具有多个神经元和层,每一层都需要存储N维的数据[5],这些数据往往需要进行N层的遍历循环计算等,导致其数据结构比较复杂,因此就需要张量这样一个高维的数据结构来存储这些数据。
  下文中的模型特指人工神经网络模型,主要由TensorFlow.js框架的sequential方法初始化并根据需求逐步添加输入层、隐藏层和输出层。每个神经网络模型里面都包含一个输入层、最少一个隐藏层、一个输出层,每个层由任意个(至少为1个)神经元构成。每个神经元都会包含若干权重、偏置和一个激活函数。
  2.2 TensorFlow.js开发环境搭建
  所谓“工欲善其事必先利其器”,第一步首先是如何安装TensorFlow.js。安装的话其实分为在浏览器安装和在node安装,考虑到浏览器的便捷性和容易上手的特性,所以介绍相对比较简单的浏览器安装。
  完成上述TensorFlow.js库的安装后就可以在浏览器上运行机器学习模型或者加载预训练模型。
  3 预训练模型的使用
  3.1 预训练模型
  所谓预训练模型就是已经事先训练好的模型,无须再训练即可预测计算。这些模型大部分都是托管在NPM和unpkg上的,因此它们可以被用于任何开箱即用的项目[6]。它们可以直接使用,也可以在TensorFlow.js的传输学习环境中使用。这里使用的预训练模型是语言命令识别器,它是一个javascript模块,可以从一个很小的词汇表中识别出简单的、孤立的英文单词口语命令。默认词汇表会存在一个数组里(外面有一个对象包裹),而该数组的第一个元素是代表背景噪音,第二个元素是未知单词,我们将会在之后的模型预测中将这两个元素剔除,只留下有具体意义的单词。如以下具体的数据:
  3.2 预训练模型实现
  由于是预训练模型,故需要从官方仓库那里下载语音识别模型文件,保存到本地文件夹中,然后就可以在本地开启静态文件服务器(http-server或者nginx皆可,这里启动的地址默认为:http://127.0.0.1:8080)并且能通过静态服务器访问到这个文件,下载这个模型文件后还需要安装对应的依赖,可以在终端命令行运行npm i @tensorflow-models/speech-commands,然后在编写业务逻辑的地方引入即可完成准备工作,接下来将新建一个script.js文件来书写具体的训练逻辑,步骤如下:
  语音命令识别器的定义(在线流媒体识别方式):利用导入的模型文件里面自带的create方法建立一个识别器实例,这个识别器可以用来加载我们的预训练模型。该识别器需要传入四个参数(第一个必选,其余为可选的识别参数),这里传入了浏览器傅里叶转换、null为默认识别单词(由于已经给出模型地址故应该给null或者undefined)、预训练模型的地址、预训练模型的源文件信息(地址和信息来源于刚刚安装的语言识别依赖):
  模型包含的可识别单词:通过识别器的wordLabels方法可以得知目前可以识别的单词同时我们通过javascript自带的slice方法截取掉前面无意义的两个单词,并且把剩下可以识别的单词作为标签即输出。
  3.3模型预测
  经过上面的步骤之后就已经完成了加载预训练模型,同时获得了模型的标签,接下来就可以通过监听用户麦克风的输入即特征来进行语音识别了。
  监听用户麦克风:这个可以通过H5实现,但是识别器通过了listen方法也可以让开发者监听。需要获得用户输入对应词汇表中每个单词对应的符合程度,并且获取其中符合程度最高的单词,这个单词就是根据用户输入的语音识别得到的,将这个单词打印并显示到页面:   识别频率和准确度:由于上述方法实现的语音识别过于频繁且正确率较低,而listen方法不仅可以传入一个回调函数为参数,还可以传入一个配置对象,所以可在它的后面加一个配置对象。该对象包括overlapFactor负责控制识别器对光谱图进行预测的频率,值越大则识别的频率越快(默认为0.5);probabilityThreshold通过定义一个阀值,根据是否超过阀值决定是否调用回调函数来负责控制识别的准确度,值越大则越能减少杂音的干扰但是同时对发音要求也会提高:
  通过设置配置对象即调整超参数[7]后准确率有了较大提升,基本上可以符合使用的要求,但是偶尔也会出现识别错误的情况,这个是有多个原因造成的,例如用户麦克风输入时的杂音、用户发音不准等。那么到这里就已经完成了这个语音识别模型的使用。
  4 预训练模型的引入与测评
  4.1 模型引入
  目前已经完成了模型逻辑的编写,接下来还需要在页面中引入该模型,由于整个预训练模型的使用已经整合成一个javascript文件,所以可以新建一个html文件引入它,并且利用css对样式做出一定的美化(空白的单词卡片):
  另外在逻辑文件夹中也需要先获取页面的DOM将数据文件中的每一个数据通过遍历置换为一个个div标签并在页面中展示。
  整体的静态页面效果如下:
  4.2 模型优化
  接下来需要对监听用户麦克风并且获取到的对应单词的提示进行优化,修改该部分的代码,获取对应单词的索引然后遍历数据找到对应的单词修改其背景色(变为蓝色单词卡片):
  4.3 模型效果测评
  接下来在浏览器上对该模型进行测试,效果如下:
  累计语音输入为100次;
  正确且及时识别次数为83次;
  超前识别次数为7次;
  错误识别次数为6次;
  无法识别次数为4次;
  正确识别率为83%;
  通过以上测试数据可知,语音识别的正确率较高但是仍然存在识别不出和无语音输入却提前识别的情况。
  关于语音识别不出的情况,笔者测试的环境较为封闭,但是仍然存在一些杂音,导致有特征输入而无标签输出,可以通过调整前文提及的probabilityThreshold超参数,这里修改为0.9。
  关于超前识别的情况,无特征输入却有标签输出,且与上次特征输入的间隔较小,故可以判断是模型识别语音过于频繁,可以调整overlapFactor属性改善,这里修改为0.3后继续测试。
  优化后重新测试的结果如下:
  累计语音输入为100次;
  正确且及时识别次数为97次;
  超前识别次数为0次;
  错误识别次数为1次;
  无法识别次数为2次;
  正确识别率为97%;
  通过以上的测试数据可知,正确率已经得到了较大的提升,只存在因为特殊情况导致无法识别和识别错误,基本沒有出现超前识别的情况。
  至此就完成了模型在页面的引入和使用,以及通过调整参数进行一定程度的优化来提高准确率。
  5 结语
  综上可得,基于预训练模型可以很容易的进行引入和使用,可以更快的投入到实际的生产使用,但需要程序员熟练的掌握优化思路与技巧。
  TensorFlow.js的功能非常强大,本文仅介绍了它其中的一个在英文语音识别的应用方面,对如何利用预训练模型解决更加复杂的问题有一定的参考意义。更多的应用如迁移学习、过拟合与欠拟合、Python与javascript之间模型的转换等等[8]限于篇幅并没有提及,后续将继续探索TensorFlow.js在各方面应用的途径。
  参考文献:
  [1] 袁文翠,孔雪.基于TensorFlow深度学习框架的卷积神经网络研究[J].微型电脑应用,2018,34(2):29-32.
  [2] 李康化,姜姗.机器学习与文化生产变革——基于AI技术发展视角[J].湘潭大学学报(哲学社会科学版),2020,44(1):74-79.
  [3] Google TensorFlow 机器学习框架介绍和使用[EB/OL].(2015-12-15) [2016-11-25]http://blog.csdn.net/sinat_31628525/article/details/50320817.
  [4] 张俊,李鑫.TensorFlow平台下的手写字符识别[J].电脑知识与技术,2016,12(16):199-201.
  [5] 章敏敏,徐和平,王晓洁,等.谷歌TensorFlow机器学习框架及应用[J].微型机与应用,2017,36(10):58-60.
  [6] 纪守领,李进锋,杜天宇,等.机器学习模型可解释性方法、应用与安全研究综述[J].计算机研究与发展,2019,56(10):2071-2096.
  [7] Daniel Smilkov,Nikhil,等.TensorFlow.js: Machine Learning for the Web and Beyond[J].Mathematical Software,2019(2):1.
  [8] 周志华.机器学习[M].北京:清华大学出版社,2016.
  【通联编辑:梁书】
其他文献
针对碳捕集设备会产生较大捕获能耗成本的问题,采用灵活捕获运行模式调节碳捕集设备的捕获水平以降低捕获能耗成本,同时利用储液罐实现捕获能耗时移。通过需求响应削峰填谷增加负荷峰值时碳捕集设备捕获能力并提高风电利用率,从而降低捕获能耗成本和碳排放。以降低捕获能耗、提高碳捕集设备灵活性为目标,建立碳捕集电厂灵活捕获和溶剂存储模型。以系统总调度成本最小为目标,构建采用灵活运行模式的碳捕集电厂并计及需求响应的电力系统低碳经济调度模型。最后基于改进的IEEE 30节点系统对所建立的模型进行仿真,算例分析结果表明,所建模型
为保证系统在低碳环保的前提下兼顾风电消纳与经济运行,提出一种考虑碳交易机制的光热电站与风电系统低碳经济调度策略。从低碳技术与低碳政策2个角度出发,将低碳手段与市场机制相结合,搭建考虑碳交易的光热电站与风电系统运行框架,并分析其运行机理;以火电出力承担基荷,建立以综合成本最低为目标的低碳经济调度模型,统筹系统低碳性与经济性;采用西北电网实测数据并在改进的IEEE 30节点系统中进行仿真验证,仿真结果验证了所提策略可有效降低碳排量,提高风电消纳率并降低系统的综合成本。
随着能源互联和低碳电力的持续推进,综合能源系统(IES)将成为节能减排的重要载体。结合碳排放权交易(CET)和绿色证书交易(GCT)机制,提出含碳-绿色证书联合交易机制的IES优化运行模型。在分析CET和GCT机制的基础上,搭建碳-绿色证书联合交易市场框架,打破传统碳和绿色证书市场交易的壁垒;综合考虑IES的购电成本、购气成本、设备运行维护成本,建立考虑条件风险价值的碳-绿色证书联合交易模型,并将其引入IES运行优化模型中。算例结果表明:在IES中考虑CET和GCT机制具有较高的经济性与可行性,可提高可再
综合能源系统实现了冷、热、电等多种能源形式的横向互补以及“源-网-荷-储”多个环节的纵向协调。基于区域综合能源系统功能区内冷热产消就地平衡,以及电作为功能区间能量枢纽的特点,分析了典型功能区“源-网-荷-储”的差异特性,包括电动汽车(EV)的时空特征、用户冷热需求的柔性和供热系统的热惯性等;考虑了EV负荷、冷热负荷和供热系统的虚拟储能特性,建立了计及功能区间能量交换能力、储能设备成本等差异的区域综合能源系统实体储能(设备)规划模型;以某一包含居民区、办公区、商业区和工业区的新区综合能源系统为例进行算例分析
配电网中分布式可再生能源的持续增加以及以区块链为代表的分布式记账技术的快速发展,为配电网展开去中心化的点对点(P2P)交易提供了发展动力和技术支持,然而持续增多的分散P2P交易可能导致节点电压越限、系统网损增加等问题。为此提出一种以配电网安全为导向的分布式资源P2P交易机制。首先,基于配电网节点电压和系统网损的线性化推导,提出一种P2P交易对于配电网安全影响的灵敏度模型,从而将传统高低价匹配的交易撮合策略修正为以配电网安全为导向的P2P交易策略;然后,基于以太坊平台运算能力的限制提出具有简单运算特性的去中
在实现“双碳”目标的背景下,电力系统中不断增长的可再生能源并网比例带来了系统惯性下降的问题,其不确定性也提高了系统对灵活性资源的需求。储能资源提供的调频能为系统惯性与频率稳定提供支撑,同时能有效提高电力系统运行弹性,降低系统整体运行成本。基于此,从储能参与调频的角度出发,分别对考虑系统惯性与经济性的储能规划、储能电站的调频竞价策略、电动汽车的调频竞价策略三方面的研究现状进行了综述与归纳,最后总结展望了其中的关键性问题,以期为考虑调频的储能规划与竞价策略问题提供参考。
摘要:伴随医疗行业的迅速增长,人们对基本医疗的需求愈发多元化,诊后服务也在逐渐被大家重视,愈发凸显出随访的重要性。传统的随访模式已不能满足持续增长的医疗服务需求。分析国内当前传统的随访模式及现状,充分利用大数据的便捷,将“互联网 ”技术与随访结合,采用通信技术、大数据等多领域技术,构建随访平台,做到及时发放适宜随访内容、快速统计分析相关数据;根据出院患者的需求建立一对一的服务模式,并形成健康档案并
摘要:针对目前淘宝、京东等电商店铺客服依旧是以人工服务为主,基于规则匹配的回复为辅的现状,提出基于Seq2Seq模型实现电商店铺客服的自动化回复系统,降低人工成本,也尽可能为用户带来实时性的客服体验。在实现时基于三层模型处理,分别通过基于正则表达式的任务式回复、基于特征库匹配的检索式回复以及基于Seq2Seq的生成式回复为客户提供精细良好的服务。最后配备上服务器来处理问答需求,运行模型,建立基于安
眼底血管图像分析可用于各种眼病的评估和监测。它在降低失明风险方面发挥着重要作用。目前,许多眼底血管分割模型在小血管的分割结果上仍需改进。针对上述问题,我们提出了一种改进U-Net模型的视网膜血管分割方法。首先,利用网状跳跃连接提取浅层到深层的特征映射。然后将特征图拼接融合,最大限度地发挥它们的作用。在特征层中,我们采用空洞卷积来增加接受野。在DRIVE、STARE、CHASE_DB1三个标准数据集
在电力市场和低碳经济背景下,基于年时序仿真提出一种考虑需求响应和环境效益的售电主体风光储容量优化配置方法。计及建设周期内风光储容量和负荷波动的影响,以售电主体逐年综合成本最小化为目标,将投资和运营一体化考虑,建立两阶段随机规划模型,并采用动态回收周期评估系统的投资效益。在阶段1,提出风光储设备的逐年组合投资策略;在阶段2,充分考虑需求响应以及环境效益,建立售电主体逐年运营模型,以优化售电主体市场购电成本、碳排放折算成本以及用户用电成本,并基于分布式次梯度投影算法得到最优日前定价和用户能耗。提出基于贡献度利