数据结构论坛

首页 » 分类 » 常识 » 语音识别算法工程师核心能力
TUhjnbcbe - 2024/6/14 17:26:00

每个行业都有各自要解决的特定工程问题。工程师的日常工作就是不断解决问题,最关键的能力是解决工程问题的能力,直接的体现是设计方案的优劣和方案实施的效率。要理解工程师的能力包括什么,就是说要明确以下两个子问题:

1)工程师要解决的问题是什么?

2)怎么解决当前和未来的问题?

本文分析语音识别(ASR)算法工程师的能力要求,也许其他行业、方向有一定相似性,但作者见识有限,不敢妄言什么通用的能力要求,只谈谈个人对ASR这个方向的一些理解。另外,我打算只讨论个人如何承担语音识别算法研发这件事情的能力,至于工作中的职业规划、人际交往、管理一类的能力不在本文讨论范围。

丨作者:林泽华

本文目录

1.硬件和软件工程师职责

2.语音识别算法工程师职责

3.语音识别算法工程师能力要求

3.1知识体系

3.2工程能力

3.3业务能力

3.4行业思维

4.如何提高能力

5.总结

6.参考资料

01硬件和软件工程师职责

能力要求是一个比较抽象的概念,需要结合行业和岗位来具象化。

1)传统制造行业中谈论较多的是工程设计和工程制造的问题。例如零件制造厂的研发工程师要根据客户需求和行业标准经过结构选型、绘制图纸、仿真计算、实体测试、生产设计等系列环节。工程师要灵活地运用结构力学等知识,设计产品并分析和优化设计方案,要掌握业内的辅助设计软件、结构受力计算软件的使用,要熟悉行业标准、生产工具和工艺。在工作中,工程师会和需求方、品质部、生产部等相关人员打交道。在产品完工后,也要负责产品后续质量缺陷跟踪和优化工作。

2)互联网、软件行业对应的也有工程设计和工程实现的问题。例如软件开发工程师需要根据产品需求和设计规范设计应用软件的架构、然后编码实现程序,点检测试,并打包集成。工程师要灵活地运用软件工程相关知识,设计产品并分析和优化设计方案,要掌握常用编程语言、框架和软件,要熟悉行业规范、软件集成和部署。在工作中,工程师会和产品经理、测试、服务端和客户端的开发运维人员等打交道。在产品上线后,也要负责产品后续的缺陷跟踪和优化工作。

3)信息制造业则囊括上述两者。例如大部分手机、IoT设备公司,除了生产设计部门,还会配有软件研发部。其中的工程师类型也相对多样化。有人说软件工程师不能算工程师,我个人的看法是软件工程和硬件工程只是行业不同、产品的形式不同,在实际工作中对工程师的工作流程和方法的要求是相近的。数字经济的高速度发展使得软件工程产品和人们的生活越来越密切,软件工程师起到的作用也越来越大了。

02语音识别算法工程师职责

从工作内容看,语音识别算法工程师负责的是软件产品研发的一个模块,工作产出是提供高效的ASR算法库给到软件集成人员。那么什么叫高效的ASR算法呢?怎么开发出高效算法呢?高效可以从几个维度来看:

贴合用户场景,就是说ASR算法在功能上是否可以满足用户使用,比如用户要求的是流式、实时的语音交互,还是说是命令词识别,用户高频使用闲聊话术,还是说是搜索话术。

效果要好,在不同噪声环境、用户口音、专有词汇等条件中准确率要尽可能高。

性能要高,比如响应速度要快,移动端ASR要求资源占用和耗电要尽可能少,云端ASR要求并发量尽可能高。

稳定运行,算法崩溃情况少,以及出现问题能及时发现并修复。

扩展性好,在未来一段时间内对新功能的兼容性好,并且算法是符合技术发展趋势的。

实现高效的ASR算法,就要求工程师做到几个方面的事情:

熟悉产品需求,了解用户诉求,从而选用合适的算法方案。

熟悉ASR算法,能够处理数据、实现算法开展实验,并对算法做相应改进以适配功能需求、优化不同场景的识别准确率。

了解ASR的实现细节,比如数据处理、声学模型、语言模型、解码参数优化等等。

选取的算法方案要足够成熟,要有合理的监控和容错机制。

对ASR的技术发展和业内方案有所了解。

和上下游的良好协作。

等等...

03语音识别算法工程师能力要求

要做到以上的这些事情,需要什么能力呢?我的看法是,可以归为四类能力,包括:知识体系、工程能力、业务能力、行业思维。其中前三个是基础,最后一个是提升。

3.1知识体系

知识体系包括通识基础和领域知识。通识基础是指基础学科知识,如微积分、统计学、计算机体系结构、机器学习等。领域知识指语音识别涉及的知识和相关研发工具,如信号处理理论、GMM-HMM原理、语言模型、端到端语音识别算法。一般来说,通识基础越扎实,掌握领域知识越快。

知识体系具有广度和深度两个维度。广度是指掌握的知识类型数量,既了解语音信号处理又了解语音识别,比只了解语音识别的人知识面更广。深度是指对某一知识的细节理解,比如说语音识别知识的深度,可以看是否熟悉传统和前沿算法原理、算法适用场景、算法适配和改进思路、技术发展历史和趋势。

3.2工程能力

