Android手机无网离线使用FunASR识别麦克风语音内容

手机断网离线使用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识别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87656.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第五篇 线稿到高清修复:一步步教你用AI做出完美IP形象

大家好!上一篇,我们一起玩转了字体风格变换 ,让文字根据提示词进行自如变换,个性十足又充满创意! 如果你错过了那篇文章,别担心,赶紧点这里补课:Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第四篇 风格化字体大揭秘:从线稿到涂鸦,ControlNet让文字焕发新生…

Java网络编程:TCP/UDP套接字通信详解

TCP客户端套接字创建与使用 Socket类基础概念 Socket类的对象代表TCP客户端套接字,用于与TCP服务器套接字进行通信。与服务器端通过accept()方法获取Socket对象不同,客户端需要主动执行三个关键步骤:创建套接字、绑定地址和建立连接。 客户端…

VMware vSphere 9与ESXi 9正式发布:云原生与AI驱动的虚拟化平台革新

2025年6月18日,VMware正式推出其旗舰虚拟化平台vSphere 9及配套的ESXi 9操作系统,标志着企业级虚拟化技术迈入以云原生、人工智能(AI)和硬件加速为核心的新纪元。此次更新不仅在功能层面实现突破,更通过授权模式革新为…

汽车功能安全概念阶段开发【相关项定义HARA】2

文章目录 1 浅谈概念阶段开发2 功能安全概念阶段开发2.1 相关项定义2.2 危害分析与风险评估(HARA-Hazard Analysis and Risk Assessment) 3 关键输出与对后续阶段的影响4 总结 1 浅谈概念阶段开发 概念阶段开发是整个研发流程的起点和基石。它发生在任何…

WPF中依赖属性和附加属性

依赖属性(DependencyProperty) 依赖属性是WPF中的一种特殊属性,它的实现依赖于DependencyObject类提供的基础设施。与普通的.NET属性不同,依赖属性的值可以通过多种方式确定,包括继承、样式、数据绑定和动画等。 主要特…

Docker 中如何实现镜像的推送和拉取

在 Docker 中,镜像的推送(push)和拉取(pull)是通过与**Docker 镜像仓库(Registry)**交互完成的。默认仓库是 Docker Hub,但你也可以使用私有仓库(Harbor、Nexus、AWS ECR…

[C#] WPF - 自定义样式(Slider篇)

一、定义样式 在App.xaml里面定义样式&#xff1a; <Applicationx:Class"WpfApp.StudySlider.App"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local&q…

eBPF 实战指南:精准定位 TCP 重传,洞察网络瓶颈真相

更多云服务器知识&#xff0c;尽在hostol.com 你有没有遇到过这种情况&#xff1f;网站访问卡顿&#xff0c;接口响应慢得像蜗牛爬。你 ping 服务器没丢包&#xff0c;CPU 内存也没打满&#xff0c;日志也没报错&#xff0c;结果就是不知道哪儿出的问题。 你用抓包分析&#x…

在 Ubuntu 系统上安装 Docker 环境

在当今的开发环境中&#xff0c;Docker 已经成为容器化技术的主流选择。它可以帮助开发者轻松地创建、部署和运行应用程序。本文将详细介绍如何在 Ubuntu 系统上安装 Docker 和 Docker Compose&#xff0c;并解决在安装过程中可能遇到的一些常见问题。 一、安装 Docker 1.卸载旧…

【Qt】QxORM无法删除和更改主键值为0的行,否则报错:invalid primary key

1、问题描述 使用 QxORM 删除或者更改数据库时,当主键值为 0 时,报错: [QxOrm] invalid primary key2、原因分析 2.1 源码分析 查找打印错误提示的代码: #define QX_DAO_ERR_INVALID_PRIMARY_KEY "[QxOrm] invalid primary key" QSqlError IxDao_Help…

数学建模_线性规划

问题背景模型介绍matlab求解 示例 问题背景 模型介绍 matlab求解 max问题转化为min问题 > > >号转化为 < < <号 示例 看到多个线性规划目标 2个目标函数变成1个目标函数 后面省略

51单片机制作万年历

硬件设计 主控芯片&#xff1a;一般选用AT89C52单片机&#xff0c;它与MCS - 51单片机产品兼容&#xff0c;有8K字节在系统可编程Flash存储器、32个可编程I/O口线、三个16位定时器 / 计数器等。时钟芯片&#xff1a;常用DS1302时钟芯片&#xff0c;能提供实时时钟 / 日历、定时…

Oracle CTE递归实现PCB行业的叠层关系

1、需求背景&#xff0c;出货报告要实现叠板假层的处理&#xff0c;需求如下 表ID,layer,MEDIUM数据如下 第一种情况&#xff0c;layer有K的 IDlayerMEDIUM1L1-L2302L2-L3403L3-K1204K1-L4105L4-L5206L5-L6307L7-K2108K2-L8119L8-L91010L9-L1030 实现layer有K1的&#xff0c…

Kubernetes 服务发布基础学习

一、Service 概述&#xff08;一&#xff09;Service 的定义Service 是 Kubernetes 中的一种抽象概念&#xff0c;用于定义一组 Pod 以及访问这组 Pod 的策略。其核心作用是将一组 Pod 封装为一个虚拟服务&#xff0c;并为客户端提供统一的入口&#xff0c;从而实现服务的负载均…

【零基础学AI】第21讲:TensorFlow基础 - 神经网络搭建入门

本节课你将学到理解什么是TensorFlow&#xff0c;为什么要用它 掌握TensorFlow安装和基本操作 学会搭建第一个神经网络 完成手写数字识别项目 开始之前 环境要求 Python 3.8至少4GB内存网络连接&#xff08;用于下载数据集&#xff09; 前置知识 第1-8讲&#xff1a;Python基础…

STM32 串口USART通讯驱动

前言 本篇文章对串口Usart进行讲解&#xff0c;为后面的esp8266和语音模块控制打好基础。 1.串口USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff0c;通用同步 / 异步收发器&#xff09; 是一种常见的串行通信接口&#xff0c;广泛应…

pytorch版本densenet代码讲解

DenseNet 模型代码详解 下面是 DenseNet 模型代码的逐部分详细解析&#xff1a; 1. 导入模块 import re from collections import OrderedDict from functools import partial from typing import Any, Optionalimport torch import torch.nn as nn import torch.nn.functional…

前端常见设计模式深度解析

# 前端常见设计模式深度解析一、设计模式概述 设计模式是解决特定问题的经验总结&#xff0c;前端开发中常用的设计模式可分为三大类&#xff1a; 创建型模式&#xff1a;处理对象创建机制&#xff08;单例、工厂等&#xff09;结构型模式&#xff1a;处理对象组合&#xff08;…

React 学习(3)

核心API——React.creatElement()方法优点&#xff1a;将创建元素、添加属性和事件、添加内容和子元素等使用原生dom需要进行复杂操作才能实现的功能集成在一个API中。1.该方法接收三个参数第一个是要创建的元素的名称&#xff08;小写是因为如果&#xff0c;大写开头会被react…

倾斜摄影无人机飞行航线规划流程详解

在倾斜摄影测量项目中&#xff0c;航线规划的严谨性直接决定了最终三维模型的质量与完整性。照片覆盖不全、模型空洞、纹理模糊或分辨率不达标等问题&#xff0c;往往源于规划阶段对关键细节的疏忽。本文将系统梳理倾斜摄影无人机航线规划的核心流程与关键要点&#xff0c;旨在…