Android语音识别

android开发-百度语音识别Android SDK的简单使用,跨平台小程序开发框架 =========================================================== 1.引言 在人际交往中,言语是最自然并且最直接的方式之一。随着技术的进步,越来越多的人们也期望计算机能够具备与人进行言语沟通的能力,因此,语音识别这一技术也越来越受到关注。尤其,随着深度学习技术应用在语音识别技术中,使得语音识别的性能得到了显著提升,也使得语音识别技术的普及成为了现实。今天,我就用百度语音识别SDK做一个简单的使用案例。 2.开发环境 Android studio . 阅读详情

一、Android 提供了三种方式:

语音识别方法一:使用intent调用语音识别程序

1. 说明
以下例程功能为:在应用程序中使用intent来调出语言识别界面,录音并识别后将识别的字串返回给应用程序。注意:使用前需要安装语音识别程序如语音搜索。

2. 本例参考自android例程:
development/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java

3. 可从此处下载可独立运行的代码:
http://download.youkuaiyun.com/source/2591401

4.这种方法需要联网,借助于云端技术可以识别用户的语音输入。

5、核心代码:new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)

6、这种方式有个回调函数可以返回音频文件,即可实现边录音边识别。

语音识别方法二:应用程序自己调用语音识别库

1. 说明
以下例程功能为:应用程序自身调用语言识别函数,程序以循环方式等待录音并识别后的字串。

2. 本例参考自android代码:
frameworks/base/core/java/android/speech/srec/Recognizer.java中注释部分

3. 可从此处下载可独立运行的代码:
http://download.youkuaiyun.com/source/2591401

4. 语音识别库是嵌入到系统里的,系统提供的识别库有限。

5、这个应该不需要联网吧(未验证)

语音识别方法三:调用语音Service识别

1. 说明
以下例程功能为:在应用程序中使用通于访问service调用语言识别功能,录音并识别后将识别的字串通过Listener返回给应用程序。注意:使用前需要安装语音识别服务,如编译安装源码中的development/samples/VoiceRecogitionService。

2. 本例参考自android源码

