Android语音识别,简单的理解就是把语音转化为文字。

在日常中,语音识别,车载导航、语音输入等,虽然不一定准确,但用途广泛。

这里就介绍下谷歌原生的语音识别与百度的语音识别

谷歌语音识别

谷歌语音识别做法很简单

1、首先检测本地是否有语音识别工具,比如谷歌语音搜索,如果没有就结束;

2、用intent意图表示语音识别;

3、发送这个intent,并等待返回;

4、显示返回的内容;

具体的代码如下:

package com.example.speak_csdn;import java.util.ArrayList;
import java.util.List;import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;public class MainActivity extends Activity {final int RESPONCERESULT=99;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btnButton=(Button)findViewById(R.id.mybtn);btnButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubspeak();}});}public void speak(){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, RESPONCERESULT);  }catch (Exception e) {  // TODO: handle exception  e.printStackTrace();  Toast.makeText(getApplicationContext(), "找不到语音设备", 1).show();  }  }@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stub//回调获取从谷歌得到的数据   if(requestCode==RESPONCERESULT && 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);}}

代码完成了,注意要加上网络访问权限,因为这个是在线语音识读,代码关键的语句在以下几句:

 //通过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, RESPONCERESULT);  

对应这个的布局语句很简单,只有一个button按钮。给这个按钮绑定事件,点击运行...

这和我们预料的不同啊,网络没有问题,测试了WIFI和GPRS都是同样的结果。最终这只能归结为谷歌后台服务无法连接,你或者可以通过翻墙来看到效果。

悲伤。

那现在我们看看中国本地的语音识别,百度语音。

百度语音识别

百度语音识别,应用的是百度提供的SDK来实现。这个在百度的开放平台上可以看到很详细的说明。
应用它的步骤如下:
1、下载jar包;
2、添加权限;
3、在代码中,用给定的API来做语音识别;
4、显示返回内容;

jar包、so文件下载

以下是从百度开放平台上下载的jar包以及so文件,用于后续的开发使用

权限添加

AndroidManifest.xml中添加需要的权限,如下:
    <uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 蓝牙录音 --><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><!-- 某些手机启动SCO音频连接需要此权限 --><uses-permission android:name="android.permission.BROADCAST_STICKY" /><!-- 蓝牙录音检测耳机状态 --><uses-permission android:name="android.permission.BLUETOOTH" />

代码中使用API

这个就是使用API的过程,如下代码:
package com.example.baiduspeak_csdn;import java.util.ArrayList;import com.baidu.voicerecognition.android.ui.BaiduASRDigitalDialog;
import com.baidu.voicerecognition.android.ui.DialogRecognitionListener;import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;public class MainActivity extends Activity {//百度自定义对话框private BaiduASRDigitalDialog mDialog = null;//对话框监听private DialogRecognitionListener mRecognitionListener;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btnButton=(Button)findViewById(R.id.mybtn);btnButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubspeak_Baidu();}});mRecognitionListener = new DialogRecognitionListener() {@Overridepublic void onResults(Bundle results) {ArrayList<String> rs = results != null ? results.getStringArrayList(RESULTS_RECOGNITION) : null;if (rs != null && rs.size() > 0) {Toast.makeText(MainActivity.this, rs.get(0), 1).show();}}};}//百度语音识别public void speak_Baidu(){if (mDialog != null) {mDialog.dismiss();}Bundle params = new Bundle();//设置注册百度开放平台得到的值 API_KEY,SECRET_KEYparams.putString(BaiduASRDigitalDialog.PARAM_API_KEY, Constants.API_KEY);params.putString(BaiduASRDigitalDialog.PARAM_SECRET_KEY, Constants.SECRET_KEY);//设置对话框模式params.putInt(BaiduASRDigitalDialog.PARAM_DIALOG_THEME, Config.DIALOG_THEME);//根据设置新建对话框mDialog = new BaiduASRDigitalDialog(this, params);//设置对话框的监听mDialog.setDialogRecognitionListener(mRecognitionListener);//对话框设置mDialog.getParams().putInt(BaiduASRDigitalDialog.PARAM_PROP, Config.CURRENT_PROP);mDialog.getParams().putString(BaiduASRDigitalDialog.PARAM_LANGUAGE, Config.getCurrentLanguage());mDialog.getParams().putBoolean(BaiduASRDigitalDialog.PARAM_START_TONE_ENABLE, Config.PLAY_START_SOUND);mDialog.getParams().putBoolean(BaiduASRDigitalDialog.PARAM_END_TONE_ENABLE, Config.PLAY_END_SOUND);mDialog.getParams().putBoolean(BaiduASRDigitalDialog.PARAM_TIPS_TONE_ENABLE, Config.DIALOG_TIPS_SOUND);mDialog.show();}@Overrideprotected void onDestroy() {if (mDialog != null) {mDialog.dismiss();}super.onDestroy();}}

代码也只是简单的定义一个按钮,按钮绑定一个事件。

事件发起时,我们设定了挺多参数,重要的有平台分配的APP_KEY,SECRET_KEY,PROP,语言的选择等。
根据这些,百度对我们发出的声音,在服务端,得到匹配的内容并返回前端。
效果如下:
这个效果我们是能看到的。简单的用法就是这样的。类似谷歌语音,一个请求即可。

源码

源码包括以上的谷歌和百度语音识别,可供下载:
http://download.csdn.net/detail/yangzhaomuma/9329547

Android语音识别——谷歌语音识别与百度语音识别相关推荐

  1. Android开发学习之使用百度语音识别SDK实现语音识别(上)

    作为移动互联网杀手级的交互方式,语音识别从问世以来就一直备受人们的关注,从IOS的Siri到国内的讯飞语音,语音识别技术在移动开发领域是最为充满前景和希望的技术.Android作为一个移动操作系统,其 ...

  2. 语音识别唤醒python_python版百度语音识别功能

    本文实例为大家分享了python版百度语音识别功能的具体代码,供大家参考,具体内容如下 环境:使用的IDE是Pycharm 1.新建工程 2.配置百度语音识别环境 "File"-- ...

  3. android开发-百度语音识别Android SDK的简单使用

    目录 1.引言 2.开发环境 3.准备开发环境 3.1安装Android studio 3.2创建百度智能云平台应用 3.1下载百度语音识别SDK 4.实现语音识别的简单案例 4.1创建Android ...

  4. 百度token怎么获取_【专栏精选】实战:百度语音识别

    洪流学堂公众号回复语音识别获取源码工程. 洪流学堂,让你快人几步.你好,我是郑洪智. 大智:"今天给你来点刺激的." 小新满面红光:"啥刺激的?人家可还是个小孩子.&qu ...

  5. 百度语音识别vs科大讯飞语音识别

    一.结果 从笔者试验的结果来看,科大讯飞的语音识别技术远超百度语音识别 二.横向对比   科大讯飞语音识别 百度语音识别 费用 各功能的前5小时免费 全程免费 转换精准率 非常高 比较低 linux ...

  6. uniapp配置百度语音识别转文字(含demo)

    前言 在dcloud社区已经给出了语音识别插件配置的步骤,点击前往:语音识别插件配置, 但是还是不够详细,有可能会遇到问题,所以我结合实例配置实现一下. 概述 HBuilderX已支持讯飞语音识别和百 ...

  7. android 百度语音 对话框,Android 通过调用系统接口使用如 谷歌语音、百度语音、讯飞语音等语音识别对话框的方法...

    现在app的开发进程会集成一些语音识别功能,而一般开发者是不具备自己开发一套语音识别引擎的,因此大多数情况是选择一个已经成熟的语音识别引擎SDK集成到自己的app中. 通常情况下,这种集成分两种,一种 ...

  8. Android 调用谷歌语音识别:获取识别结果,进行文字输出

    调用android 谷歌语音识别 ,获取识别结果,首先添加权限: <uses-permission android:name="android.permission.INTERNET& ...

  9. Baymax (Android版的Siri)之百度语音识别SDK调用

    之前说Baymax 的UI设计,现在UI设计好了,我们得开始讲一讲识别方面的事了.这里我们需要用到百度的语音识别技术,大家可以先上百度语音开放平台,上面有开发手册和demo帮助大家学习.贴上连接:ht ...

最新文章

  1. pip安装提示PermissionError: [WinError 5]错误问题解决
  2. JS中URL编码参数(UrlEncode)
  3. ec200s 方案 移远_移远4GCat1无线通讯模块EC200S
  4. 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例
  5. oralce 笔记
  6. 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)
  7. HALCON学习之旅(三)
  8. npm上传自定义vue组件入门
  9. 前后端分离中后端常用的响应类
  10. c语言教程for,C语言菜鸟基础教程之for循环
  11. Spring5的几个新特性
  12. 关于CCS软件的Graph功能使用详解
  13. JavaScript交互式网页设计作业目录(作业笔记)
  14. mysql嵌套查询方式
  15. 洛谷 P1194 买礼物 题解
  16. matlab表示大于等于,matlab不等于怎么表示
  17. Windows 10应用MSN天气无法正常使用的解决方案
  18. 网络基础知识详解(图解版)
  19. 快消品行业B2B电商平台解决方案
  20. 矩阵分解 SVD 和 CUR的区别

热门文章

  1. 防坑指南: 杨工告诉你免联考国际硕士到底是个什么梗?
  2. Android 画中画(视频)
  3. 美国CPSIA关于玩具和儿童产品的测试要求,CPC证书要求
  4. 【题解】力扣78.子集
  5. 设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
  6. c语言中a的作用是什么意思,在c语言中* a是什么意思
  7. MySQL报错:IntegrityError: (1062, “Duplicate entry ‘111‘ for key ‘id‘“)
  8. 谷歌翻译 无法翻译此网页解决方案
  9. azure linux 配置端口,快速入门 - 在 Azure 门户中创建 Linux VM - Azure Virtual Machines | Microsoft Docs...
  10. 运算符(operator)