工程能力这个说法可能不太严谨,因为一个工程师的能力按理说应该就叫工程能力。这里细化了一下,说的工程能力是工程师能力的其中一个维度,指按照业务需求实现算法方案的能力,可以说是把自己知识体系的应用到业务的能力。这里主要讨论两个方面:

1)研发工具的使用:主要指编程语言和框架的使用和修改,比如选择C/C++还是Java来做服务端、客户端引擎开发,神经网络推理选用开源的tflite、mace还是自研框架,算法实验选用pytorch是否会更方便数据处理、模型训练和模型导出,语音识别解码器是否复用kaldi的faster-decoder,如何加入自己改进的解码算法,等等。

2)工程实践的经验:包括数据的采集和处理是否合理、代码风格是否规范、文档是否全、算法复杂度与数据结构是否合理、设计模式的选用对代码可读性和扩展性的影响、数据和训练结果能否方便可视化、算法崩溃之后能否快速Debug,等等。

3.3业务能力

顾名思义,业务能力是指算法工程师处理好项目相关任务所需要的能力。在语音识别算法工程师的日常项目中,经常要做的事情包括:沟通项目需求,要定义好算法场景、效果和性能指标、项目时间节点等;调研、设计和开发算法方案;和开发人员对接算法集成工作、合作排查问题等;和测试人员交流算法测试细节等等。

其中算法开发在工程能力部分描述,其他可以归纳为以下两类:

1)业务理解能力:是指算法工程师能否准确把握用户需求,做出来的东西是否是用户需要的。这点在算法研发中比较重要,目前用户对人工智能的期望值普遍偏高,对语音产品的期望也是如此,然而语音识别技术还有许多难点没有解决,在许多场景还达不到用户的期望效果。如何做出让用户满意的效果,就需要工程师在需求定义的充分考虑场景特点,多从用户角度、用产品思维看问题。

2)项目开发能力:包括流程规范、方案设计、团队协作等。其中流程规范是指项目的需求和技术评审、开发、测试、部署、复盘等环节应该合理。方案设计要求算法工程师设计的方案要满足需求,并且方案要成熟稳定、具备扩展性、监控报警机制等要完善。团队协作是指和上下游、团队内部的协作,有一些模式比如瀑布式、敏捷式等。

3.4行业思维

语音识别的研究历史相对比较悠久,但是直到最近十年才出现较大突破,走向市场,也就是说语音识别产品乃至语音行业还是很年轻的,有很大的探索空间。语音识别算法工程师即是开发人员,要面向市场要做产品,也是研究人员,做语音技术和行业发展的星星之火。如果说前面几项能力是为了解决当前问题,那么行业思维就是有助于解决将来的问题。

在这一层次上,我们要了解语音识别技术发展趋势、产品形态、同行竞品、用户行为、商业模式等。一方面,这对个人拓宽眼界和提升格局有莫大帮助,另一方面这也对上述三个能力提升有帮助,登高望远,才知道自己知识体系需要补充什么、未来的工程开发形式为何、以及如何提高业务效益、如何让自己设计的技术方案不落人后。

04如何提高能力

我们要明确自己希望加强哪几项能力,一方面,要有计划重点提升,个人通常是没有这么多精力全面同时提升的,再者,无所不备则无所不寡;另一方面,我们的工作对业务人员的能力要求大都各有侧重。

我们国家推广知行合一、“产学研”相结合的教育方式,我认为这种模式也是很适合用于个人能力提升的。语音识别算法工程师本身处于产业界,并且或多或少进行算法研究工作,可能系统的知识学习时间较少。可以从这三个方面作为切入点规划自己的能力提升。

具体到措施,个人认为:

1)知识体系上,要多看经典的书籍和论文,还有写的很棒的博客文章。工具使用可以快速掌握,但是知识体系的建立不是三五天可以完成的,书山有路勤为径。我们在校期间上课学习,很大程度上就是在建立自身的知识体系。

2)工程能力上,在研发工具学习中需要多实践、多总结;在工程经验提升方面要多看行业内的最佳实践,例如google的编程规范、阿里java开发规范等等;对于实现的算法,要多问问如果出现了崩溃问题怎么办,还有没有复杂度更低的算法,这个代码可读性如何等等。也有一些不错的思考,比如[1]。

3)业务理解上,要把自己当成用户,去体验自己的产品,从中发现问题。流程规范和团队协作方面要结合公司团队来谈。方案设计可以参考[2][3]。

4)行业思维上,可以多看看行业的分享,目前我也见到一些很好的文章,比如[4][5][6]。

在业务能力和行业思维,就我自身而言我是认为做得不够好的,后续有些心得再补充。另外,独学而无友,则孤陋寡闻,在提升能力过程中,要找到志同道合的人,相辅相成。

05总结

本文讨论了我认为的语音识别算法工程师的能力包括哪些方面,主要是想看看自己的定位和后续能力提升方向。

关于其他一些能力,有些参考资料,如[7][8]等等。

06参考资料

[1]MLDEV[6]

浅谈算法工程师的工程能力

[2]技术方案设计的方法论及案例分享-AIQ

[3]阿里巴巴淘系技术:如何做好跨团队协作项目?

[4]陈孝良:为什么连BAT都做不好智能语音的商业化?

[5]华来知识:语音识别概论

[6]网易智能:中国语音产业的江湖史

[7]诸葛越:关于算法工程师职业发展的思考

[8]张俊博:“企业需要什么样的语音人才”座谈会实录

1
查看完整版本: 语音识别算法工程师核心能力