Android语音识别——谷歌语音识别与百度语音识别
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都是同样的结果。最终这只能归结为谷歌后台服务无法连接,你或者可以通过翻墙来看到效果。
悲伤。
那现在我们看看中国本地的语音识别,百度语音。
百度语音识别
jar包、so文件下载
权限添加
<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
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();}}
代码也只是简单的定义一个按钮,按钮绑定一个事件。
源码
Android语音识别——谷歌语音识别与百度语音识别相关推荐
- Android开发学习之使用百度语音识别SDK实现语音识别(上)
作为移动互联网杀手级的交互方式,语音识别从问世以来就一直备受人们的关注,从IOS的Siri到国内的讯飞语音,语音识别技术在移动开发领域是最为充满前景和希望的技术.Android作为一个移动操作系统,其 ...
- 语音识别唤醒python_python版百度语音识别功能
本文实例为大家分享了python版百度语音识别功能的具体代码,供大家参考,具体内容如下 环境:使用的IDE是Pycharm 1.新建工程 2.配置百度语音识别环境 "File"-- ...
- android开发-百度语音识别Android SDK的简单使用
目录 1.引言 2.开发环境 3.准备开发环境 3.1安装Android studio 3.2创建百度智能云平台应用 3.1下载百度语音识别SDK 4.实现语音识别的简单案例 4.1创建Android ...
- 百度token怎么获取_【专栏精选】实战:百度语音识别
洪流学堂公众号回复语音识别获取源码工程. 洪流学堂,让你快人几步.你好,我是郑洪智. 大智:"今天给你来点刺激的." 小新满面红光:"啥刺激的?人家可还是个小孩子.&qu ...
- 百度语音识别vs科大讯飞语音识别
一.结果 从笔者试验的结果来看,科大讯飞的语音识别技术远超百度语音识别 二.横向对比 科大讯飞语音识别 百度语音识别 费用 各功能的前5小时免费 全程免费 转换精准率 非常高 比较低 linux ...
- uniapp配置百度语音识别转文字(含demo)
前言 在dcloud社区已经给出了语音识别插件配置的步骤,点击前往:语音识别插件配置, 但是还是不够详细,有可能会遇到问题,所以我结合实例配置实现一下. 概述 HBuilderX已支持讯飞语音识别和百 ...
- android 百度语音 对话框,Android 通过调用系统接口使用如 谷歌语音、百度语音、讯飞语音等语音识别对话框的方法...
现在app的开发进程会集成一些语音识别功能,而一般开发者是不具备自己开发一套语音识别引擎的,因此大多数情况是选择一个已经成熟的语音识别引擎SDK集成到自己的app中. 通常情况下,这种集成分两种,一种 ...
- Android 调用谷歌语音识别:获取识别结果,进行文字输出
调用android 谷歌语音识别 ,获取识别结果,首先添加权限: <uses-permission android:name="android.permission.INTERNET& ...
- Baymax (Android版的Siri)之百度语音识别SDK调用
之前说Baymax 的UI设计,现在UI设计好了,我们得开始讲一讲识别方面的事了.这里我们需要用到百度的语音识别技术,大家可以先上百度语音开放平台,上面有开发手册和demo帮助大家学习.贴上连接:ht ...
最新文章
- pip安装提示PermissionError: [WinError 5]错误问题解决
- JS中URL编码参数(UrlEncode)
- ec200s 方案 移远_移远4GCat1无线通讯模块EC200S
- 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例
- oralce 笔记
- 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)
- HALCON学习之旅(三)
- npm上传自定义vue组件入门
- 前后端分离中后端常用的响应类
- c语言教程for,C语言菜鸟基础教程之for循环
- Spring5的几个新特性
- 关于CCS软件的Graph功能使用详解
- JavaScript交互式网页设计作业目录(作业笔记)
- mysql嵌套查询方式
- 洛谷 P1194 买礼物 题解
- matlab表示大于等于,matlab不等于怎么表示
- Windows 10应用MSN天气无法正常使用的解决方案
- 网络基础知识详解(图解版)
- 快消品行业B2B电商平台解决方案
- 矩阵分解 SVD 和 CUR的区别
热门文章
- 防坑指南: 杨工告诉你免联考国际硕士到底是个什么梗?
- Android 画中画(视频)
- 美国CPSIA关于玩具和儿童产品的测试要求,CPC证书要求
- 【题解】力扣78.子集
- 设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
- c语言中a的作用是什么意思,在c语言中* a是什么意思
- MySQL报错:IntegrityError: (1062, “Duplicate entry ‘111‘ for key ‘id‘“)
- 谷歌翻译 无法翻译此网页解决方案
- azure linux 配置端口,快速入门 - 在 Azure 门户中创建 Linux VM - Azure Virtual Machines | Microsoft Docs...
- 运算符(operator)