Android离线语音识别(SpeechRecognizer、PocketSphinx)

Android 标准语音识别框架:SpeechRecognizer 的封装和调用 此前,笔者梳理了语音如何打造车载语音交互:Google Voice Interaction 给你答案:介绍的是 3rd Party App 如何通过API 快速调用系统的语音交互服务快速完成确认、选择的基础语音对话直面原理:5 张图彻底了解 Android TextToSpeech 机制:侧重于阐述 TTS Engine App 如何提供文字转语音服务,以及 3rd Party App 又如何便捷地调用这些服务。还缺最后一块即如何向系统提供语音识别的。 阅读详情
AI摘要

本文探讨了在Android平台上实现离线语音识别的挑战与解决方案。由于成本和隐私考虑,作者无法使用百度、讯飞等大厂的SDK,转而研究了Android原生的SpeechRecognizer及PocketSphinx。原生方法在多数设备上失败,而PocketSphinx虽有局限,但成为可行选择。

最近有开发语音识别功能的需求,但是因为各种原因(主要是收费)不能用国内大厂(百度,讯飞)已有的sdk,于是在网上搜了很多android离线的语音识别,主要有两种:

1.android自带的SpeechRecognizer,但是试了好几种手机,都是提示没有语音识别服务,最终无果,没办法解决,部分代码如下:

 private SpeechRecognizer mSpeechRecognizer;
 mSpeechRecognizer=SpeechRecognizer.createSpeechRecognizer(this);
mSpeechRecognizer.setRecognitionListener(this);

 public void doSpeechRecognition(Context context){
        if(isRecognitionAvailable(context)){
            Intent recognitionIntent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            recognitionIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS,true);
            recognitionIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,"zh-CN");
            this.mSpeechRecognizer.startListening(recognitionIntent);
        }else{
            Toast.makeText(context,"没有语音识别服务",Toast.LENGTH_SHORT).show();
        }

    }

 @Override
    public void onReadyForSpeech(Bundle params) {
        Log.i("SpeechRecognition","onReadyForSpeech");
    }

    @Override
    public void onBeginningOfSpeech() {
        Log.i("SpeechRecognition","onBeginningOfSpeech");
    }

    @Override
    public void onRmsChanged(float rmsdB) {
        Log.i("SpeechRecognition","onRmsChanged");
    }

    @Override
    public void onBufferReceived(byte[] buffer) {
        Log.i("SpeechRecognition","onBufferReceived");
    }

    @Override
    public void onEndOfSpeech() {
        Log.i("SpeechRecognition","onEndOfSpeech");
    }

    @Override
    public void onError(int error) {
        Log.i("SpeechRecognition","onError");
    }

    @Override
    public void onResults(Bundle results) {
        ArrayList<String> partialResults=results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
        if(partialResults!=null && partialResults.size()>0) {
            String bestResult = partialResults.get(0);
            Log.i("SpeechRecognition","onResults bestResult="+bestResult);
            //result.setText(bestResult);
        }
    }

2.PocketSphinx,不多说,目前感觉是唯一的救命稻草,基本能用,单个短语容易误识别

参考文章:https://www.cnblogs.com/elecdog/p/7235235.html

https://www.jianshu.com/p/82ffb90cc463

参考demo如下:https://download.youkuaiyun.com/download/android_xc/12274142

Android导航语音识别——语音听写(嵌入式) 最近在学习嵌入式系统的一个功能——导航语音识别,该功能是基于Android和科大讯飞语音识别语音合成,利用RFID射频识别技术实现的功能,整个导航语音识别功能包括语音识别、语音合成、导航听写、语音提示语音识别的语音合成三大模块。这里我整理了第一模块——语音识别。无线射频识别技术,是自动识别技术的一种 ,通过无线电波不接触快速信息交换和存储技术,通过无线通信结合数据访问技术,然后连接数据库系统,加以实现非接触式的双向通信,从而达到识别的目的,在识别系统中,通过电磁波实现电子标签的读写与通信。 阅读详情

相关推荐

Android离线语音识别实战:从SpeechRecognizer到PocketSphinx的避坑指南

本文详细介绍了Android离线语音识别的实战经验,重点对比了SpeechRecognizer和PocketSphinx两种方案的优缺点。针对SpeechRecognizer的兼容性问题,提供了深度解决方案;对于PocketSphinx,则从环境搭建、模型优化到性能调优给出了完整指南,帮助开发者在医疗、金融等隐私敏感场景实现高效离线语音识别。

