【摘要】 前言利用新型的人工智能(深度学习)算法,结合清华大学开源语音数据集THCHS30进行语音识别的实战演练,让使用者在了解语音识别基本的原理与实战的同时,更好的了解人工智能的相关内容与应用。通过这个实践可以了解如何使用Keras和Tensorflow构建DFCNN的语音识别神经网络,并且熟悉整个处理流程,包括数据预处理、模型训练、模型保存和模型预测等环节。实践流程基础环境准备OBS准备Model...
前言
利用新型的人工智能(深度学习)算法,结合清华大学开源语音数据集THCHS30进行语音识别的实战演练,让使用者在了解语音识别基本的原理与实战的同时,更好的了解人工智能的相关内容与应用。通过这个实践可以了解如何使用Keras和Tensorflow构建DFCNN的语音识别神经网络,并且熟悉整个处理流程,包括数据预处理、模型训练、模型保存和模型预测等环节。
实践流程
- 基础环境准备
- OBS准备
- ModelArts应用
- 开始语音识别操作
- 开始语言模型操作
1.基础环境准备
在使用 ModelArts 进行 AI 开发前,需先完成以下基础操作哦(如有已完成部分,请忽略),主要分为4步(注册–>实名认证–>服务授权–>领代金券):
-
使用手机号注册华为云账号:点击注册
-
点此去完成实名认证,账号类型选"个人",个人认证类型推荐使用"扫码认证"。
\
-
点此进入 ModelArts 控制台数据管理页面,上方会提示访问授权,点击【服务授权】按钮,按下图顺序操作:
\
-
进入 ModelArts 控制台首页,如下图,点击页面上的"彩蛋",领取新手福利代金券!后续步骤可能会产生资源消耗费用,请务必领取。 \
以上操作,也提供了详细的视频教程,点此查看:ModelArts环境配置
基于深度学习算法的语音识别具体步骤
什么是OBS?
对象存储服务(Object Storage Service,OBS) 是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,包括:创建、修改、删除桶,上传、下载、删除对象等。
2.OBS准备
1).将本地准备的data.zip和语音数据包data_thchs30.tar上传到OBS中,为后续步骤准备。
创建OBS桶将光标移动至左边栏,弹出菜单中选择“服务列表”->“ 存储”->“对象存储服务 OBS” ,如下图:
进去对象存储服务 OBS后,点击创建桶,配置参数如下:区域:华北-北京四,数据冗余存储策略:多AZ存储,桶名称:自定义(请记录,后续使用),存储类别:标准存储,桶策略:私有,默认加密:关闭,归档数据直读:关闭,点击“立即创建”,完成创建后跳转到桶列表,如下图所示:
2)创建AK/SK
-
登录华为云,在页面右上方单击“控制台”,进入华为云管理控制台。
图1 控制台入口
-
在控制台右上角的帐户名下方,单击“我的凭证”,进入“我的凭证”页面。
图2 我的凭证
-
在“我的凭证”页面,选择“访问密钥>新增访问密钥”,如图3所示。
-
填写该密钥的描述说明,单击“确定”。根据提示单击“立即下载”,下载密钥。
图4 新增访问密钥
\
-
密钥文件会直接保存到浏览器默认的下载文件夹中。打开名称为“credentials.csv”的文件,即可查看访问密钥(Access Key Id和Secret Access Key)。
3).安装OBS客户端
首先下载OBS工具到云服务器,在自己电脑打开命令行界面,执行如下命令:
mkdir /home/user/Desktop/data; cd /home/user/Desktop/data; wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz
输入解压缩指令,并查看当前目录列表:
tar -zxf obsutil_linux_amd64.tar.gz; ls -l
执行如下指令配置OBS工具,操作说明:自己获取的密钥的AK/SK填入-i -k参数后面
执行如下查看对象列表指令,验证是否配置成功,指令如下:
./obsutil ls
配置成功结果如下图:
4)上传语音资料
执行如下指令下载实验相关资料:注:由于语音资料较大(7个多g),需要耐心等待
cd ../; wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/speech-recognition/data.zip; wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/speech-recognition/data_thchs30.tar
下载完毕,执行如下查看指令:
ll
输入以下指令,将刚刚下载好 的语音文件上传到创建的OBS桶nlpdemo中:
./obsutil_linux_amd64_5.*/obsutil cp ./data.zip obs://nlpdemo; ./obsutil_linux_amd64_5.*/obsutil cp ./data_thchs30.tar obs://nlpdemo
上传完毕后【大约60分钟,上传的速率较慢】建议华为云优化一下OBS的上传速度,在华为云控制台依次选择“控制台”->“服务列表”->“ 存储”->“对象存储服务OBS”,进入服务界面,点击创建的桶名称nlpdemo进入详情页,于页面左侧选择“对象”,点击后于页面右侧可查看到刚传入的资料,
2.ModelArts应用
什么是ModelArts?
ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。
- 创建Notebook在服务列表中找到并进入人工智能服务 ModelArts,然后点击ModelArts 页面中左侧的【开发环境】选项一点击【notebook】 进入notebook 页面。点击【创建】按钮进入创建页面,并按以下参数进行配置:名称:自定义,自动停止:自定义 12小时(在选择非[限时免费]规格后显示),
镜像:公共镜像:在第二页选择tensorflow1.13-cuda10.0-cudnn7-ubuntu18.0.4-GPU算法开发和训练基础镜像,预置AI引擎Tensorflow1.13.1,资源池:公共资源池,类型:CPU,规格:8核64GiB,存储配置:云硬盘(30GB)。
点击“下一步”->“提交”->“返回Notebook列表”,Notebook列表如下图所示:注:大约3分钟后状态由“启动中”变为“运行中”,可点击列表右上角的“刷新”查看最新状态。
3.开始语音识别操作
采用CNN+CTC的方式进行语音识别。
1)导入包
创建成功,返回NoteBook列表,等待状态变为“运行中”【约等待3分钟】,点击“打开”,进入NoteBook详情页。在页面中选择“TensorFlow-1.13.1”,如下图所示:
在新建的Python环境页面的输入框中,输入以下代码:
点击“代码旁边的小三角形”run,查看执行结果,如下图:
2)数据准备
继续在下方空白的输入框中输入以下代码,从上传到OBS的数据拷贝到当前目录:
注:下方框选的部分是之前创建的OBS桶名
点击“run”,查看执行结果,如下图:
继续在下方空白的输入框中输入以下代码,解压缩数据:
点击“run”,查看执行结果,如下图:
3)数据处理
继续在下方空白的输入框中输入以下代码,生成音频文件和标签文件列表:注:考虑神经网络训练过程中接收的输入输出。首先需要batch_size内数据具有统一的shape。格式为:[batch_size, time_step, feature_dim],然而读取的每一个sample的时间轴长都不一样,所以需要对时间轴进行处理,选择batch内最长的那个时间为基准,进行padding。这样一个batch内的数据都相同,就可以进行并行训练了。
点击“run”,查看执行结果,如下图:
继续在下方空白的输入框中输入以下代码,进行label数据处理(为label建立拼音到id的映射,即词典):
点击“run”,查看执行结果,如下图:
继续在下方空白的输入框中输入以下代码,进行音频数据处理:
点击“run”,查看执行结果,如下图:
继续在下方空白的输入框中输入以下代码,生成数据生成器:
代码执行成功,如下图:
执行结果输出如下图:
继续在下方空白的输入框中输入以下代码,点击“run”运行,生成用于训练格式的数据生成器(此段代码无输出):
4)模型搭建
继续输入以下代码:说明:训练输入为时频图,标签为对应的拼音标签,搭建语音识别模型,采用了 CNN+CTC 的结构。
点击“run”,执行结果如下图:
5)训练模型
继续输入以下代码创建语音识别模型:
执行结果如下图【大约需要11分钟,如果需要更好效果可以调整参数epochs为50次】:
)
6)保存模型
将训练模型保存到OBS中。继续输入如下代码(此段代码无输出):操作说明:用创建的OBS桶名填写参数
7)测试模型
继续输入如下代码,点击“run”运行,用以导入包及加载模型和数据(此段代码无输出):
继续输入如下代码,点击“run”运行,获取测试数据(此段代码无输出):
继续输入以下代码进行测试:
点击“run”,执行成功如下图所示:.
4.开始语言模型操作
训练语言模型是采用捕捉特征能力更强的Transformer,创建基于自注意力机制的语言模型,在实验的过程中会跟大家介绍具体的实现步骤。
1)导入包
继续输入如下代码,点击“run”运行,导入相关包(此段代码无输出):
2)数据处理
继续输入如下代码,点击“run”运行:
执行成功结果如下图:
3)模型搭建
模型采用self-attention的左侧编码器,如下图:
继续输入如下代码,点击“run”运行,用以实现图片结构中的layer norm层(代码无输出):
继续输入如下代码,点击“run”运行,以实现图片结构中的embedding层(代码无输出):
继续输入如下代码,点击“run”运行,以实现multihead层(此段代码无输出):
继续输入如下代码,点击“run”运行,以实现feedforward层(此段代码无输出):
继续输入如下代码,点击“run”运行,以搭建模型(此段代码无输出):
4) 训练模型
继续输入如下代码,点击“run”运行,用于参数设定(此段代码无输出):
继续输入以下代码,点击“run”运行,用于模型训练:
执行成功输出内容如下图【大约10分钟执行完成,如果需要更好效果请将参数epochs调整为15】:
5) 模型测试
继续输入如下代码,进行拼音测试:
点击“run”运行后,出现输入框提示输入,如下图:
我输入以下拼音
nian2 de bu4 bu4 ge4 de shang4 shi2 qu1 pei4 wai4 gu4 de nian2 ming2 de zi4 ren2 na4 ren2 bu4 zuo4 de jia1 zhong4 shi2 wei4 yu4 you3 ta1 yang2 mu4 yu4 ci3
单击键盘回车键后,模型返回中文内容,如下图:
继续在输入框中输入“exit”,回车后出现提示停止运行,如下图:
6) 保存模型
继续输入如下代码,点击“run”运行后,保存模型到OBS桶中,方便其他notebook使用:操作说明:用自己创建的OBS桶名代替“OBS”字符,我的是nlpdemo
!zip -r languageModel.zip logs #递归压缩模型所在文件夹
mox.file.copy("languageModel.zip", 's3://nlpdemo/languageModel.zip')
至此基于深度学习算法的语音识别实践全部完成,整个流程下来体验还是很不错的!
总结
整个流程用到了很多的华为云服务,例如OBS和ModelArts的NoteBook,功能非常强大,体验感很好,对深度学习算法的语音识别有了一定的了解,也对整个实践的过程有了认识,欢迎大家一起在华为云社区交流学习。如有不当之处,欢迎指正!
感恩能与大家在华为云遇见! 希望能与大家一起在华为云社区共同成长。
\
【华为云至简致远】有奖征文火热进行中:bbs.huaweicloud.com/blogs/35280…
想要了解更多华为云产品相关信息,请联系我们:
电话:950808按0转1