a) 后台服务
参见development/samples/VoiceRecognitionService/*
此处实现了一个模拟的后台服务,它并未实现真的语音识别,而只是一个框架以示例,编译并安装它,即可在设置的语音输入与输出中看到它,它包含了一个设置界面,当连接这个Service时,如果设置了Letters,则直接返回abc,如果设置了Numbers,则直接返回123
你可以自己实现,用于连接android源码自带的识别引擎srec.

b) 前台程序
参见frameworks/base/core/java/android/speech/Recognition*
它与后台Service交互,此段代码实现在应用程序界面中

3. 可从此处下载可独立运行的代码(前台程序):
http://download.youkuaiyun.com/source/2591401

二、第三方语音识别平台:

1、、科大讯飞

sdk:使用有ui的sdk需要导入jar包和动态库,调用jar包里面的接口,进行相关功能实现;
讯飞语音+:需要安装讯飞语音+APK,导入讯飞语音+的开发jar包,用户可以自定义界面,目前讯飞语音+包含本地合成功能。

语音+可以支持离线语音合成。离线语音识别的功能,但是收费。

2、百度语音识别:


有两种方式:

(1)、调用  语音识别控件

(2)、api 方式

上一章描述了如何使用BaiduASRDigitalDialog进行语音识别,此种方式提供了统一的简便易用

的交互,如果此种交互无法满足开发者的需求,开发者可以直接使用语音识别 API 定制自己的语音

交互。

在使用api方式时有个重要的参数

  1. class MyVoiceRecogListener implements VoiceClientStatusChangeListener {  
  2.   
  3.    
  4.   
  5. @Override  
  6.   
  7. public void onClientStatusChange(int status, Object obj) {  
  8.   
  9. switch (status) {  
  10.   
  11. case VoiceRecognitionClient.CLIENT_STATUS_START_RECORDING:  
  12.   
  13. break;  
  14.   
  15. case VoiceRecognitionClient.CLIENT_STATUS_SPEECH_START:  
  16.   
  17. //检测到语音起点   
  18.   
  19. break;  
  20.   
  21.  case VoiceRecognitionClient.CLIENT_STATUS_AUDIO_DATA:  
  22.   
  23.  //有音频数据输出   
  24.   
  25. if (obj != null && obj instanceof byte[]) {  
  26.   
  27.  //处理数据   
  28.   
  29.  }  
  30.   
  31. break;  
  32.   
  33. case VoiceRecognitionClient.CLIENT_STATUS_SPEECH_END:  
  34.   
  35. //已经检测到语音终点,等待网络返回   
  36.   
  37. break;  
  38.   
  39. case VoiceRecognitionClient.CLIENT_STATUS_FINISH:  
  40.   
  41. //语音识别完成   
  42.   
  43. if(currentVoiceType == VOICE_TYPE_SEARCH){  
  44.   
  45. mStatusTextView.setText(R.string.finished);  
  46.   
  47. //obj 是一个ArrayList<String>,里面有多个候选词   
  48.   
  49. }  
  50.   
  51. break;  
  52.   
  53. case VoiceRecognitionClient.CLIENT_STATUS_UPDATE_RESULTS:  
  54.   
  55. //多句模式会有部分结果(一个分句)返回   
  56.   
  57. if(currentVoiceType == VOICE_TYPE_SEARCH){  
  58.   
  59. //obj 是一个ArrayList<String>,里面有多个候选词   
  60.   
  61. }else if(currentVoiceType == VOICE_TYPE_INPUT){  
  62.   
  63. //obj 是一个List<List<Candidate>>,里面有多个候选词   
  64.   
  65. List<List<Candidate>> result = (List<List<Candidate>>) obj;  
  66.   
  67. }  
  68.   
  69. break;  
  70.   
  71. case VoiceRecognitionClient.CLIENT_STATUS_USER_CANCELED:  
  72.   
  73. //通知用户已取消   
  74.   
  75. break;  
  76.   
  77. default:  
  78.   
  79. break;  
  80.   
  81. }  
  82.   
  83. }  
class MyVoiceRecogListener implements VoiceClientStatusChangeListener {

 

@Override

public void onClientStatusChange(int status, Object obj) {

switch (status) {

case VoiceRecognitionClient.CLIENT_STATUS_START_RECORDING:

break;

case VoiceRecognitionClient.CLIENT_STATUS_SPEECH_START:

//检测到语音起点

break;

 case VoiceRecognitionClient.CLIENT_STATUS_AUDIO_DATA:

 //有音频数据输出

if (obj != null && obj instanceof byte[]) {

 //处理数据

 }

break;

case VoiceRecognitionClient.CLIENT_STATUS_SPEECH_END:

//已经检测到语音终点,等待网络返回

break;

case VoiceRecognitionClient.CLIENT_STATUS_FINISH:

//语音识别完成

if(currentVoiceType == VOICE_TYPE_SEARCH){

mStatusTextView.setText(R.string.finished);

//obj 是一个ArrayList<String>,里面有多个候选词

}

break;

case VoiceRecognitionClient.CLIENT_STATUS_UPDATE_RESULTS:

//多句模式会有部分结果(一个分句)返回

if(currentVoiceType == VOICE_TYPE_SEARCH){

//obj 是一个ArrayList<String>,里面有多个候选词

}else if(currentVoiceType == VOICE_TYPE_INPUT){

//obj 是一个List<List<Candidate>>,里面有多个候选词

List<List<Candidate>> result = (List<List<Candidate>>) obj;

}

break;

case VoiceRecognitionClient.CLIENT_STATUS_USER_CANCELED:

//通知用户已取消

break;

default:

break;

}

}


可以上边拿到音频数据,可以实现边识别边录音

 

百度语音返回的音频格式为pcm16位(直接把byte[] 拼在一起存成pcm格式文件),这里官方没有介绍。(官方有两个设置 一个是16K,一个是 8K ,实际测试就是对应下面两种)为一下两种:


8000HZ 16bit stereo: 每秒钟有  8000  次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);

8000HZ 16bit  mono:  每秒钟有  8000  次采样, 采样数据用 16 位(2字节)记录, 单声道;


三、其他:

Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率

  •  最近语音识别很火,但是都是用的在线语音识别,研究了一下离线语音识别,小范围内的语音识别率还不错,在此记录一下

首先本文要说的两个前提1.android平台离线语音识别 2.小范围语音

小范围语音指的是相对固定的命令。本文的例子大概实现了20条语音命令,超出范围的无法识别。因此本文中离线语音的使用范围也有限,对于一些固定的输入可能有用,比如用语音命令代替打开,播放,重启这些简单的固定的命令。

android 语音识别_Android语音识别教程 android 语音识别 您可能听说过“ Google Now项目” ,在这里您可以发出语音命令,Android会为您获取结果。 它可以识别您的声音并将其转换为文本或采取适当的措施。 您有没有想过如何做? 如果您的答案是语音识别API,那么您绝对正确。 最近,在使用Android语音识别API时,我发现了一些有趣的东西。 API真的很容易与应用程序一起使用。 下面给出的是有关语音/语音识别API... 阅读详情

相关推荐

Android开发之语音识别

Android开发之语音识别开发背景RecognizerIntent相关知识代码解释完整代码项目运行及问题解决 开发背景 最近了解了一下Android Q(安卓10),得知Android Q基于语音识别技术,不需要联网就可以将视频中的语音实时转化成字幕这一功能。其实,在安卓中实现语音识别的代码很简单,我们要实现的就是调用谷歌API获取搜索结果,然后根据这个结果做自己想要的功能。 Android 中主要通过RecognizerIntent来实现语音识别。 RecognizerIntent相关知识 常量

fjnuluzekai的博客 2927

Android集成科大讯飞语音识别、语音唤醒、语音播报简易封装

注意其实代码还可以优化,由于公司业务需要,封装的不怎么彻底,使用者可在此基础上进一步封装。其中IflytekAPP_id为科大讯飞平台的应用id。到此语音唤醒已经集成结束,接下来是语音识别。

shi450561200的博客 8628

Android自带的语音识别示例:简单探索与编程

startSpeechRecognition()方法创建一个RecognizerIntent开始语音识别的意图,并配置一些额外的参数,如语音识别模型、语言和提示信息。在本篇文章中,我们将探索Android平台自带的语音识别功能,并编写一个简单的示例应用程序。语音识别是一种强大的功能,使用户可以通过语音与应用程序进行交互,从而提供更便捷的用户体验。在这个代码中,我们首先为按钮设置了一个点击监听器,然后在点击事件中调用startSpeechRecognition()方法来触发语音识别。步骤5:运行应用程序。

CyberBladeX的博客 752

如何快速实现安卓离线语音识别?Vosk Android Demo完整指南

Vosk Android Demo是一个专为安卓开发者打造的离线语音识别解决方案,基于开源Vosk语音识别引擎,无需联网即可实现实时语音转文本功能。本教程将带你从零开始搭建属于自己的离线语音识别应用,让你的App在无网络环境下也能轻松"听懂"用户指令。 ## 🚀核心功能解析:为什么选择Vosk Android Demo? ### 1. 完全离线运行,保护用户隐私 Vosk Android D

gitblog_00741的博客 1197

基于Android的语音助手应用程序 - 语音识别

语音识别:应用程序能够将用户的语音输入转换为文本。交互命令:应用程序能够根据用户的语音命令执行相应的操作,例如发送短信、播放音乐等。用户界面:应用程序将包含一个简单的用户界面,用于显示识别结果和执行的操作。通过本文,我们学习了如何构建一个基于Android的语音助手应用程序,并集成了语音识别功能。你可以根据自己的需求扩展应用程序的功能,例如添加更多的语音命令和操作。希望这篇文章对你有所帮助,祝你构建出功能强大的语音助手应用程序!

JdkwOle的博客 934

Android平台语音识别功能实战指南

本文还有配套的精品资源,点击获取 简介:Android平台上的语音识别功能使得用户可以通过语音与设备交互,增加了人机交互的便捷性和效率。本指南详细探讨了Android语音识别的基础知识,包括如何集成API、发起语音识别请求、以及处理识别结果。同时,介绍了语音识别流程、选项以及优化和注意事项,如延迟处理和错误处理等。开发者可以利用这些知识创建基本的语音识别功能,并根据需要进行...

weixin_35732273的博客 2997

安卓Android科大讯飞语音识别代码使用详解

科大讯飞的语音识别功能用在安卓代码中,我把语音识别写成了Service,然后在Fragment直接调用service服务。科大讯飞语音识别用的是带对话框的那个,直接调用科大讯飞的语音接口,代码采用链表结果集的方式获取数据。这个语音识别需要在官网申请APPID 本博来自:http://blog.youkuaiyun.com/zhaocundang小波LinuxQQ463431476 测试: ...

b305723的专栏 335

安卓语音识别与文本朗读实战项目——三大Android语音功能示例详解

随着移动智能设备的普及,语音交互已成为人机沟通的重要方式之一。Android平台自早期版本便引入了对语音识别(Speech-to-Text)和文本朗读(Text-to-Speech, TTS)功能的支持,为开发者构建无障碍应用、语音助手、教育类软件等提供了强大基础。本章将系统阐述Android平台上语音识别与TTS的核心机制及其在实际开发中的价值。语音识别通过类实现,允许应用程序捕获用户语音并转换为可处理的文本数据;而TTS则依赖于引擎,将文字内容转化为自然语音输出。

weixin_31715353的博客 1132

安卓离线语音识别 PocketSphinx Demo

安卓离线语音识别 PocketSphinx Demo 【下载地址】安卓离线语音识别PocketSphinxDemo 安卓离线语音识别 PocketSphinx Demo 是一个专为 Android 平台设计的开源示例项目,支持中英双语的离线语音识别功能。无需网络连接,即下即用,且无需复杂配置,用户可轻松集成到自己的应用中...

gitblog_06709的博客 546

Cadence Allegro安装全攻略:从准备到优化的完整指南

本文提供了一份详尽的Cadence Allegro安装教程,涵盖从系统准备、硬件要求到获取安装文件的完整前期工作。指南逐步解析了自定义安装、路径选择及核心组件配置,并重点阐述了许可证服务器的环境变量设置与服务启动等关键激活步骤,最后给出了首次启动验证、个性化优化及常见问题排错方案,助您高效完成安装与配置。

weixin_29243063的博客 188

Aras Innovator系统配置-01对象类(一)

对象类配置-对象类属性说明

企业信息化(PLM,ERP.MES) 2032

Vosk Android Demo:安卓离线语音识别完整指南

Vosk Android Demo是一个专为安卓开发者打造的离线语音识别解决方案,基于开源Vosk语音识别引擎,无需联网即可实现实时语音转文本功能。本教程将带你从零开始搭建属于自己的离线语音识别应用,让你的App在无网络环境下也能轻松"听懂"用户指令。 ## 核心功能解析:为什么选择Vosk Android Demo? ### 完全离线运行,保护用户隐私 Vosk Android Demo最突

gitblog_00279的博客 1204

ffmpeg中av_read_frame阻塞的原因与解决方案

最近用到ffmpeg,想要av_read_frame立即返回,但是看网上的博客,都没有详细的解说,那就自己看源码。 两种方法: 设置回调打断函数和设置超时 超时,但是如果只设置该参数,依然会在av_read_frame中阻塞, av_dict_set(&inputDic, "stimeout", "2*1000*1000", 0); // milliseconds //打断回调 m_avformatCtx->interrupt_callback.callback = interru

weixin_43360707的博客 1万+

安卓离线语音识别终极方案:Vosk Android Demo深度解析与实战指南

在移动应用开发领域,语音识别技术正成为提升用户体验的关键要素。然而,传统云端语音识别方案存在网络依赖、隐私泄露等痛点。Vosk Android Demo应运而生,为开发者提供了一个完全离线、高效稳定的语音识别解决方案。 ## 项目核心价值与独特优势 Vosk Android Demo基于开源Vosk语音识别引擎构建,专为安卓平台优化设计。该项目最突出的特点在于**本地化处理能力**,所有语音数

gitblog_00527的博客 992

CS算法实战:用MATLAB从零实现SAR点目标成像(附完整代码)

本文详细介绍了如何使用MATLAB从零实现SAR点目标CS成像算法,涵盖Chirp Scaling(CS)算法的核心理论、距离徙动校正(RCMC)和方位压缩等关键步骤。通过完整的代码示例和实战技巧,帮助读者掌握SAR成像处理算法,提升遥感图像处理能力。

weixin_29211309的博客 180

基于STM32与OV7670的嵌入式视频监控系统设计与实现

本文详细介绍了基于STM32单片机与OV7670摄像头的嵌入式视频监控系统设计与实现。从硬件选型、电路设计到软件开发,涵盖了摄像头驱动、TFT显示优化及图像处理等关键技术,提供了实用的调试技巧和性能优化方案,为低成本、高效率的视频监控系统开发提供完整解决方案。

desk3的博客 804

安卓离线语音识别革命:Vosk Android Demo让你的应用真正“听懂“用户

在移动应用开发中,实时语音识别功能正成为提升用户体验的关键因素。Vosk Android Demo作为一款基于开源Vosk语音识别引擎的演示项目,让开发者能够轻松实现**安卓离线语音识别**功能,无需依赖云端服务即可在本地完成语音转文本的全过程。本文将带你了解这个强大工具的核心优势、实现原理和快速上手方法。 ## 🚀 为什么选择Vosk Android Demo?三大核心优势解析 ### 1

gitblog_00195的博客 704

AUTOSAR模式管理-EcuM多核处理及其他概念

因此,EcuM不请求状态。因此,BswM必须确保,例如,在调用EcuM_GoHalt或EcuM_GoPoll之前,必须将关机目标从其默认值更改为ECUM_STATE_SLEEP。对于ECU的关闭,BswM(位于主EcuM的同一个分区中)最终调用主核上的GoOff,该GoOff将请求分发给所有的从核。在ECU Manager模块的早期版本中,睡眠目标被特殊处理,因为在ECU中实现的睡眠模式取决于ECU的功能。在使用了外部的SBC控制相关的MCU的下电的时候,在OFF阶段最后调用SBC进入到Sleep的指令。

m0_49148264的博客 1342

探索离线语音识别:Pocketsphinx在安卓应用中的实战指南

探索离线语音识别:Pocketsphinx在安卓应用中的实战指南 【下载地址】pocketsphinx-android-demo 本资源是针对安卓开发者的一个实战性示例,展示了如何在安卓应用中集成Pocketsphinx库以实现离线语音识别功能。Pocketsphinx是一个广泛使用的开源工具包,专门用于小型设备上的连续...

gitblog_09782的博客 938

华为OD机试真题 新系统 【社交网络相同爱好好友查询】

华为od机试真题 新系统【社交网络相同爱好好友查询】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试真题【社交网络相同爱好好友查询】多语言题解实现。

qq_45776114的博客 1338

[Unity3D]水族馆游戏教程四

文章目录0.接上篇1.速度控制器2.修改FishAI3.修改后的效果4.总结 0.接上篇 上一篇,实现了鱼AI的随机游动、自动转向,并且学习了如何分析调试过程中遇到的报错。 本篇将继续优化鱼AI。 1.速度控制器 上一篇虽然实现了鱼的随机游动,但是可以看到,鱼在转向的时候,会显得很突然。因此先要解决这个问题。 我们的思路是,让鱼在刚转向的时候,速度由慢到快,等到游动到快要到达目标点的时候,速度减慢...

延澈左的专栏 1039

安卓语音识别(RecognizerIntent)

今天在csdn网站上突然找到安卓语音识别功能感觉不错,结合其它博主和关于安卓语音识别的书籍来编写如下(若有侵犯,请立即告诉我) 话不多说直接进入主题: Android主要通过自带的RecognizerIntent来实现语音识别,代码其实是很简单,但是如果没有找到语音设备就会抛出异常ActivityNotFoundException,所以我们要提前要捕捉这个异常。在这里说明一下语音识别好像在模拟器上不能测试(我观看了大神的讲解说,语音识别是访问google云端数据)如果手机的网络没有开启,就无法识别语音,所以

小鹿麋鹿的博客 3076

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

如何快速实现安卓离线语音识别:VOSK完整指南

VOSK安卓离线语音识别Demo是一个基于Kaldi和Vosk库的移动端语音处理解决方案,专为无网络环境下的安卓应用离线语音识别和说话人识别而设计。🚀 ## 项目核心功能与优势 **离线语音转文本技术**是VOSK项目的最大亮点。与传统的在线语音识别服务不同,VOSK完全在设备本地运行,不需要互联网连接,既保护了用户隐私又提供了更快的响应速度。 **说话人识别功能**让应用能够区分不同的说

gitblog_00859的博客 791

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 最全的男性职场着装常识
下一篇: 修改EditText的光标颜色
King·Forward
博客等级 码龄14年 117粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值