weixin_29250573的博客 130

Android原生SpeechRecognizer(语音识别)

开篇先吐槽下,在Android 平台开发原生的SpeechRecognizer真是难受的,不像ios,无比轻松,平台统一。 由于Android 平台的碎片化问题比较严重,各个厂商都有自己的实现,尤其是语音助手出来以后,每家的语音服务肯定是不一样的。 目前Android原生的SpeechRecognizer做法应该有两种 默认调用原生SpeechRecognizer,并稍作修改 调用第三方...

hanxiongwei的博客 7590

告别‘没有语音识别服务’:手把手教你用Android原生SpeechRecognizer实现离线语音(附完整代码)

本文详细解析了Android设备上常见的'没有语音识别服务'问题,并提供了从SpeechRecognizer到PocketSphinx的阶梯式解决方案。通过引导安装Google语音服务、适配厂商SDK及集成PocketSphinx离线引擎,确保应用在任何Android设备上实现可靠的离线语音识别。附完整代码实现和优化技巧,帮助开发者彻底解决语音识别兼容性问题。

weixin_33728268的博客 387

Android 标准语音识别框架:SpeechRecognizer | 开发者说·DTalk

本文原作者:小虾米君,原文发布于:TechMerger前言本文将向您介绍如何向系统提供语音识别的 SpeechRecognizer 服务,3rd Party App 如何使用它们,以及系统地联系这两者。如何实现识别服务?首先我们得提供识别服务的实现,简单来说继承 RecognitionService 实现最重要的几个抽象方法即可:首先可以定义抽象的识别 Engine 的接口 IRecognitio...

Android开发者 3896

使用离线语音识别引擎PocketSphinx实现Android应用

在移动设备上,离线语音识别引擎能够提供快速、准确的语音识别功能,而PocketSphinx是一个开源的、基于隐马尔可夫模型(Hidden Markov Model)的离线语音识别引擎。PocketSphinx需要使用语音识别模型来进行识别。你可以从PocketSphinx的官方网站下载预训练的语音识别模型,或者使用自定义的模型。需要注意的是,由于PocketSphinx是一个离线语音识别引擎,它的识别准确度可能会受到语音模型的限制。一旦语音识别引擎创建成功,我们可以开始实现语音识别功能。

BinzTcl的博客 1496

PocketSphinx安卓离线语音识别:从Demo到实用模块

语音识别按部署方式分为在线和离线两类,离线识别在无网络环境下仍可本地解码,具有低延迟、隐私安全和零服务成本等优势。PocketSphinx作为CMU Sphinx家族的轻量级成员,专为移动端设计,支持关键词唤醒与有限状态语法,适合固定命令词场景。在安卓端集成时,通过官方Demo验证工程环境,再替换模型与字典,即可快速实现类似“语音开关”的实用功能。实际开发中需注意模型路径、采样率、生命周期管理等细节,避免初始化失败或识别率低下。本文围绕PocketSphinx在安卓上的完整落地路径,分享从Demo跑通到模块

weixin_27066963的博客 94

Android离线语音识别:SpeechRecognizer与PocketSphinx选型与调优指南

语音识别技术通过声学模型和语言模型将音频信号转化为文本,其核心原理涉及特征提取与解码搜索。在移动端,离线语音识别因隐私保护和网络稳定性成为关键需求,技术价值在于实现低延迟、高可靠性的本地处理。典型应用场景包括智能家居控制、车载指令和嵌入式设备交互。在Android平台,开发者常面临系统API与开源引擎的选型问题,需权衡集成复杂度、包体积与识别率。本文深入对比SpeechRecognizer和PocketSphinx的底层机制,提供从集成到调优的工程实践,帮助解决离线语音识别中的常见陷阱。

weixin_30872577的博客 89

Android本地唤醒+云端识别双通路语音助手源码,支持自定义热词与多轮指令响应

一套开箱即用的Android语音交互实现方案,同时集成离线唤醒和在线识别能力。唤醒模块基于PocketSphinx,不依赖网络即可实时监听并响应自定义唤醒词(如‘小智’‘嘿助手’),触发后无缝切换至系统SpeechRecognizer进行高准确率语音转文字。支持后台常驻监听、识别超时自动重试、无网时降级为纯本地唤醒反馈等实用逻辑。工程结构完整,含标准Gradle配置、AndroidManifest权限声明、简洁UI示例、状态管理封装类及完整回调接口,适配Android 5.0(API 21)及以上版本。配套

