本系列具体介绍可以参见基础篇。这篇是系列第二篇,篇幅相较于基础篇会比较短,因为 Nemo 真的是一个很好用的库。
创新互联专注于企业网络营销推广、网站重做改版、攀枝花网站定制设计、自适应品牌网站建设、H5高端网站建设、商城网站定制开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为攀枝花等各大城市提供网站开发制作服务。该篇主要分为三个部分:
ASR:自动语音识别技术,Automatic Speech Recognition 的缩写,其目的是将人的语音转化为文字。在各大社交软件以及输入法中已经是普遍可见的应用。
以 Sky Hackthon 比赛理念出发,比赛通常是构建一个可以应用于实际生活中的 AI 小工具,那么日常生活中,最为常见的沟通手段肯定就是使用对话交流。可以说, ASR 技术可以说是构建 AI应用中必不可少的一环。
在 Sky Hackthon 的比赛中,通常使用 Nemo 进行 ASR 模块的构建,从官网页面我们可以得知:
NVIDIA NeMo 是一个框架,用于借助简单的 Python 界面构建、训练和微调 GPU 加速的语音和自然语言理解 (NLU) 模型。使用 NeMo,开发者可以创建新的模型架构,并通过易于使用的应用编程接口 (API),在 NVIDIA GPU 中的 Tensor Core 上使用混合精度计算对其进行训练。
借助 NeMo,您可以构建用于实时自动语音识别 (ASR)、自然语言处理 (NLP) 和文本转语音 (TTS) 应用(例如视频通话转录、智能视频助理以及医疗健康、金融、零售和电信行业的自动化呼叫中心支持)的模型。
而正如其宣传的那样,Nemo 的使用其实真的很简单很简单,做好数据收集和模型训练,在 Sky Hackthon 一定能拿到好的结果!
数据收集与处理机器学习与深度学习的相关人士肯定都听过一句话:数据决定上限,模型抬高下限。因此在 ASR 篇中,重点会讲如何收集与处理数据集,保证收集到足量足质的数据集。
数据要求数据基本要求:单声道、WAV格式、44100采样率、普通话、内容完整、尽量无噪声。
数据额外要求:数据越多越好、发音尽可能多元化(主要指年龄、性别)。
数据收集方案这里提供几个方案供大家参考,视自己情况选择方案进行数据收集。
方案一:自己录制。
自己参赛,自然应该 Push 自己,队伍内成员对语音内容反复录制3-5条并不会导致数据过分拟合,特别是每个人语速、语调都是可以人为控制进行变换的,可以视为单独录制的。同时,如果队伍成员内有喜欢配音的小伙伴,那我只能说,声优都是怪物,完全可让他们多录一点。
方案优点:质量有保障、来源很稳定、重复录制可以获取大量数据。
方案缺点:音色单一、数据内容同质性高、可能过拟合。
方案二:呼朋唤友。
可以呼唤课题室内的小伙伴,或者是同班同学,每个人来帮忙录制一句,积少成多,也可变成非常大量的数据集。当然,对小伙伴们要求就不能太高,尽量提前做好准备工作,比如调整好设备,设置好参数,让小伙伴们过来简单说两句话就ok,大家一般都是不会拒绝的。如果是要线上通知朋友,一定要提前做好教程,告知如何录制有效的数据集,避免白费功夫。
方案优点:质量可能略低于方案一,但是相对有保证、音色更加多样,过拟合可能性降低。
方案缺点:可能数量不足、适合线下场景、需要一定社交与沟通能力。
方案三:撒钱大法。
该方案需要借助QQ,适合有群管理的,或者有很多很多群的,又或者有诸多线上朋友的同学,使用QQ语音红包,可以让大家为了抢红包而为你发送语言,而你只需要提前打开 QQ 保存音频的文件夹(位于QQ存档目录/QQ号/Audio
),然后就可以等着收文件了!
方案优点:收集速度快、收集数量大且音色丰富。
方案缺点:需要消耗一定的金钱、可能被群管理员移出群聊、质量低,需要二次过滤保证可用性。
使用提示:
1.收获的文件名称均为乱码,需要根据时间排序后提取可能的文件,然后进行挨个过滤,建议做好准备统一处理
2.收获的文件并非 WAV 格式,也非 44100 的采样率,可以考虑使用格式工厂进行批量转换。
3.如果录音的人太快,可能录制到开始时 滴 的一声,如果比较熟可以考虑重新录,不太熟只能废掉了。
4.录制过来的文件可能存在大量的方言、或者带有底噪的,前者建议直接删除,后者请视情况而定。
方案四:API合成。
可以使用诸如 百度、讯飞、腾讯等的 API 接口,生成不同的 语音内容,然后使用 ffmpeg 进行格式转换之后加入训练。该方案来自于 恺 在第六届比赛中的帮助,所以请说:谢谢你,恺!
方案优点:数据来源稳定、质量较好。
方案缺点:需要一定的 Coding 能力和文档阅读能力、反复使用的时候可能需要花费小额金钱购买、需要格式转换。
关于 ASR 数据收集的一些小想法:
相比于数据收集,数据的处理要简单很多,根据时间上的顺序来讲,数据处理分为以下几个步骤:
librosa
包获取时长,并根据你自己的方式确定语音内容(比如使用不同文件夹表示不同的语音内容),然后写入标注文件中。在完成上面步骤之后,数据就充分可用了,将接下来进入模型训练的环节。
模型训练与验证比赛官方提供的 Notebook 足以完成基础的训练,以下操作是在基础训练之上,保证 ASR 部分有足够的准确率。
模型训练当准备好数据集并放入指定位置之后,我们就要准备训练了,在这里主要讲解如何更换一个可用的模型进行训练。
nemo_asr.models.EncDecCTCModel.list_available_models()
,该方法可获取到当前版本全部的可用的 ASR 模型。验证的思路其实比较简单:使用代码跑一遍全部的数据集,看看有多少的数据能拿到 1 分的满分,如果绝大部分数据都无法拿到 1分,我们重新检查数据集,确定数据集毫无问题之后重新训练即可。
但是,当只有小部分无法拿到 1 的满分的时候,一般都是数据上出现问题,从我个人经历出发,分为以下情况:
总结而言:使用 Nemo 训练比较省心,只要准备好数据,挑选正确的模型,就可以完成一次良好的训练。
结语得益于使用 Nemo,ASR 的整体流程相对简单,更多的时间还是在收集数据与处理数据上,因此, ASR 部分的完全可以由一个人单独负责全部,其他人根据其指挥进行一定的数据收集协助即可。毕竟数据收集环节多一个人多一份力。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