手機FunASR識別SIM卡通話占用內存和運行性能分析

手機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模型文件,體驗通話和音質效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88022.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88022.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88022.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

虛幻引擎Unreal Engine5恐怖游戲設計制作教程,從入門到精通從零開始完整項目開發實戰詳細講解中英字幕

和大家分享一個以前收集的UE5虛幻引擎恐怖游戲開發教程,這是國外一個大神制作的視頻教程,教程從零開始到制作出一款完整的游戲。內容講解全面,如藍圖基礎知識講解、角色控制、高級交互系統、高級庫存系統、物品檢查、恐怖環境氛圍設計、過場動…

多人協同開發時Git使用命令

拉取倉庫代碼 # 拉取遠程倉庫至本地tar_dir路徑 git clone gitgithub.com:your-repo.git target_dir # 默認是拉取遠程master分支,下面拉取并切換到自己需要開發的分支上 # 假設自己需要開發的分支是/feature/my_branch分支 git checkout -b feature/my_branch orig…

線性表——雙向鏈表

線性表——雙向鏈表1. 雙向鏈表的實現1.1 簡單圖例1.2 結點的定義1.3 新結點的創建1.4 鏈表的初始化1.5 結點的插入1.5.1 頭部插入(頭插)1.5.2 尾部插入(尾插)1.5.3 任意位置(前)插入1.6 結點的刪除1.6.1 頭…

Java后端技術博客匯總文檔

文章目錄 前言Java后端匯總鏈接Java基礎知識點數據結構算法(Java實現)算法知識點合集算法刷題算法競賽AcWing課程藍橋杯AB組輔導課合集(更新中…) 源碼分析redission 數據庫SQL ServerMySQLRedis -Canal JUC并發編程JVMNetty日志框…

QT 菜單欄設計使用方法

目錄 常用設置函數 多個QAction的單選設置 ???????菜單相關類 ??????? 系統菜單的生成和響應 使用代碼添加系統菜單 使用UI設計器設計系統菜單 使用Qt設計及界面時,常用的兩種方式添加菜單,第一使用UI界面添加,第二種 在…

AIGC領域AI藝術,打造個性化藝術作品

AIGC領域AI藝術,打造個性化藝術作品 關鍵詞:AIGC、AI藝術、生成對抗網絡、個性化創作、深度學習、藝術風格遷移、創意計算 摘要:本文深入探討了AIGC(人工智能生成內容)在藝術創作領域的應用,重點分析了如何利用AI技術打造個性化藝術作品。文章從技術原理出發,詳細解析了生…

基于Flask+Jinja2的快捷教務系統(后端鏈接到新版正方教務系統)

快捷教務系統(Easy Educational Administration Management System, EasyEAMS) 項目簡介 EasyEAMS 是一個基于 Flask Jinja2 的現代化教務系統 Web 應用。學生可通過網頁端登錄,在線查詢個人信息、成績、課表、學業生涯、通知、選課等。系…

EDM自動化與出海獨立開發實用教程

隨著互聯網全球化發展,越來越多的獨立開發者(Indie Developer)選擇將自己的產品推向海外市場。如何高效地獲客、激活用戶、提升轉化率,成為出海過程中必須解決的問題。EDM(電子郵件營銷)自動化,…

「日拱一碼」017 深度學習常用庫——TensorFlow

目錄 基礎操作 張量操作: tf.constant 用于創建常量張量 tf.Variable 用于創建可訓練的變量張量 tf.reshape 可改變張量的形狀 tf.concat 可將多個張量沿指定維度拼接 tf.split 則可將張量沿指定維度分割 數學運算: tf.add 張量的加運算 tf.su…

ARM DStream仿真器腳本常用命令

以下是ARM DStream仿真器腳本中常用的命令及其功能分類,結合調試流程和典型應用場景整理: ?? 一、連接與初始化命令 connect 建立與目標設備的連接,需指定接口類型(如JTAG/SWD)和處理器核心。 示例:conne…

vscode 調試unity

lanch.json { “version”: “0.2.0”, “configurations”: [ { “name”: “Attach to Unity”, “type”: “vstuc”, “request”: “attach” } ] }

金融IT入門知識點

銀行金融IT核心知識點全解析:架構、技術與實踐 一、金融IT的戰略地位與行業特性 金融IT作為銀行業務的核心支撐體系,其發展水平直接決定了銀行服務的效率、安全性與創新能力。截至 2025年,中國銀行業線上化業務占比已達97%,手機銀…

C++——手撕智能指針、單例模式、線程池、String

智能指針今天我們來學習一下C中的智能指針,如果有人不知道C中的智能指針的概念的話:C智能指針是一種基于RAII(Resource Acquisition Is Initialization,資源獲取即初始化)機制的高級內存管理工具,用于自動化…

Mybatis----留言板

基礎項目:留言板 截止到目前為止,我們已經學習了 Spring(只學習了DI)、Spring MVC、SpringBoot、Mybatis 這些知識了,已經滿足了做簡單項目的基本要求了,所以接下來我們就從0到1實現表白墻項目。 需求分析…

Web-API-day3 DOM事件進階

一、 事件流 1.事件冒泡 const fa document.querySelector(.father)const son document.querySelector(.son)document.addEventListener(click, function () {alert(我是爺爺)})fa.addEventListener(click, function () {alert(我是爸爸)})son.addEventListener(click, fun…

小波增強型KAN網絡 + SHAP可解釋性分析(Pytorch實現)

效果一覽一、傳統KAN網絡的痛點與突破 1. 傳統KAN的局限性 傳統Kolmogorov-Arnold網絡(KAN)雖在理論上有可靠的多變量函數逼近能力,但存在顯著瓶頸: 計算效率低:訓練速度慢于MLP,資源消耗大,尤其…

tomcat部署多個端口以及制定路徑部署-vue3

vue3項目tomcat部署記錄 使用hash路由 字符串拼接的圖片地址可以使用import.meta.env.BASE_URL 默認8080 如果部署地址為8080/xc 則設置 vite.config.js中設置base為’/xc/’ outDir設置為xc 打包產物直接拖到webapps目錄下 如果另開一個端口 如8081 設置根目錄訪問 conf/ser…

LeetCode三數之和-js題解

給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i ! j、i ! k且 j ! k ,同時還滿足 nums[i] nums[j] nums[k] 0 。請你返回所有和為 0 且不重復的三元組。 注意:答案中不可以包含重復的三元組。 示例 1&…

Flink SQLServer CDC 環境配置與驗證

一、SQL Server 數據庫核心配置 1. 啟用 CDC 功能(Change Data Capture) SQL Server CDC 依賴數據庫級別的 CDC 功能及表級別的捕獲配置,需按以下步驟啟用: 啟用數據庫 CDC -- 以管理員身份連接數據庫 USE master; GO-- 檢查數…

軟考(軟件設計師)存儲管理—設備管理,磁盤調度

I/O軟件的核心目標是管理硬件差異、提供統一接口、實現高效可靠的數據傳輸。 核心目標: 設備無關性: 應用程序無需關心具體硬件細節。錯誤處理: 處理硬件錯誤和傳輸異常。同步/異步傳輸: 支持阻塞(等待完成&#xff09…