Android语音识别

2023-10-28

今天从网上找了个例子实现了语音识别,个人感觉挺好玩的,就把代码贴出来与大家分享下:

         Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别!

        下面是RecognizerIntentActivity中的代码:

        

[html]view plaincopyprint?

1.   public class RecognizerIntentActivity extends Activity {  

2.     

3.       private Button btnReconizer;  

4.       private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;  

5.       @Override  

6.       protected void onCreate(Bundle savedInstanceState) {  

7.           // TODO Auto-generated method stub  

8.           super.onCreate(savedInstanceState);  

9.           setContentView(R.layout.reconizer);  

10.            

11.          btnReconizer=(Button) this.findViewById(R.id.btnRecognizer);  

12.          btnReconizer.setOnClickListener(new OnClickListener() {  

13.                

14.              @Override  

15.              public void onClick(View v) {  

16.                  // TODO Auto-generated method stub  

17.                  try{  

18.                  //通过Intent传递语音识别的模式,开启语音  

19.                  Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);  

20.                  //语言模式和自由模式的语音识别  

21.                  intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);  

22.                  //提示语音开始  

23.                  intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音");  

24.                  //开始语音识别  

25.                  startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);  

26.                  }catch (Exception e) {  

27.                      // TODO: handle exception  

28.                      e.printStackTrace();  

29.                      Toast.makeText(getApplicationContext(), "找不到语音设备", 1).show();  

30.                  }  

31.              }  

32.          });  

33.            

34.      }  

35.        

36.      @Override  

37.      protected void onActivityResult(int requestCode, int resultCode, Intent data) {  

38.          // TODO Auto-generated method stub  

39.          //回调获取从谷歌得到的数据   

40.          if(requestCode==VOICE_RECOGNITION_REQUEST_CODE && resultCode==RESULT_OK){  

41.              //取得语音的字符  

42.              ArrayList<String> results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);  

43.                

44.              String resultString="";  

45.              for(int i=0;i<results.size();i++){  

46.                  resultString+=results.get(i);  

47.              }  

48.              Toast.makeText(this, resultString, 1).show();  

49.          }  

50.          super.onActivityResult(requestCode, resultCode, data);  

51.      }  

52.  }  

public class RecognizerIntentActivity extends Activity {

 

  private Button btnReconizer;

  private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

   // TODO Auto-generated method stub

   super.onCreate(savedInstanceState);

   setContentView(R.layout.reconizer);

  

   btnReconizer=(Button) this.findViewById(R.id.btnRecognizer);

   btnReconizer.setOnClickListener(new OnClickListener() {

    

     @Override

     public void onClick(View v) {

      // TODO Auto-generated method stub

      try{

      //通过Intent传递语音识别的模式,开启语音

      Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

      //语言模式和自由模式的语音识别

      intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

      //提示语音开始

      intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音");

      //开始语音识别

      startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);

      }catch (Exception e) {

        // TODO: handle exception

        e.printStackTrace();

        Toast.makeText(getApplicationContext(), "找不到语音设备", 1).show();

      }

     }

   });

  

  }

 

  @Override

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {

   // TODO Auto-generated method stub

   //回调获取从谷歌得到的数据

   if(requestCode==VOICE_RECOGNITION_REQUEST_CODE && resultCode==RESULT_OK){

     //取得语音的字符

     ArrayList<String> results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

    

     String resultString="";

     for(int i=0;i<results.size();i++){

      resultString+=results.get(i);

     }

     Toast.makeText(this, resultString, 1).show();

   }

   super.onActivityResult(requestCode, resultCode, data);

  }

}


          
其主要原理就是将语音发送到google云端,然后云端处理,匹配相应的数据,发送到客户端。

          最后不要忘记,在manifest中加入网络访问权限:

    

[html]view plaincopyprint?

1.   <uses-permission android:name="android.permission.INTERNET" />  

