手机断网离线使用FunASR识别麦克风语音内容
--本地AI电话机器人
上一篇:阿里FunASR本地断网离线识别模型简析
下一篇:手机无网离线使用FunASR识别手机历史通话录音
- 一、前言
继上一篇《阿里FunASR本地断网离线识别模型简析》和前面几篇ASR相关理论的叙述,本篇章中,将阿里FunASR的语音识别整合到Android应用中,使用手机麦克风中捕获到的语音数据进行简单的ASR语音文字识别,将ASR识别的结果文字,按照时间顺序展示到界面的列表上进行排列展示。
由于麦克风捕获的语音数据可能会存放为wav或mp3文件,在识别检测的结果中为了便于录音回放时根据播放的时间戳来定位到对应的ASR文字内容。在ASR展示和本地存储时,针对每一段带标点的最终检测结果,前面均加上时间戳形成【时间戳毫秒]文字内容】这样的展示格式,便于后续进行加工和处理。
体验和下载地址:
拨号器SDK示例app:http://120.78.211.195:8060/sdk/SdkDemo.apk
USB蓝牙配件购买路径(参考):https://item.taobao.com/item.htm?_u=pk10l4ccbcd&id=649368472986
- 二、功能入口
我们在Android应用(拨号器SDK示例app)中,主界面【功能设置】区域增加了“通话对方声音转文字”的复选框。勾选该复选框即可开启FunASR的本地断网离线ASR识别的功能。
功能开启后,主界面将显示【通话声音实时ASR转文字】的列表展示区域,如下图所示:
为了便于录音回放时根据播放的时间戳来定位到对应的ASR文字内容。在ASR展示和本地存储时,针对每一段带标点的最终检测结果,前面均加上时间戳形成【时间戳毫秒]文字内容】这样的展示格式(如图中的【4000]数据也还可以..】内容即为这一段话是点击“麦克风测试”按钮后,第4秒开始说话的ASR解析内容)。
- 三、操作和ASR识别的方法
主界面的【通话声音实时ASR转文字】区域,只有一个按钮【麦克风测试/停止录音】。用户可以在ASR功能加载完毕后,手动点击该按钮,进行手机麦克风语音数据的ASR转文字的识别。
在识别过程中,用户也可以自由的取消勾选【功能设置】区域的“通话对方声音转文字”的复选框,应用会自动停止录音并释放ASR模块占用的CPU和内存资源。(运行内存会从983Mb降到250Mb左右)
- 四、ASR识别的前置条件
由前文《阿里FunASR本地断网离线识别模型简析》可知:App采用动态加载的方式,将FunASR的识别功能拆分为【JNI动态库】【FunASR的模型文件】两部分内容。
在App中,默认将上述两部分的所有文件,下载到手机【/sdcard/ade/】目录下解压存放。使用时再逐个动态加载到App的运行内存,进行ASR模块的初始化。正常情况下手机sdcard目录中解压后的文件目录组织如下:
Android应用中开启ASR功能时会尝试从sdcard路径中检测是否存在对应的so库,若动态库或模型文件不存在,则弹出对应的提示对话框和下载进度款,如下图所示:
如果手机中之前并未下载,初次下载动态库速度很快(约8.1Mb)。但模型文件会下载的很慢(约667Mb),按1Mbps的下载速度,最少需要667/60s=11分钟。
笔者个人建议,如果存在多个手机设备,可以使用电脑将动态库和模型文件的zip压缩包先下载到本地电脑。然后在电脑解压后,使用adb或本地网络传输将文件内容拷贝到每个手机的【/sdcard/ade/】目录。这样可以加快多个手机设备的ASR依赖文件的加载。
- 五、总结
本文使用前面几篇文章中阐述的理论,简单的将阿里FunASR的模型装进普通的Android手机中,并使用手机麦克风来体验ASR语音文字识别的效果。经检验,识别的响应速度和文字内容的准确率相当的不错。
感兴趣的读者朋友,也可下载对应的Android应用,实际进行ASR效果的体验(识别时可以完全断开Wifi和4G/5G等网络),因为本篇章内容不依赖网络即可正常做ASR识别。