语音识别pipeline建设

简介: 和其他机器学习一样,语音识别是一个science和engineer美妙结合的任务。Science推动语音识别基本技术的升级,engineer扩充语音识别的场景和语言。本节主要讨论在机器学习的engineering方面我们做了什么。

语音识别技术经过三十几年的发展,识别率的提升使语言识别技术越来越贴近我们的生活。各大公司都在语音识别的产品和技术上大有投入。语音输入法成为IOS,Andriod,YunOS手机输入法是必不可少的按钮,智能助手如Siri,Google Now,Cortana,YunOS语音助手都把speech和NLP结合在一起作为智能助手的形式提供给大家。家庭娱乐如xbox,apple tv, 天猫魔盒语音的输入让人机交互更容易。

 

和其他机器学习一样,语音识别是一个science和engineer美妙结合的任务。Science推动语音识别基本技术的升级,engineer扩充语音识别的场景和语言。本节主要讨论在机器学习的engineering方面我们做了什么。

 

从语音识别内部的技术角度,大家已经逐渐的建立了以下的一些共识:

1.       真实场景的数据是王道。机器学习需要教科书,真实数据是最好的教科书。

2.       统计模型是state-of-the-art。

3.       先HMM训练再DNN模型是标准模式。


所以语音识别最标准的玩法就是下面这个循环:


e71b2f356c540201cb12ef64bc5e57feca889ffa


咱们先人工建立初始的数据库来build第一个模型。当然有市场的地方就有生意,所以有很多公司会卖自己录好的数据库,这样你就可以直接买现成的数据库。然后你训练好模型,测试发现没有问题,你就把你的模型上线做服务,然后你的用户用的时候就会有真实场景的录音,你选择需要的数据来标注,然后你就回到模型训练的过程。这个圈就转转转,然后在转的过程中你的识别率就提升了。

 

语音识别的当前技术对于不同的业务场景你需要业务场景匹配的数据你才能够拿到最好的识别。不同的语言我们需要建立不同的模型。所以你要是做M个业务的N个语言,然后每个场景里更新K遍模型,那么这个量就很大了。

 

我们建立pipeline的目的是为了强大的中后台来支持我们的业务需求,pipeline能够

  • 分布式:处理大规模数据需要分布式来加速,多业务模型需要分布式需要来支持。
  • 自动化: 提供数据处理,模型训练,测试等等的自动化。
  • 沉淀技术:固化我们在流程和算法上的提升。
  • 易扩展:易于扩展到新的业务和新的语音。

 

基于上面的图,pipeline需要支持下面的几种主要的功能:

  • 模型训练(AM:GMM+DNN, LM)
  • 模型测试
  • 自动化上线流程
  • 数据的筛选和处理

 

我们最终要达到的目标:用户给定配置文件说这是训练数据,这是我需要的模型的大小,这是我的测试集,我要用100台机器训练。然后pipeline就完成模型的训练和测试,然后发邮件告诉你模型好啦,识别率是多少,然后你点我要上线,然后模型就会在线上系统部署,然后线上测试自己完成,通过用户就有新模型用了。

 

这个最终的目的是庞大的,但是我们可以拆分成多个子步骤逐步完成。一套代码框架下写,然后就可以组合子步骤。在最终的任务完成之前,子步骤可以被单独调用。我们现在已经有不少子模块达到了自动化的程度,后面会继续完成其他子模块。

分布式的问题

语音识别的分布式是比较特殊的问题,所以这里单独讨论下。文本的分布式相对成熟,因为现在的很多分布式系统都是为文本处理而生的。但是语音是二进制文件,而且语音模型训练比较复杂,DNN模型需要GPU队列,DNN模型需要CPU队列,之间数据还要交换,如何把这些放到现有的分布式系统的框架里面是比较大的挑战。

我们在发展变化的过程中,经历几个阶段:

  • 第一阶段:基于物理机+ Gluster+OSS+GPU的模式
  • 第二阶段,基于MaxCompute集群+GPU集群的模式
  • 第三阶段,GPU集群和MaxCompute集群的合并 


第一阶段:基于物理机+ Gluster+OSS+GPU的模式

在这个模式下:

OSS用于存储数据和模型。

Gluster用于保存临时的计算数据,用于临时分布式计算交换使用。

CPU farm负责数据处理,GMM训练,DNN预处理,模型测试。

GPU farm用于DNN模型训练。

这个模式的好处是每块比较独立,开发成本小,在业务的早期可以满足我们的需要。但是问题是系统太杂,数据交换是问题,计算的可扩展性也是问题。

1bb6848e02a1da1cc133c9b90854da2cfd5df831

 

第二阶段,基于MaxCompute集群+GPU集群的模式

MaxCompute集群是分布式计算平台,但是如何让语音跑在上面是比较大的困难。比如Kaldi就有40多万行的代码,如果完全按照MaxCompute的框架重写是不现实的。

