安卓-本地asr语音识别-将非流式处理成流式-应用层面简单处理转换

背景

众所周知,目前开源的asr语音识别引擎,有些是支持流式识别的,有些是不支持流式识别的。
流式识别的优势在于:人可以一直说,麦克风一直监听,识别文字结果一直输出,适合长时间机器对话、以及对话打断等。
而非流式的特点则是:输入一段完整的语音,提交给asr,让它一次性完整输出结果。

安卓平台,开源提供可用demo的本地语音识别中:
一些支持流式处理的语音识别有:vosk、sherpa-ncnn、sherpa-mmn
一些非流式的语音识别有:pytorch-Wav2Vec2、onnx-funasr、Whisper.cpp

如果要做本地ai对话,遇到效果好的asr,但又不支持流式处理,不能直接拿来,这个就需要处理成流式处理。
有多种科学的方案:
1.找到流式处理的demo
2.找不到流式demo时、找其它语音的实现demo:c++、rust等流式处理demo,移植为安卓工程
3.实在不支持流式处理时,改造asr算法让其支持流式处理,参考文档:流式语音识别原理和实现思路

思考

作为小小的开发仔,算法移植和修改引擎都太漫长不确定了。不过可以从应用层面做一个比较折中的办法:
将持续的录音数据,按静音(没有人说话)作为分割,将每次说话的数据,打包成一次完整的语音,将有说话的完整语音提交给asr识别,就这样拆成一段段的间歇性识别。

静音识别

人在不说话时,话筒里剩下的只是幅度很小的背景噪声;只要把这阵子信号的能量(或幅值)算出来,再跟一条经验门限比大小,能量低于门限就判为静音。整套流程全部在时域完成,无需解码、也无需频域变换,因此运算量极小,适合实时通话、录音降噪等场景。
pcm格式导出波形图
image
参考空语音识别原理

代码实现:
参考判断PCM音频为静音

判断静音代码:

public class SilenceDetector {/** 默认 -40 dB 门限 */private static final double DEFAULT_SILENCE_DB = -40.0;/** 工具类禁止实例化 */private SilenceDetector() { }/*** 判断整段 PCM 是否全是静音** @param pcmBytes   16-bit 小端、单声道 PCM 数据* @param sampleRate 采样率,如 16000* @param frameMs    定义每一帧总时长(毫秒数),建议 20 ms* @param silenceDb  判定门限,单位 dB* @return true 静音,false 至少有一帧超过判定门限,为说话中*/public static boolean isSilence(short[] pcmBytes,int sampleRate,int frameMs,double silenceDb) {return isSilence2(pcmBytes, 0, pcmBytes.length, sampleRate, frameMs, silenceDb);}/*** 判断整段 PCM 是否全是静音** @param pcmBytes   16-bit 小端、单声道 PCM 数据* @param sampleRate 采样率,如 16000* @param frameMs    定义每一帧总时长(毫秒数),建议 20 ms* @param silenceDb  判定门限,单位 dB* @return true 静音,false 至少有一帧超过判定门限,为说话中*/public static boolean isSilence2(short[] pcmBytes,int dataOffset,int dataLength,int sampleRate,int frameMs,double silenceDb) {int frameSamples = sampleRate * frameMs / 1000;double thresholdLinear = Math.pow(10.0, silenceDb / 20.0);int frames = dataLength / frameSamples;if (frames == 0) return true;                // 数据太短for (int f = 0; f < frames; f++) {double sumSq = 0.0;int off = f * frameSamples;for (int i = off; i < off + frameSamples; i++) {short v = pcmBytes[dataOffset + i];sumSq += v * v * 1.0;}//32768.0 是 16-bit 有符号音频样本的最大绝对值(即 Short.MAX_VALUE + 1),用来把 short 采样值归一化到 [-1.0, 1.0) 浮点范围,方便计算 RMS、dB 等。double rms = Math.sqrt(sumSq / frameSamples) / 32768.0;if (rms > thresholdLinear) return false; // 有一帧超门限}return true;}/* 16-bit 小端 → short[] */private static short[] byteArrayToShortArray(byte[] bytes) {if (bytes.length % 2 != 0)throw new IllegalArgumentException("PCM 字节数必须是 2 的倍数");short[] out = new short[bytes.length / 2];for (int i = 0; i < out.length; i++) {int lo = bytes[i * 2]     & 0xFF;int hi = bytes[i * 2 + 1] & 0xFF;out[i] = (short) ((hi << 8) | lo);}return out;}/* 最简重载,使用默认参数 */public static boolean isSilence(byte[] pcmBytes, int sampleRate) {short[] shorts = byteArrayToShortArray(pcmBytes);return isSilence(shorts, sampleRate);}public static boolean isSilence(short[] pcmBytes, int sampleRate) {return isSilence(pcmBytes, sampleRate, 20, DEFAULT_SILENCE_DB);}public static boolean isSilence2(short[] pcmBytes,int dataOffset,int dataLength, int sampleRate) {return isSilence2(pcmBytes, dataOffset, dataLength, sampleRate, 20, DEFAULT_SILENCE_DB);}
}

使用静音判断代码,分割采集有说话的pcm数据:

