最近搞了一些关于语音的开发,我做的项目使用的讯飞的语音识别,但是有一个问题是讯飞的语音唤醒和离线语音合成是收费的,并且费用还不低,对于一般的小公司或者个人开发的小APP,还是很有压力的。百度语音识别的效果整体还不错,并且是免费的,很适合个人开发的APP,我这里先给大家简单介绍一下关于百度语音识别的开发,如果时间如许的情况下,我会把这两个平台的语音识别都给大家介绍一下。

现在我们开始吧!!

这是百度语音识别的文档 http://yuyin.baidu.com/docs/asr/166 。这里是百度文档给出的一部分解释:

开发步骤:

第一步:

注册一个百度账号,这个我就不过多的说了。

第二步:

创建一个应用,设置相关内容和下载SDK,大体过程如下:

第三步:

创建一个Android工程,我这里是用的eclipse,如果使用Android studio 大体上是差不多的,我这里也不具体说了。

第四步:

下载SDK(链接http://yuyin.baidu.com/sdk)这里下载需要注意,如果你创建的应用太多,需要注意选择你需要的应用。

下载后解压文件内容如下:

这里是对下载的SDK的说明:

将开发包中的libs和res目录分别合并到工程目录的libs和res目录。如果你不是用百度语音识别的界面可以不导入res文件的内容,我这里就不使用界面。

第五步:

配置AndroidManifest.xml,AndroidManifest.xml配置主要内容为:增加权限,填写鉴权信息,注册语音服务,注册对话框。具体示例如下:

配置权限:

    <uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

配置其他事项:

<pre name="code" class="html"> <span style="white-space:pre">   </span><!-- begin: baidu speech sdk--><!-- 请填写应用实际的APP_ID --><meta-data android:name="com.baidu.speech.APP_ID" android:value="你的ID"/><!-- 请填写应用实际的API_KEY --><meta-data android:name="com.baidu.speech.API_KEY" android:value="你的api_key"/><!-- 请填写应用实际的SECRET_KEY --><meta-data android:name="com.baidu.speech.SECRET_KEY" android:value="你的secret_key"/><service android:name="com.baidu.speech.VoiceRecognitionService" android:exported="false" ></service>

权限说明:

这些东西可以在这里获取

如果你使用百度语音识别的界面,需要配置下面的activity

         <activityandroid:name="com.baidu.voicerecognition.android.ui.BaiduASRDigitalDialog"android:configChanges="orientation|keyboardHidden|screenLayout"android:theme="@android:style/Theme.Dialog"android:exported="false"android:screenOrientation="portrait"><intent-filter><action android:name="com.baidu.action.RECOGNIZE_SPEECH" ></action><category android:name="android.intent.category.DEFAULT" ></category></intent-filter></activity>

接口的说明百度文档里面有具体说明(我感觉写的不如讯飞,链接http://yuyin.baidu.com/docs/asr/168)

最后一步

我这里直接上代码了。

package com.BDXCW;
import com.baidu.speech.VoiceRecognitionService;import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.SpeechRecognizer;
/*** 语音识别,将语音转换为文字* @author 莫谈天下**/
public class MySpeechRecognizer {public static final String TAG = MySpeechRecognizer.class.getSimpleName();private SpeechRecognizer speechRecognizer;@SuppressWarnings("unused")private Context context;private SpeechRecognizerCallBack callBack;/*** MySpeechRecognizer的构造方法* @param context 上下文对象*/public MySpeechRecognizer(Context context){this.context = context;// 创建识别器speechRecognizer = SpeechRecognizer.createSpeechRecognizer(context, new ComponentName(context, VoiceRecognitionService.class));// 注册监听器speechRecognizer.setRecognitionListener(new MyRecognitionListener());}/*** 设置回调接口* @param callBack 是SpeechRecognizerCallBack对象*/public void setCallBack(SpeechRecognizerCallBack callBack){this.callBack = callBack;}/*** 开始语音识别*/public void Start(){Intent intent = new Intent();speechRecognizer.startListening(intent);}/*** 开始语音识别* @param intent Inetnt对象,所有识别的参数都需要在intent中设置*/public void Start(Intent intent){speechRecognizer.startListening(intent);}/*** 停止录音,但是识别将继续*/public void Stop(){speechRecognizer.stopListening();}/*** 取消本次识别,已有录音也将不再识别*/public void cancel(){speechRecognizer.cancel();}/*** 销毁语音识别器,释放资源*/public void Destroy(){speechRecognizer.destroy();}private class MyRecognitionListener implements RecognitionListener{/*** 开始说话,当用户开始说话,会回调此方法。*/@Overridepublic void onBeginningOfSpeech() {}/*** 音量变化,引擎将对每一帧语音回调一次该方法返回音量值。*/public void onRmsChanged(float rmsdB) {}/*** 获取原始语音,此方法会被回调多次,buffer是当前帧对应的PCM语音数据,拼接后可得到完整的录音数据。*/public void onBufferReceived(byte[] buffer) {}/*** 说话结束,当用户停止说话后,将会回调此方法。*/public void onEndOfSpeech() {}/*** 识别出错,识别出错,将会回调此方法,调用该方法之后将不再调用onResults方法。* @param error 错误码*/public void onError(int error) {}/*** 识别最终结果,返回最终识别结果,将会回调此方法。* @param results 识别结果*/public void onResults(Bundle results) {String text =  results.get("results_recognition").toString().replace("]", "").replace("[", "");callBack.getResult(text);}/*** 识别临时结果,返回临时识别结果,将会回调此方法。* @param partialResults 临时结果*/public void onPartialResults(Bundle partialResults) {}/*** 识别事件返回,返回识别事件,将会回调此方法。* @param eventType 事件类型* @param params 参数*/public void onEvent(int eventType, Bundle params) {}/*** 识别准备就绪,只有当此方法回调之后才能开始说话,否则会影响识别结果。*/@Overridepublic void onReadyForSpeech(Bundle params) {} }/*** 识别结果回调接口* @author Administrator**/public interface SpeechRecognizerCallBack{/*** 返回结果* @param result String 结果*/public void getResult(String result);}
}

我这里是对百度语音醉了一个简单的封装,大家可以根据自己的具体需求修改。

百度语音识别就写到这里,转载希望标注出处,谢谢!

-----------------------------更新与2016年10月17日-----------------------------------------------------

这两天浏览了一下自己的这一篇博文,感觉里面少提了一些中要的东西,我这里补充一下。

百度语音识别中有一个方法如下:

void startListening(Intent recognizerIntent)

这个方法中的recognizerIntent 是一个intent对象,百度语音的参数就是通过这一个对象,向百度语音识别引擎传递参数。这里可以传递的参数有狠多,大家可以参照百度语音文档的具体说明,网址为:http://yuyin.baidu.com/docs/asr/169 。我这里给大家聚义个简单的例子,这个例子就是开启百度语义解析,代码如下:

 <span style="white-space:pre">     </span>Intent intent = new Intent();intent.putExtra("nlu", "enable");//开启语义理解intent.putExtra("prop", 10060);//这里是与地图相关的语义speechRecognizer.startListening(intent);</span>

如果大家有什么问题,可以提出来,后期我会不断完善这篇博文,谢谢!!

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

  1. Android 百度语音识别(详细步骤+源码)

    前言 因为项目中用到了语音识别的技术,但是项目源码我不能公开,所以,重新写一个简单的集成教程,不喜可不看,不做键盘侠,文明你我他. 效果图 识别结果 最终效果 源码在文章最后,不需要下载积分什么的,哪 ...

  2. Android百度语音识别/语音助手

    上一遍写了语音唤醒和语音合成,这篇写下语音合成 /*** 语音识别* Created by fujiayi on 2017/6/13.* EventManager内的方法如send 都可以在主线程中进 ...

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

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

  4. 安卓 百度语音识别

    Android 百度语音识别集成,非常简单 1.最近做一个语音识别的项目,网上找了个demo,很简单,直接调用这个类就可以,做个记录,方便以后用! public class OnLineUtils i ...

  5. 百度Android在线语音识别SDK用法

    百度Android语音识别SDK分在线与离线两种,这篇文章介绍在线SDK的用法. 在线SDK是以JAR包和动态链接库形式公布和使用,能够从百度开放云平台站点中下载SDK及使用说明文档. 完毕语音SDK ...

  6. Android语音识别——谷歌语音识别与百度语音识别

    Android语音识别,简单的理解就是把语音转化为文字. 在日常中,语音识别,车载导航.语音输入等,虽然不一定准确,但用途广泛. 这里就介绍下谷歌原生的语音识别与百度的语音识别 谷歌语音识别 谷歌语音 ...

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

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

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

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

  9. javaAPI和android sdk接入百度语音识别

    最近由于一项目需求,需要实现上位机对下位机的语音控制,(嫌弃语音模块太贵,才想着做没有成本的方法实现),这里主要测试了两种调用百度语音识别API的方案,一种是基于SDK(这里测试使用Android S ...

最新文章

  1. 怎么判断膝关节错位_路走多了,膝盖疼是怎么回事?
  2. 基于SSM实现图书管理系统
  3. python绘制3d图-Python绘制3D图形
  4. kali2 安装docker_Docker 装 kali 的全套操作
  5. 别人总结的一些git教程大全
  6. 支付宝:“我的小程序”用户访问量一周激增165%
  7. 复工后,汉堡薯条、奶茶“续命”又开始了
  8. springboot 手动提交事务_分布式事务开局第一篇,从数据库事务隔离级别说起
  9. linux企业版笔记之Samber服务的基本配置
  10. 【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题
  11. java生成pdf的流_Java 文件输出流.pdf
  12. 5.VM虚拟机网络设置---桥接模式
  13. 张柏芝-从清纯走向堕落
  14. Docker加速器配置
  15. 小草 李白 《菩萨蛮》
  16. 增强型GaN器件的驱动电路
  17. 理解Sharpe夏普比率与Python实现
  18. 人品与能力的心态问题
  19. NO:01是什么意思?
  20. 基于JAVAWeb商铺租赁管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

热门文章

  1. 【C++】auto关键字
  2. 2022年乡村医生考试经典试题及答案
  3. 2020年最流行的插画风格, 不得不看
  4. 成都榆熙电子商务有限公司:拼多多月卡都有哪些方式的优惠?
  5. 少儿编程怎么培养罗辑思维
  6. PS首行缩进2个字符的正确设置方法介绍
  7. Mysql数据库面试典籍30+ | 大别山码将
  8. mtk NVRAM研究系列
  9. Siege多线程编程最佳实例微信约战斗牛网站搭建
  10. MySQL - 索引原理及其优化