从工做流程上分,对于音频算法工程师(其实不仅限于音频算法工程师)的任务工做分配在国外一般分为3层,人员需求也分为三类(杜比公司,德国的fraunhofor ,skype都是这样)算法
第一层是算法开发层,一般要求起码是博士,通常是完成对算法的建模,代码输出有多是matlab或是c代码,代码可读性和结构性未必很好,目的是实现算法的功能,好比回声消除,编解码设计,去噪等等。架构
第二层是算法重写和接口层,一般要求起码是硕士,通常完成C或是matlab代码的重写,写成可读性好结构性好的代码并完成接口设计。目的是从工程的角度能很方便的使用内部算法,并便于调试,因为是代码重写要求对信号处理能力有必定了解。框架
第三层是应用Demo开发层,调用第二层的接口设计Demo应用,完成对算法的演示。该层的目的是更好的演示算法的效果。Demo更炫。设计
可是在国内,这种状况几乎没法发生,由于国内音频工程师太少和公司需求的问题,通常的状况是一我的从头至尾的开发,要求工程师能覆盖第一到第二层,第三层有时也要作。这样的结果是工程师没法把精力放到算法开发上,代码效率也不高。可是要认可,这是国内的广泛现状,暂时没法改变。调试
从工程师的能力看,能够分红如下两级能力。接口
第一种能力:算法架构能力,要求对一个功能模块或复杂应用模块有必定的掌控能力,可以正向设计复杂结构的算法,要求对信号处理的各个方面多必定的了解,并也对该应用有必定的认识。开发
以AEC举例:要求能对AEC的原理和结构框架有清晰的认识(起码要有几年的专门算法经验和工做经验)。而且对AEC的主流框架,超前框架,落后框架都有了解。了解各类框架中的细节模块算法有必定了解,好比时频分析(FCT,QMF,FFT,小波等),对参数模型,分类模型有必定了解,对基因跟踪有必定了解,再结合综合经验才能从有从正向上解决问题的能力。工作流
第二种能力:从问题结果出发的算法解决能力,一般是单模型算法或是bug fix类算法需求。具备这种能力的工程师的特色一般是对某一个专项问题(单一算法或简单框架)有较高的认识,有必定的算法能力,可以从正向上解决通常的算法问题,并能从结果出发,针对特定结果找到问题,修改原来的错误或是提出改进方案。效率
以丢包补偿算法为例,要求对丢包的缘由进行分析,想办法弥补丢包形成的损伤,对原来的简单丢包模型进行改进,而丢包补偿算法从算法自己看不算是复杂算法(不排除能够用复杂算法实现)。音频
其余的相似动态音量调整,音乐语音的区分,啸叫抑制等问题都算该问题内。
通常对第一种能力的需求的要求要高于第二种,经验积累的时间也要更多。其实这种分类方法和通常软件工程师的分类方法差很少,也分构架师和普通工程师。只不过在算法开发内,由于从业人员相对较少的缘由,缺乏这样的总结(至少我认为,或者说国内是这样的)。
固然其余能力要求也是须要的。通常工程师必备的一些要求是要有的。
我的的一点点总结。