音頻嵌入式AI概述
我們日常生活中會接觸到很多便攜式音頻設備,包括藍牙音箱、TWS耳機、智能手表等等,隨著AI技術的發(fā)展,越來越多的便攜式音頻設備中也開始加入相關的功能,包括AI降噪、語音喚醒、關鍵詞識別、聲紋識別等等,這些功能一般都是在本地實現(xiàn)。由于AI算法的復雜度高,計算量相較于傳統(tǒng)方法大得多,這就給相關企業(yè)和研發(fā)人員帶來不小的壓力。
一、算法預研
通過軟件工具實現(xiàn)算法,傳統(tǒng)方法一般用MATLAB比較方便,不過MATLAB比較貴,一般企業(yè)不會買或者買幾個共享號,用起來比較麻煩,如果只寫腳本不用Simulink,可以用Octave(免費)進行替代。
AI算法一般用Python來實現(xiàn),常用搭配為Pycharm+Anaconda,Pycharm用來寫腳本,Anaconda用來搭建環(huán)境。如果是在Linux系統(tǒng)上工作的話用Anaconda搭建環(huán)境,然后直接運行腳本就好了。
二、算法復現(xiàn)
對于企業(yè)來說,僅僅實現(xiàn)AI算法是沒用的,還要能夠落地,能在板子上跑起來。有一些比較好的芯片,像高通、英偉達之類的,這些芯片擁有神經網(wǎng)絡推理引擎,把模型加載進去就可以運行起來。但是音頻芯片一般都是低功耗MCU,這類芯片都沒有推理引擎,所以要用C語言復現(xiàn)算法過程,其中的難點毫無疑問就是神經網(wǎng)絡的計算過程。
三、算法優(yōu)化
一般神經網(wǎng)絡計算都是浮點計算,這在板子上跑會很慢,根本跑不起來,所以需要做定點化,而且芯片上的內存一般都很緊張,需要對神經網(wǎng)絡參數(shù)做量化處理。神經網(wǎng)絡的量化分為后量化和感知量化,感知量化是指訓練過程中進行量化,后量化是指訓練完成后對參數(shù)進行量化,最新版本的TensorFlow支持感知量化和后量化,不過我一般是在訓練完成后手動對參數(shù)進行量化。
除此之外,一些MCU平臺,比如ARM、HIFI等都有各自的內聯(lián)函數(shù)和匯編,主要是通過并行運算來實現(xiàn)速度上的優(yōu)化,我沒做過基于匯編的優(yōu)化,但是用過ARM和HIFI的內聯(lián)函數(shù)進行優(yōu)化。ARM主要有SIMD和NEON兩類指令集,其中SIMD可以做兩個和四個的并行計算,NEON能做更多的并行計算,但是NEON不是所有版本的ARM芯片都能用。HIFI平臺有多個版本,越新的版本優(yōu)化空間越大,像HIFI2可以做兩個和四個的并行計算,HIFI5可以做四個和八個的并行計算,優(yōu)化效果也更明顯。