<uses-permission android:name="android.permission.INTERNET" />

    

        运行后效果:

    

    点击开始语音按钮,然后开始说话(这里要保证手机的网路是打开的):

    

      正在等待云端数据,由于我这是2G的卡,等了好长时间还是加载不下来,等回公司了用公司的wifi试试,如果得到云端数据,就会通过Toast方式打印出来的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android语音识别 的相关文章

  • ExayExcel 阿里出品的ExayExcel

    1 首先引入依赖
  • cJSON笔记——三种结构的cJSON数组

    最近的项目中 涉及对cJSON库的使用 特别是不同结构的cJOSN数组的运用 在此小结以下 1 指定 路径 文件类型 文件名 读取整个文本 brief param file dir 文件所在的路径 param file name 文件名 p
  • 模型参数量(Parameters)和计算量(FLOPs)获取【使用thop】

    Tips 针对部分开源代码没有提供相关计算网络参数量和计算量的代码 这里给出一个通用的获取网络的参数量和计算量的方法 使用thop即可快速获取 1 模型参数量和计算量 参数量 params 即为网络模型中含有多少个参数 与输入的数据无关 主
  • win11热点提示我们无法设置热点

    问题还原 首先是连接win11的热点时 手机总是显示正在获取IP地址 然后连不上 之前都好好的 也没干过啥 或者选择性失忆 然后一通瞎操作 把电脑IP都给整成自动ip去了 初步估计是点了 网络重置 了如图 公司设置了固定ip 接下来就难受了
  • vue+iview 进行table表格数据的更新显示,局部刷新

    hello 在这个新做了一个网站 想提高一下权重 麻烦看见的给我点一下哦 是吉他乐谱分享的哦 www lsjita com 使用vue iview进行vue后台管理系统 对iview不太熟悉 然后就出现了好多问题 上一个有记录 这个来区分一

