语音识别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集群式分别的系统,数据交换很麻烦。我们希望将来和其他团队合作完成这一步。

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
目录
相关文章
|
敏捷开发 存储 开发工具
版本控制系统的选择:Git与SVN的比较
【8月更文挑战第14天】Git和SVN都是优秀的版本控制系统,它们各自具有独特的优势和适用场景。在选择版本控制系统时,需要根据具体的项目需求、团队特点和开发模式来综合考量。对于需要分布式团队协作、高效处理大型项目或采用敏捷开发模式的团队来说,Git是一个更好的选择。而对于传统团队、集中式开发或简单项目来说,SVN可能更加合适。无论选择哪种版本控制系统,都应该充分利用其提供的工具和功能来提高代码质量和开发效率。
|
12月前
|
机器学习/深度学习 数据采集 数据处理
Pipeline基础语法
Pipeline是处理数据流和构建机器学习模型的重要工具,它能够简化代码、提高可读性并减少错误。通过本篇文章,读者应能掌握Pipeline的基本语法、使用方法及其在数据科学中的重要性。正确使用Pipeline将极大地提高机器学习项目的效率与可靠性。希望本文能为您的数据处理工作提供实用的指导和帮助。
1247 9
|
存储 JSON API
Elasticsearch Pipeline 详解
Elasticsearch Pipeline 详解
880 0
|
设计模式 Java
Netty Pipeline详解!
本文深入剖析了 Netty 的管道(Pipeline)设计,Netty 是一个基于 Java NIO 的高性能网络应用框架。文章详细介绍了 Pipeline 的原理、源码及设计思维。Pipeline 作为事件处理链条,包含多个处理器,负责处理入站和出站事件。核心组件包括 `ChannelPipeline`、`ChannelHandler` 和 `ChannelHandlerContext`。Netty 通过链式结构和上下文管理实现了高效的事件传播机制,具备高吞吐量和低延迟的特点。本文还探讨了 Pipeline 的职责分离、链式处理、高内聚低耦合等设计原则,为高性能网络编程提供了宝贵的启示。
454 9
|
消息中间件 存储 Java
MQ线上消息乱序问题处理及场景详解
【11月更文挑战第22天】在现代分布式系统中,消息队列(MQ)作为核心组件,承担着异步处理、削峰填谷和系统解耦的重任。
838 1
|
人工智能 自然语言处理 机器人
MIT新研究揭秘AI洗脑术!AI聊天诱导人类编造记忆,真假难辨
麻省理工学院的一项新研究《基于大型语言模型的对话式AI在证人访谈中加剧虚假记忆》显示,使用生成式聊天机器人进行犯罪证人访谈会显著增加参与者的虚假记忆,且影响持久。研究设置了对照组、问卷访谈、预设脚本及生成式聊天机器人四种条件,结果显示生成式聊天机器人诱导的虚假记忆数量远超其他方法。尽管AI技术在效率和准确性方面潜力巨大,但在敏感领域需谨慎应用,并需进一步评估风险,制定伦理准则和监管措施。论文详细内容见[这里](https://arxiv.org/abs/2408.04681)。
394 2
|
机器学习/深度学习 数据可视化 算法
机器学习中的回归分析:理论与实践
机器学习中的回归分析:理论与实践
|
Android开发
android基础:Intents 和 intent-filter 的匹配规则
这篇文章详细解释了Android开发中Intent和<intent-filter>的匹配规则,包括Action、Category和Data的解析规则以及如何通过这些规则匹配隐式Intent。
639 1
|
机器学习/深度学习 数据采集 算法
机器学习基础:令你事半功倍的pipeline处理机制
机器学习基础:令你事半功倍的pipeline处理机制
机器学习基础:令你事半功倍的pipeline处理机制