 int bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT,bufferSize);if (record.getState() != AudioRecord.STATE_INITIALIZED) {Log.e(LOG_TAG, "Audio Record can't initialize!");return;}record.startRecording();short[] audioBuffer = new short[bufferSize / 2];while (recording) {int numberOfShort = record.read(audioBuffer, 0, audioBuffer.length);boolean isSilence = SilenceDetector.isSilence2(audioBuffer, 0, numberOfShort, SAMPLE_RATE);Log.d("test", "isSilence=" + isSilence);
//采集堆积pcm数据,静音时一次性打包提交给asr识别,识别完成后开始下一轮数据堆积和识别。。。。}record.stop();record.release();

补充

只是提供一种思路,毕竟不是真正的asr流式识别,只是有个流式pcm数据的中间拆分处理过程,需要自己调逻辑调效果。

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

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

相关文章

小汽车托运平台哪家好?这份选型指南请收好

随着跨省出行、二手车流通、新能源汽车调运需求的持续升温,小汽车托运行业迎来快速发展。据中国汽车流通协会发布的《2023 年中国汽车物流行业蓝皮书》显示,2023 年全国小汽车托运需求量突破 1200 万辆次,同比增长 …

【IEEE出版 | 广州计算机学会主办】第五届计算机、物联网与控制工程国际学术会议(CITCE 2025)

【IEEE出版 | 广州计算机学会主办】第五届计算机、物联网与控制工程国际学术会议(CITCE 2025)第五届计算机、物联网与控制工程国际学术会议(CITCE 2025) 中国 广州 | 2025年12月19-21日 截稿时间:多轮截稿,官网…

2025年国内可靠的防雨箱供应商排名,充电桩防雨箱/开关防雨箱/监控防雨箱/防雨箱盖/不锈钢防雨箱源头厂家排名

行业背景分析 随着我国基础设施建设持续完善和智能化水平不断提升,防雨箱作为户外设备保护的关键部件,市场需求稳步增长。防雨箱产品广泛应用于电力、交通、安防、通信等领域,其质量直接影响设备运行的稳定性和使用…

MySQL 表误操作(RENAME + DROP)数据恢复技术文档

MySQL 表误操作( DROP)数据恢复技术文档 适用场景:开发误执行DROP TABLE new_yc;导致原始表数据丢失 **恢复目标**:还原RENAME操作前的原始表数据 **核心原理**:利用 MySQL binlog 中记录的 ROW 格式 DML 事件回…

【同济大学环境科学与工程学院主办】第十一届能源资源与环境工程研究进展国际学术会议(ICAESEE 2025)

【同济大学环境科学与工程学院主办】第十一届能源资源与环境工程研究进展国际学术会议(ICAESEE 2025)第十一届能源资源与环境工程研究进展国际学术会议(ICAESEE 2025) 2025年12月19-21日,中国上海 截稿时间:多轮…

激光切割设备2025年顶尖厂商综合实力权威推荐榜单

在高端制造领域,一把无形的“光刀”正悄然改变工业生产的面貌,它的精度可达头发丝的百分之一,它的热影响区几乎可以忽略不计。 随着工业4.0时代的深入发展,激光切割技术作为高端制造的核心工艺,正以前所未有的速度…

Redis主从哨兵模式连接踩坑全记录

Redis主从哨兵模式连接踩坑全记录 在分布式系统开发中,Redis主从哨兵模式是保障缓存高可用的常用架构,但实际配置过程中,往往会因密码认证、客户端适配等细节问题陷入困境。本次就分享一次从项目启动报错到最终稳定…

2025年汽车海外营销代运营公司推荐:B2B外贸企业Facebook、LinkedIn、TikTok、INS、Google一站式出海营销服务商精选(12月新版)

一、2025 年 B2B 外贸出海营销市场趋势​ ​ 随着全球贸易数字化加速,中国跨境出口电商持续保持高速增长,2020-2024 年复合年均增长率达 17.0%,占商品出口总额比例已提升至 35.3%。对于汽车类、机械设备等 B2B 企业…

精细化+强执行 路尚控股集团股东会议为管理升级提供新思路

日前,路尚控股集团会议暨股东会议在集团总部郑州隆重召开。来自全国各地的集团股东及核心管理层齐聚一堂,以“创新驱动、精益管理、聚力执行”为核心导向,共商企业发展大计,共谋高质量发展新路径,为集团下一阶段战…

2025 智能教育风口 松鼠 AI 自习室加盟靠谱分析

2025 智能教育风口 松鼠 AI 自习室加盟靠谱分析在"人工智能+教育"市场规模突破5000亿元的背景下,Ai人工智能自习室作为新兴业态正以年均68%的增速快速发展。然而行业调研显示,73%的意向投资人在考察Ai人工…

新中心聚焦可信机器学习安全与隐私技术

某中心与南加州大学合作成立“安全与可信机器学习中心”,致力于开发隐私保护机器学习的新方法,包括资助研究项目、设立博士奖学金及举办年度研讨会,以应对AI技术广泛渗透带来的安全与信任挑战。某中心与南加州大学(…

2025年中国压力开关五大厂家推荐:看哪家技术水平高

TOP1 推荐:长沙弗赛德自动化技术有限公司 推荐指数:★★★★★ 口碑评分:国内专业的压力开关定制生产厂家 专业能力:作为国家高新技术企业,长沙弗赛德自动化技术有限公司是压力开关品牌制造商中的技术标杆,核心产…

2025年五大全防护门窗品牌排行榜,亿合全防护门窗详细介绍及

为帮消费者避开门窗选购以次充好、安装缩水的坑,精准锁定适配家居需求的专业品牌,我们从防护性能硬核度(如抗风压等级、隔音隔热参数)、工艺品质可靠度(型材壁厚、密封工艺)、安装交付标准化(服务流程规范度、辅…

老年痴呆的早期干预治疗方案是什么?2025十大产品全面分析,KOUND脑醒素具有实际作用

“钥匙刚放下就不记得,走过无数遍的街道变得陌生,甚至叫不出老伴的名字——这些表现往往被误解为‘年纪大了犯糊涂’,却可能是老年痴呆症的早期征兆。”研究数据表明,我国60岁以上人口中,老年痴呆的患病率已达3.9…

C语言随堂笔记-2

本次学习的是分集7-11 课程来自BV1Vm4y1r7jY本次学习的是分集7-11 课程来自BV1Vm4y1r7jY分集7 C语言中的常量有以下四种: 1.字面常量 2.const修饰的常变量 3.#define定义的标识符常量 4.enum中的枚举常量#define _CRT…

国标GB28181算法算力平台EasyGBS打造大型企业园区一体化安防监控新体系

随着大型企业园区向数字化、智能化转型,安防监控已从传统“被动录像”升级为“主动防控、全域协同”的核心需求。然而,园区内摄像头、门禁、传感器等设备品牌繁杂、协议异构,加之面积广、场景多,传统安防系统普遍面…

通过ZigBee技术来实现智能家居控制器的设计方案

ZigBee是一种新兴的技术,其主要的特性就是近距离、低复杂度、低数据速率、低成本的无线网络技术,在众多的领域都有着广泛的应用前景。 智能家居是一个多功能的综合技术系统,它以家庭住宅为平台,利用先进的计算机技…

2025年成品户外泳池实力厂家权威盘点:成品泳池/室内成品泳池/冲浪成品泳池源头企业精选

在消费升级与品质生活追求的浪潮下,成品户外泳池已从奢华象征转变为高端住宅、星级酒店及休闲康养场所的标准配置。然而,一个优质泳池的实现远非简单挖坑蓄水,它涉及复杂的水循环设计、严谨的水质处理、精细的土木工…

2025年中国伤口清创机设备行业市场分析报告及头部生产企业汇总

2025年中国伤口清创机市场分析:技术驱动增长,本土企业崭露头角 糖尿病足溃疡影响着全球15-25%的糖尿病患者,而其中85%的截肢病例始于这类未被妥善处理的创面。一组数据揭示,早期积极的清创能将截肢风险显著降低。 …

南京留学中介排名TOP10发布!表现突出的不踩雷

在南京留学中介市场,选对机构能让申请少走弯路。这份南京留学中介排名 TOP10,结合机构文书质量、服务适配性等核心维度,筛选出表现突出的机构,帮大家避开 “踩雷” 风险,精准找到靠谱选择。 第一名、优越留学 98 …