随机推荐

  • HaaS Python + AI 隆重登场 使用 ESP32 + 摄像头 机器视觉实现水果识别

    水果识别系统 现在很多农场里边使用摘采机器人识别水果进行水果摘采 盒马超市也使用自动识别称来识别水果种类自动计费 本案例则是使用HaaS Python对摄像头图像进行采集 并调用HaaS云端积木能力对水果进行识别 1 背景知识 水果的种类繁
  • 【AI实战】快速搭建中文 Alpaca 33B 大模型 Chinese-Alpaca-33B

    AI实战 快速搭建中文 Alpaca 33B 大模型 Chinese Alpaca 33B 中文 33B 大模型 Chinese Alpaca 33B 环境配置 搭建过程 1 拉取 chinese alpaca lora 33b 2 合并l
  • 【python学习笔记】seaborn模块

    目录 热力图介绍 seaborn模块绘制热力图 热力图介绍 热力图是一种特殊的图表 它是一种通过对色块着色来显示数据的统计图表 在绘图时 需要指定每个颜色映射的规则 一般以颜色的强度或色调为标准 比如颜色越深的表示数值越大 程度越深 颜色越
  • spark运行报错:(null) entry in command string: null chmod 0644

    在WIndows操作系统中本地运行spark程序 报以下错误 null entry in command string null chmod 0644 后面是目的目录 解决方法 下载hadoop dll文件 并拷贝到c windows sy
  • JS中的call()和apply()方法和区别

    一 方法定义 apply 调用一个对象的一个方法 用另一个对象替换当前对象 例如 B apply A arguments 即A对象应用B对象的方法 call 调用一个对象的一个方法 用另一个对象替换当前对象 例如 B call A args
  • 分析996个词根在各大考纲词汇中的作用(五)总结精选篇

    CET4 CET6 GRE IELTS TOEFL 考研英语总的词汇量为14055 分析词根总数为996 有11544个单词分布在这些词根中 剩下的2511个词汇没有任何词根信息 本文精选5206个跟词根结合最紧密的单词 superword
  • KVM的HVM虚拟机使用非串口方式建立virsh console 连接

    在去年写的文章中 http blog csdn net dobell article details 14442457 写到了怎么利用serial 设备进行console连接 不过比较麻烦 因为1 需要修改虚拟机内部的grub启动选项 2
  • unity学习笔记-有关打包安卓apk的一些注意事项

    unity学习笔记 有关打包安卓apk的一些注意事项 打包到build project的时候报错 报错信息里出现了jdksdk等 打包报错显示andriodfestxml文件版本有问题 有关urp线管环境打包的时候的一些注意事项 在编辑器里
  • 一款开源的文件搜索神器,终于不用记 find 命令了

    Python微信订餐小程序课程视频 https blog csdn net m0 56069948 article details 122285951 Python实战量化交易理财系统 https blog csdn net m0 5606
  • pppd程序的参数——man手册翻译

    文章目录 pppd全称 摘要 描述 常用的选项 ttyname 串口名 speed 波特率 asyncmap map auth call name connect script 连接脚本 crtscts defaultroute defau
  • chatgpt赋能python:Python处理Word文档

    Python处理Word文档 介绍 Microsoft Word是业界最流行的办公文档编辑工具之一 对于文档处理工作 Word是必不可少的工具之一 然而 尽管Word是十分强大的 但在处理大量数据时 手动处理每个文件是费时费力的 幸运的是
  • 数值分析——LU分解(LU Factorization)

    本系列整理自博主21年秋季学期本科课程 数值分析I 的编程作业 内容相对基础 参考书 David Kincaid Ward Cheney Numerical Analysis Mathematics of Scientific Comput
  • Python 多线程 start()和run()方法的区别(三)

    在实例调用的函数中加入打印当前线程的名字 分别用start 方法和run 方法启动线程检查有什么区别 start 方法 import threading import time def worker count 1 while True i
  • Linux epoll 与 Windows IOCP比较

    前言 epoll 和 IOCP IO Completion Ports 分别是 Linux 和 Windows 系统上的高效网络模型 相比其他网络模型 同样是 polling 方式 这两种模型有如下特点 在系统资源允许下 监控的文件描述符没
  • pandas中to_datetime()时间处理

    pandas to datetime arg errors raise utc None format None unit None pandas通常用于处理成组日期 不管这些日期是DataFrame的轴索引还是列 to datetime方
  • 入职字节外包一个月,我离职了····

    有一种打工人的羡慕 叫做 大厂 真是年少不知大厂香 错把青春插稻秧 但是 在深圳有一群比大厂员工更庞大的群体 他们顶着大厂的 名 做着大厂的工作 还可以享受大厂的伙食 却没有大厂的 命 他们就是大厂的 外包员工 什么都做了 和什么都没做其实
  • idea注释快捷键

    具体实现步骤 1 打开系统设置Setting Ctrl Alt S快捷键 2 Editor gt Live Templates gt 点击 号 添加一个templates group来放置自己快捷键 效果图如下 3 选中创建的group g
  • 在Excel VBA中使用字典

    序言 VBA的基础数据类型里面并没有字典类型 但字典其实在很多应用场景中都很有用 那么如何在VBA中使用字典 本文就用几个例子和大家交流探讨一下 场景1 某个医院每天都会从不同的制造商那里进三种材料中的一种 每天的进价都有可能不同 现在公司
  • NodeRed-第三篇:tcp接入

    1 用tcp in节点接入数据 设置为监听 设置端口号 设置输出为buffer 2 用function节点将buffer转换为string var a msg payload msg payload a return msg 3 用json
  • Android语音识别

    今天从网上找了个例子实现了语音识别 个人感觉挺好玩的 就把代码贴出来与大家分享下 Android中主要通过RecognizerIntent来实现语音识别 其实代码比较简单 但是如果找不到设置 就会抛出异常ActivityNotFoundEx