对学术界而言,通过训练数据,利用特定算法训练出一组声纹识别模型,并在测试数据上验证其性能——这些工作加在一起,足以构成一个完整的研究项目。如果在数据处理或者训练算法上再有一些创新或者改动,并加入一些其他方法进行对比的实验结果,那么这项工作足以写成一篇内容丰富的研究论文,发表在学术会议或期刊上。
不过,对业界而言,拥有一个性能不错的声纹识别模型,仅仅是万里长征的第一步。要将声纹识别技术部署到实际好用的产品中,还有着无数的工程问题需要解决,例如系统的架构、模型的发布、软件的维护,以及用户与产品之间的交互,等等。本章将对一些最常见的工程问题进行介绍,并简要阐述三种部署方案的基本架构。
在介绍声纹识别中的工程问题之前,考虑到部分本书读者可能没有任何实际的产品级别的软件开发经验,笔者先对一些软件工程中的基本概念进行非常简要的介绍。尽管这些概念可能与声纹识别本身关系不大,但是对将来打算进入企业进行实际产品开发的读者来说,这些概念非常重要,甚至可能决定一个项目或者一款产品的成败。
软件工程本身作为一门学科,其涵盖的内容十分广泛,因此软件工程方面的书籍与教程也浩如烟海。对于时间有限的读者,可以考虑简要阅读最著名的《程序员修炼之道:从小工到专家》一书[106],或者直接阅读谷歌公司语音部门工程师Fergus Henderson所著论文Software Engineering at Google [107]。
1. 软件的规模与生命周期
对于学术研究或者发表论文而言,