当前位置: 首页 > news >正文

手机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.dtcms.com/a/268140.html

相关文章:

  • Jailer:一款免费的数据库子集化和数据浏览工具
  • ragflow本地部署教程linux Ubuntu系统
  • Android studio在点击运行按钮时执行过程中输出的compileDebugKotlin 这个任务是由gradle执行的吗
  • 《前端路由重构:解锁多语言交互的底层逻辑》
  • 【Linux笔记】Linux的常见命令(部署Java程序)
  • 基于大数据的高效并行推荐系统
  • VSCode+arm-none-eabi-gcc交叉编译+CMake构建+OpenOCD(基于Raspberry Pico RP2040)
  • C 语言指针与作用域详解
  • 百度文心大模型 4.5 开源深度测评:技术架构、部署实战与生态协同全解析
  • Gitee DevOps:全流程自动化的效率革命
  • DeepSORT算法流程详解
  • 基于Flask+Jinja2的快捷教务系统(后端链接到新版正方教务系统)
  • k8s-服务发布基础
  • 数据结构实验习题
  • 定时器和守护线程
  • 【Guava】1.0.设计虚拟机的方向
  • tensorflow武林志第二卷第九章:玄功九转
  • 广东省省考备考(第四十天7.6)——资料分析(第八节课)
  • Python Bcrypt详解:从原理到实战的安全密码存储方案
  • 【C++】C++四种类型转换操作符详解
  • 【Note】《Kafka: The Definitive Guide》第一章:Meet Kafka
  • LeetCode--41.缺失的第一个正数
  • get: ()=>state 和get: ()=>{state}
  • Java 集合
  • ClickHouse 全生命周期性能优化
  • Java 大视界 -- Java 大数据机器学习模型在金融衍生品创新设计与风险评估中的应用(335)
  • 人工智能在软件开发领域的应用优势劣分析及应对策略
  • js event.preventDefault()的作用
  • Web前端开发-HTML、CSS
  • 【从0-1的CSS】第3篇:盒子模型与弹性布局