perl8的博客 249

Android离线语音识别实战:SpeechRecognizer与PocketSphinx选型与避坑

语音识别技术通过声学模型与语言模型将音频信号转化为文本,其核心原理在于解码器对音频特征进行模式匹配与概率推断。在移动端,离线语音识别因无需网络、隐私安全、响应即时等特性,成为弱网或无网场景下的关键技术方案。Android平台提供系统级SpeechRecognizer与内嵌式PocketSphinx两条主流路线,前者依赖设备离线语言包,后者将轻量引擎集成至应用内,二者在精度、可控性、包体影响上各有取舍。实际工程中需结合命令词识别、自由听写等场景,通过能力探测与降级策略保障可用性,并关注音频链路对齐、阈值调优与

weixin_29172201的博客 187

安卓离线语音识别实战:基于PocketSphinx的指令控制与集成

语音识别技术正从云端依赖走向端侧智能,离线识别方案在固定指令、隐私保护与实时响应场景中展现出独特优势。其核心原理基于隐马尔可夫模型与n-gram语言模型,通过本地声学模型和语法文件完成解码,无需网络传输即可实现高效识别。这一技术尤其适合车载控制、工业终端、智能家居等对延迟与成本敏感的环境,同时也能规避录音上云带来的合规风险。在Android平台,借助CMU开源的PocketSphinx引擎,开发者可以快速构建离线语音指令系统;通过JSGF语法文件定义指令集,配合关键词唤醒模式,实现从‘唤醒词’到具体操作的完

weixin_42696271的博客 239

Android语音助手实战:PocketSphinx唤醒词与SpeechRecognizer指令识别无缝衔接

语音识别技术已经成为人机交互的重要入口,而唤醒词检测与指令识别分别适用于低功耗常驻监听和大词表理解。Android平台中,PocketSphinx作为轻量级离线识别引擎,适合在后台持续监听唤醒词;系统级SpeechRecognizer则依托云端能力处理完整语音指令。两者结合能够有效平衡功耗与识别准确率,但需要处理音频资源切换、阈值校准、前台服务与麦克风权限等工程细节。本文围绕这一架构,详细讲解了PocketSphinx的唤醒词配置、SpeechRecognizer的错误处理与降级方案,以及状态机串联和日志验

weixin_33922670的博客 252

pocketSphinx Android 离线语音识别

前几天有个朋友找到我说是否有非第三方(讯飞、百度)的语音识别方案,之前对这块的了解是语音识别基本都是调用这种第三方的方案。听完之后,谷歌发下有两种方案.

linhaosheng123456的博客 5626

SpeechRecognizer:Android开发-在Android项目里集成讯飞语音识别与合成的实现

SpeechRecognizer Android开发-在Android项目里集成讯飞语音识别与合成的实现 详情说明请看我的优快云博客:

Android语音开发实战:从零实现稳定低延迟语音识别

语音识别是人机交互的基础能力,其本质是将声波信号经采集、传输、处理三阶段转化为可执行指令。核心原理依赖音频采集(AudioRecord)、系统识别服务(SpeechRecognizer)与结果映射逻辑的协同;技术价值在于降低用户操作门槛、提升IoT/智能硬件响应确定性;典型应用场景包括智能家居控制、离线语音助手、老年健康监护等对隐私与实时性敏感的领域。本文聚焦Android原生语音API实践,深入解析离线与在线识别边界、真实场景下的响应延迟控制两大关键问题,提供可直接运行的Kotlin Demo及真机避坑清

weixin_29194817的博客 143

Ubuntu20.04安装Ceres库

ceres真难安装。

little_white138的博客 8379

摄像头模组CCM简介

摄像头模组,全称Camera Compact Module,简写为CCM。CCM 包含几大件: 镜头(lens)、音圈马达(VCM)、传感器(sensor)、软板(FPC)、图像处理芯片(DSP)。工作原理:物体通过镜头(lens)聚集的光,通过CMOS或CCD集成电路,把光信号转换成电信号,再经过内部图像处理器(ISP)转换成数字图像信号输出到数字信号处理器(DSP)加工处理,转换成标准的GRB、YUV等格式图像信号。摄像头模组主要由以下几个部分组成:镜头(Lens):将光线汇聚到图像传感器上。

m0_73482095的博客 1万+

离线语音识别实战:SpeechRecognizer与PocketSphinx双方案解析

