天天看點

談音頻算法技術研發團隊建立

談音頻算法技術研發團隊建立

從工作流程上分,對于音頻算法工程師(其實不隻限于音頻算法工程師)的任務工作配置設定在國外通常分為3層,人員需求也分為三類(杜比公司,德國的fraunhofor ,skype都是這樣)

第一層是算法開發層,通常要求起碼是博士,一般是完成對算法的模組化,代碼輸出有可能是matlab或是c代碼,代碼可讀性和結構性未必很好,目的是實作算法的功能,比如回聲消除,編解碼設計,去噪等等。

第二層是算法重寫和接口層,通常要求起碼是碩士,一般完成C或是matlab代碼的重寫,寫成可讀性好結構性好的代碼并完成接口設計。目的是從工程的角度能很友善的使用内部算法,并便于調試,由于是代碼重寫要求對信号處理能力有一定了解。

第三層是應用Demo開發層,調用第二層的接口設計Demo應用,完成對算法的示範。該層的目的是更好的示範算法的效果。Demo更炫。

但是在國内,這種情況幾乎無法發生,因為國内音頻工程師太少和公司需求的問題,一般的情況是一個人從頭到尾的開發,要求工程師能覆寫第一到第二層,第三層有時也要做。這樣的結果是工程師無法把精力放到算法開發上,代碼效率也不高。但是要承認,這是國内的普遍現狀,暫時無法改變。

從工程師的能力看,可以分成以下兩級能力。

第一種能力:算法架構能力,要求對一個功能子產品或複雜應用子產品有一定的掌控能力,能夠正向設計複雜結構的算法,要求對信号處理的各個方面多一定的了解,并也對該應用有一定的認識。

以AEC舉例:要求能對AEC的原理和結構架構有清晰的認識(起碼要有幾年的專門算法經驗和工作經驗)。并且對AEC的主流架構,超前架構,落後架構都有了解。了解各種架構中的細節子產品算法有一定了解,比如時頻分析(FCT,QMF,FFT,小波等),對參數模型,分類模型有一定了解,對基因跟蹤有一定了解,再結合綜合經驗才能從有從正向上解決問題的能力。

第二種能力:從問題結果出發的算法解決能力,通常是單模型算法或是bug fix類算法需求。具有這種能力的工程師的特點通常是對某一個專項問題(單一算法或簡單架構)有較高的認識,有一定的算法能力,能夠從正向上解決一般的算法問題,并能從結果出發,針對特定結果找到問題,修改原來的錯誤或是提出改進方案。

以丢包補償算法為例,要求對丢包的原因進行分析,想辦法彌補丢包造成的損傷,對原來的簡單丢包模型進行改進,而丢包補償算法從算法本身看不算是複雜算法(不排除可以用複雜算法實作)。

其他的類似動态音量調整,音樂語音的區分,嘯叫抑制等問題都算該問題内。

一般對第一種能力的需求的要求要高于第二種,經驗積累的時間也要更多。其實這種分類方法和一般軟體工程師的分類方法差不多,也分構架師和普通工程師。隻不過在算法開發内,因為從業人員相對較少的原因,缺少這樣的總結(至少我認為,或者說國内是這樣的)。

當然其他能力要求也是需要的。一般工程師必備的一些要求是要有的。

個人的一點點總結。

繼續閱讀