手機FunASR識別SIM卡通話占用內存和運行性能分析
--本地AI電話機器人
上一篇:手機無網離線使用FunASR識別SIM卡語音通話內容
下一篇:手機通話語音離線ASR識別商用和優化方向
- 一、前言
書接上一文《阿里FunASR本地斷網離線識別模型簡析》,我們其實在2023年底的時候輸出過一版基于離線FunASR的ASR轉文字方案。當時為了減少模型文件的數量和大小,只引入了【vad_res】、【asr_offline_res】這兩個模型文件,想嘗試減少Android應用需要加載的文件內容,進而提高加載速度并減少運行內存的占用。但后來實踐發現響應太慢了,體驗效果不理想,而且識別準確率也不太行。
在這一版本中,我們從從魔搭社區中搜索最新的ONNX模型庫,引入【punc_res】、【asr_online_res】這幾個能提高ASR識別準確度但體積比較大(運行時比較消耗內存)的模型文件。
初步估計,模型文件本身將從208Mb增長到667Mb,足足增加了460Mb(主要是【punc_res】標點符號庫增大了模型文件的大小)。
App運行內存從原先未加載ASR模塊的250Mb,加載舊版本ASR后為700Mb,加載新版本ASR后為990Mb,一下子遞增了很多。
通常,現在市面上普通的Android手機的運行內存大致為8G/16G/32G,極少部分較少的如樂視酷派金立這種能找到4G內存的。我們試著安裝過,識別效率基本相差不大,都是說話后兩三秒才能出文字。
本篇章中我們嘗試從內存占用和運行性能的角度,分析一下將FunASR的運行動態庫以及模型文件,直接加載到Android上進行本地解析是否靠譜。
魔搭社區中FunASR下載參考路徑如下:
ModelScope - 模型列表頁
體驗和下載地址:
智能撥號器App:http://120.78.211.195:8060/Dialer.apk
撥號器SDK示例app:http://120.78.211.195:8060/sdk/SdkDemo.apk
USB藍牙配件購買路徑(參考):https://item.taobao.com/item.htm?_u=pk10l4ccbcd&id=649368472986
- 二、實時流式+標點模型引入對性能的影響
經初步分析,把FunASR的【vad_res】、【asr_online_res】、【asr_offline_res】、【punc_res】這四件套都給引入App中進行ASR識別,確實能帶來體驗效果的提升。交互的友好性也能極大的增強。
但總體來說,感覺現階段的FunASR模型也只能在通話事后根據錄音進行質檢上發力,在實時語音流上,不太可能像“小愛通話”這種能快速解析出對方說話的內容,然后根據對話上下文形成應答TTS語音做反饋。
性能對比影響大致如下表所示:
僅離線ASR(舊方案) | 實時流+標點(新方案) | |
CPU占用 | 14%左右 | 11%-15%之間 |
內存占用 | 700-750Mb | 980-1100Mb |
識別準確率 | 中等,偶現錯別字但不影響理解 | 高,標點模型會做最終修正 |
反應速度 | 2-8s出文字,一口氣說的內容越長就需要等待越久。 | 2s左右出文字,但最終修正同樣依賴asr_offline_res模型輸出的結果做修正 |
- 三、AndroidStudio的Profiler性能分析
由于我們在【撥號器SDK示例app】界面中增加了可以隨時掛載和清除ASR識別模塊的操作入口,因此可以很容易的在AndroidStudio的Profiler界面中對App運行中CPU占用、內存分配情況、以及耗電情況進行圖形化的展示。
App加載so庫和ASR模型文件后,App運行的內存由250Mb增大到980Mb。CPU耗用大致為11%-15%之間,如下圖所示:
從運算性能上來看,這么點CPU耗用對于音視頻領域的應用而言完全不算個事。但內存耗用方面把所有的模型文件都加載到手機內存中,然后依賴手機CPU來進行ASR運算對于手機這小身板而言,算是個不小的負擔。
而且我們從最終實踐的效果來看,對于那種“新聞聯播”式的語音,一說話就巴拉巴拉停不下來的,asr_offline_res模型解析起來會急劇的增大文字的輸出時間。
- 四、總結
本文中嘗試從內存占用和運行性能的角度,分析一下將FunASR的運行動態庫以及模型文件,直接加載到Android后在CPU性能、內存耗用方面的使用情況。進而分析Android手機直接使用FunASR模型進行本地解析是否靠譜。
從結果上來看,目前選型的模型庫和算法,對SIM卡電話通話事后根據錄音進行質檢方面效果比較理想。但對于實時語音流,特別是像那種“新聞聯播”式的語音,一說話就巴拉巴拉停不下來的,FunASR在實時文字輸出上體驗效果不佳,總體解析的時延較久。
以上,大致為FunASR模型和算法裝載到小小的Android手機上進行無網離線識別的試驗效果。我們嘗試通過“將大象直接裝進房子里”的辦法來實現“直接喂香蕉并收集大象做功的力氣”這樣力大磚飛的用法。
有興趣的朋友或友商可以自行下載我們的App和ASR模型文件,體驗通話和音質效果。