语音识别技术通过声学模型和语言模型将音频信号转化为文本,其核心原理包括特征提取、声学建模和解码搜索。在移动端实现离线语音识别时,系统API如SpeechRecognizer受限于设备厂商的离线支持能力,而开源引擎PocketSphinx则提供完全离线的可控方案。技术价值在于保障隐私、降低延迟并适应无网络环境,典型应用场景包括语音指令控制、关键词唤醒和工业现场操作。针对多设备兼容性和识别精度需求,开发者常采用双通道策略:优先尝试系统离线能力,失败时降级到PocketSphinx,并结合限定词表和参数调优提升效

weixin_29057065的博客 308

振动信号相位测量的关键技术解析

本文深入解析了振动信号相位测量的关键技术,强调相位是振动信号的“身份证”,对于动平衡和故障诊断至关重要。文章详细阐述了键相传感器与振动传感器的选型、安装要点,以及时域和频域(FFT)核心算法,并针对现场噪声、转速波动等挑战提供了实战解决方案,帮助工程师实现精准、稳定的相位测量。

vv45678的博客 838

安卓平台使用pocketSphinx离线语音识别

版权声明:本文为elecdog原创文章,可以转载,但必须在明确位置注明出处!谢谢合作。 关于语音识别,国内已经有比较好的公司推出相关的服务了,比如百度免费的离在线融合语音识别以及讯飞收费的在线和离线语音识别服务。这里不作过多介绍,需要的同学可以直接去官网阅读接入文档。这里要介绍的是一个离线语音识别的开源项目——CMU PocketSpinnx,在安卓开发中的使用。在智能家居 APP 开发中常

ma524654165的博客 2674

手把手教你学simulink(16.2)--基于Simulink的高通滤波器(High-Pass Filter)项目

基于Simulink的高通滤波器(High-Pass Filter)项目的详细实例介绍。这个项目将重点放在高通滤波器的设计、实现和仿真上,帮助你理解和应用高通滤波器在信号处理中的作用。

MHD0815的博客 926

GEE:哨兵时间序列遥感数据和动态阈值方法计算物候时期EOS/SOS(2)

本文将分享和解释论文《Improved Estimates of Arctic Land Surface Phenology Using Sentinel-2 Time Series》中使用到的基于阈值估算北极地区的植被物候,特别是北极地区的植被季节开始和结束的日期(SoS和EoS)的方法和代码。该方法使用的是使用哨兵2数据,并实现了两种阈值方法( 无平滑的阈值方法、平滑后的阈值方法)。

养乐多的博客 2971

离线语音识别是如何工作的:pocketsphinx-android-demo 从音频流到假设文本的底层原理深潜

离线语音识别让 Android 应用在**没有网络**的情况下,也能把麦克风采集的音频流转换成文字。开源项目 pocketsphinx-android-demo 就是 PocketSphinx 引擎在 Android 上的官方演示,它完整展示了从音频采集、特征提取、声学打分,到解码输出假设文本(Hypothesis)的全过程。本文带你像拆解流水线一样,看清每一环如何工作。 ## 离线识别全景图:

gitblog_00532的博客 364

【AI for Medecine】吴恩达医学图像AI专项课程(诊断、预测、治疗)

近期需要简单了解AI4Science上的一些应用,看到吴恩达大佬的专项课程,于是开始来个“全面”的了解--医学人工智能(诊断、预测、治疗)。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 774

Android Launcher 语音交互实战:从架构设计到避坑指南

小米/华为特殊权限清单-- 在AndroidManifest.xml中添加 -->运行时检查技巧基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。架构理解:掌握实时语音应用的完整技术链路(ASR→LLM→TTS)技能提升:学会申请、配置与调用火山引擎AI服务。

2600_94959828的博客 541

yolov7目标追踪:基于自定义数据集完成检测

目标追踪包含两个阶段:(1)基于自定义数据集,训练yolo目标检测模型;(2)基于检测模型,将实时检测结果传递到StrongSORT追踪算法中,该算法在OSNet基础上结合运动和外观信息,可以跟踪yolo模型检测到的任何物体。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 2306

【Kubernetes】怎么根据pod找到关联的deployment呢

在文章中我们删除pod需要删除deployment,那么怎么根据pod找到关联的deployment呢。

九师兄 505
上一篇: android图像识别(百度普通物体识别)
下一篇: WhatsApp安装包下载
android_xc
博客等级 码龄12年 15粉丝 23原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值