我们和MaxCompute团队合作基于MaxCompute volume的语音计算平台,关键的技术点当语音的job到MaxCompute运行的时候, scheduler先mount MaxCompute volume成为一个虚拟盘,然后现有的基于盘操作的代码就都可以已少量的改动来运行在MaxCompute里面了,还可以利用分布式的优势。基于这样的改动,我们系统的可扩展性有了很大的提升。

 

第三阶段,GPU集群和MaxCompute集群的合并

这个是我们希望将来达到的阶段。现在GPU集群和CPU集群式分别的系统,数据交换很麻烦。我们希望将来和其他团队合作完成这一步。

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
目录
相关文章
|
存储 人工智能 算法
【AI系统】计算与调度
本文探讨了计算与调度的概念,特别是在神经网络和图像处理中的应用。通过分离算法定义和计算组织,Halide 等工具能够显著提升图像处理程序的性能,同时保持代码的简洁性和可维护性。文章详细介绍了计算与调度的基本概念、调度树的构建与约束,以及如何通过调度变换优化计算性能。此外,还讨论了自动调优方法在大规模调度空间中的应用,展示了如何通过探索和预测找到最优的调度方案。
292 0
|
12月前
|
机器学习/深度学习 数据采集 数据处理
Pipeline基础语法
Pipeline是处理数据流和构建机器学习模型的重要工具,它能够简化代码、提高可读性并减少错误。通过本篇文章,读者应能掌握Pipeline的基本语法、使用方法及其在数据科学中的重要性。正确使用Pipeline将极大地提高机器学习项目的效率与可靠性。希望本文能为您的数据处理工作提供实用的指导和帮助。
1241 9
|
存储 JSON API
Elasticsearch Pipeline 详解
Elasticsearch Pipeline 详解
878 0
|
量子技术
量子计算与教育:培养下一代量子科学家
在21世纪科技浪潮中,量子计算正从理论走向实践,深刻影响科学研究、工业制造、信息安全等领域。本文探讨量子计算与教育的结合,旨在培养具备量子思维和创新能力的下一代科学家,为未来科技创新奠定基础。通过课程革新、跨学科教育、实践平台搭建及国际化视野培养等策略,激发学生兴趣,提供丰富教育资源,强化实践与团队协作,推动量子科学的发展。
|
设计模式 Java
Netty Pipeline详解!
本文深入剖析了 Netty 的管道(Pipeline)设计,Netty 是一个基于 Java NIO 的高性能网络应用框架。文章详细介绍了 Pipeline 的原理、源码及设计思维。Pipeline 作为事件处理链条,包含多个处理器,负责处理入站和出站事件。核心组件包括 `ChannelPipeline`、`ChannelHandler` 和 `ChannelHandlerContext`。Netty 通过链式结构和上下文管理实现了高效的事件传播机制,具备高吞吐量和低延迟的特点。本文还探讨了 Pipeline 的职责分离、链式处理、高内聚低耦合等设计原则,为高性能网络编程提供了宝贵的启示。
450 9
|
机器学习/深度学习 数据可视化 算法
机器学习中的回归分析:理论与实践
机器学习中的回归分析:理论与实践
|
安全 算法 Java
代码质量和安全使用代码检测提升
云效代码管理提供多种内置扫描服务,确保代码质量与安全性。面对编码不规范、敏感数据泄露、依赖项安全漏洞等问题,该服务从代码提交到合并全程保驾护航。不仅依据《阿里巴巴 Java 开发手册》检查编码规范,还利用先进算法智能推荐代码补丁,检测敏感信息及依赖包漏洞。用户可在每次提交或合并请求时选择自动化扫描,快速定位并解决问题,提升研发流程的稳定性与安全性。立即体验云效代码管理,保障代码健康。
323 12
|
安全 Android开发 数据安全/隐私保护
Android vs. iOS:移动操作系统的巅峰对决###
【10月更文挑战第18天】 本文深入探讨了Android与iOS两大移动操作系统的核心差异、优势与不足,从用户体验、应用生态、系统更新与安全性等多个维度进行了全面对比。我们旨在揭示两大平台背后的设计理念,帮助用户根据自身需求做出更明智的选择。Android以其开放性和高度可定制性著称,为开发者和用户提供了广阔的创新空间;而iOS则凭借其封闭的生态系统和严格的质量控制,提供了流畅且一致的用户体验。两大系统各有千秋,竞争与共生中推动着移动通信技术的不断进步。 ###
|
Android开发
android基础:Intents 和 intent-filter 的匹配规则
这篇文章详细解释了Android开发中Intent和<intent-filter>的匹配规则,包括Action、Category和Data的解析规则以及如何通过这些规则匹配隐式Intent。
632 1