一、引言

利用百度语音识别和百度语音合成可以很方便的设计一个语音交互应用,这里记录一下百度在线语音识别的简单例子以便快速上手。

我所用的语音识别包的版本是Baidu-Voice-SDK-Android-1.6.2.zip,开发平台用的是Android Studio 1.3.2,操作系统是win10(64bit)。

二、导入语音识别SDK

下载的百度语音包目录结构如下:

VoiceRecognitionDemo文件夹里是一个demo

libs和res目录就是我们要导入的库文件

1、将libs和res文件夹拷到相应目录

先将libs文件夹整个复制到工程文件夹下,比如我的Android Studio设置的工作空间为D:\Android\workspace\,我新建一个应用名为testvoice,那我就把libs文件复制到D:\Android\workspace\Testvoice\app目录下。也可以先复制libs,然后在Android Studio中工程目录中选中app文件夹,右键选择Paste,直接将libs文件夹粘贴过来。

再把资源文件夹res拷到D:\Android\workspace\Testvoice\app\src\main文件夹下

注意,这里仅仅只是将文件夹拷过来而已,.jar和.so都还未能导入到工程中。

2、将libs中的.jar和.so添加为库文件

在Android Studio的Project视图下打开Testvoice/app/libs文件夹可以看到Baidu-SpeechRecognitionUI-SDK-Android-1.6.2.jar,右键单击它选择Add as library,然后在出现的Create Library对话框中选择一个module,我这里当然选择app这个module了。

然后我们还需要引入.so文件,这个时候就需要修改build.gradle配置文件了,在android语句块内紧跟buildTypes语句块添加两个语句块如下:

task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {

destinationDir file("$projectDir/libs")

baseName "Native_Libs2"

extension "jar"

from fileTree(dir: "libs", include: "armeabi/*.so")

into "lib"

}

tasks.withType(JavaCompile) {

compileTask -> compileTask.dependsOn(nativeLibsToJar)

}

注意:这里面语句

from fileTree(dir: "libs", include: "armeabi/*.so")

armeabi/*.so是需要根据.so文件的路径来改的,由于我的.so文件都放在libs子文件夹armeabi中,所以斜杠前面写的是armeabi。

完整的build.gradle文件如下:

apply plugin: 'com.android.application'

android {

compileSdkVersion 23

buildToolsVersion "23.0.1"

defaultConfig {

applicationId "com.example.zjl.testvoice"

minSdkVersion 14

targetSdkVersion 23

versionCode 1

versionName "1.0"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {

destinationDir file("$projectDir/libs")

baseName "Native_Libs2"

extension "jar"

from fileTree(dir: "libs", include: "armeabi/*.so")

into "lib"

}

tasks.withType(JavaCompile) {

compileTask -> compileTask.dependsOn(nativeLibsToJar)

}

}

dependencies {

compile fileTree(include: ['*.jar'], dir: 'libs')

compile 'com.android.support:appcompat-v7:23.0.1'

}

到这里百度在线语音识别库已经导入我的工程testvoice中。

三、修改AndroidManifest.xml文件

导入库文件之后我们还需要先为我们的应用设置权限:

这段代码加到标签的前面

完整的文件如下:

四、在界面上放一个按钮和一个文本框

我们打开Testvoice\app\src\main\res\layout\activity_main.xml

在界面上放一个按钮用来启动语音识别,文本框用来显示识别结果

五、主要代码

然后我们开始写MainActivity.java中的代码

package com.example.zjl.testvoice;

import com.baidu.voicerecognition.android.ui.BaiduASRDigitalDialog;

import com.baidu.voicerecognition.android.ui.DialogRecognitionListener;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import java.util.ArrayList;

public class MainActivity extends Activity {

private static final int REQUEST_UI = 1;

private Button button_start;//开始按钮

private EditText text_input;//语音识别对话框

private BaiduASRDigitalDialog mDialog = null;

private DialogRecognitionListener mDialogListener = null;

private String API_KEY = "I2xMGLGkBXYjdRC2Sj7FHWr3";

private String SECRET_KEY = "ca1b72510ceb4a7e48344f7aa83dac49";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

if (mDialog == null) {

if (mDialog != null) {

mDialog.dismiss();

}

Bundle params = new Bundle();

//设置API_KEY

params.putString(BaiduASRDigitalDialog.PARAM_API_KEY, API_KEY);

params.putString(BaiduASRDigitalDialog.PARAM_SECRET_KEY, SECRET_KEY);

//设置百度对话框主题

params.putInt(BaiduASRDigitalDialog.PARAM_DIALOG_THEME, BaiduASRDigitalDialog.THEME_BLUE_LIGHTBG);

//实例化百度语音识别

mDialog = new BaiduASRDigitalDialog(this, params);

//设置百度语音回调接口

mDialogListener = new DialogRecognitionListener() {

@Override

public void onResults(Bundle mResults) {

ArrayList rs = mResults != null ? mResults.getStringArrayList(RESULTS_RECOGNITION) : null;

if (rs != null && rs.size() > 0) {

text_input.setText(rs.get(0));

}

}

};

mDialog.setDialogRecognitionListener(mDialogListener);

}

//界面

button_start = (Button) findViewById(R.id.button_start);

text_input = (EditText) findViewById(R.id.text_input);

button_start.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

mDialog.show();

}

});

}

}

android 百度语音 ui,在Android Studio下使用百度语音识别的一个简单例子相关推荐

  1. android智能语音播放器,android IM模块-语音-播放篇1

    MediaPlayer MediaPlayer是我们经常用的一个音频播放类 创建的方式有很多种,可以直接new一个,也可以直接调用MediaPlayer.creat(xxx) 常用API有如下 voi ...

  2. android电话语音播放,使用Android自带的TTS实现语音播报(电话号码)功能

    事先声明:该文章参考以下几篇文章,如果大家想看,可直接点击进入: https://github.com/SolveBugs/Utils/blob/master/SpeechUtils.java htt ...

  3. Android Studio下加入百度地图的使用 (一)——环境搭建

    最近有学生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新到了3.5,但是在AndroidStudio中使用还是存在一些不稳 ...

  4. android 环信集成,Android Studio下的环信即时通讯简单集成

    环信即时通讯云是全球最大的即时通讯云 PaaS 平台,可以快速实现APP的即时通讯的功能,官方的DEMO是基于Eclipse开发的,对于新版本的Android Studio支持不太好,下面就简单说一下 ...

  5. android如何开发ui服务,Android UI-对Activity工作流程的理解(一)

    概述 在android studio创建一个新项目的时候,或者初学者在刚踏入android开发的时候,都会在首先创建一个MainActivity.根据一般的理解,Activity的就相当于一个界面的入 ...

  6. android 运行在ui县城,Android基础:在UI线程中运行代码

    Android基础:在UI线程中运行代码 从在UI线程中运行代码的角度来看,在以下方面有什么区别:MainActivity.this.runOnUiThread(new Runnable() { pu ...

  7. android即时通讯ui框架,android IM即时通信之聊天界面UI框架

    写在最前面 现在很多软件都要求加入即时通信的功能,当然很多都用了三方(环信.融信...).最近,项目也有此需求,我们选择的是环信.环信也提供了UI框架,但是说实在的一般的应用用不了那么多功能,可能就简 ...

  8. 三星android的one ui,基于Android 11!三星OneUI 3.0详细升级计划公布

    本周,三星方面公布了基于Android 11的OneUI 3.0具体升级安排,其最早出现了埃及地区手机用户的三星会员APP中. 2020年12月: Galaxy S20 Ultra.Galaxy S2 ...

  9. android统一错误ui展示,Android UI异常分析

    根据最近的工作经验,总结出以下几点: 图片错误: 1,a.9.filename标准命名中,缺少.9 错误显示:如果标记了内容区域,则图像右下有异常的黑线.因为ninepatch图最外一个像素来标记ni ...

最新文章

  1. 迁移学习,让深度学习不再困难……
  2. Android的进程优先级
  3. vs2010无法调试JS
  4. 使用cocoapods时,import 找不到头文件。
  5. 只需几分钟跟小猫学前端(内含视频教程):nodejs基础之用express、ejs、mongdb建设简单的网站...
  6. LiveVideoStack线上分享第三季(二):对话机器人与儿童电子消费品
  7. php 工厂静态类,静态工厂模式(Static Factory)
  8. maven project module 依赖项目创建 ---转
  9. Linux系统服务之dhcp
  10. 斗地主AI算法——第十五章の测试模块
  11. UITextView UITextField退出键盘的常用三种方式
  12. WEB前端开发快速入门教程
  13. python基于scrapy框架爬取当当图书信息
  14. DMS疲劳驾驶监测系统
  15. leetCode_Patching Array
  16. 1.14 JavaScript5:常用DOM操作
  17. Linux系统使用ie浏览器,Ubuntu Linux系统上安装IE浏览器的方法
  18. GCC编译器原理(二)------编译原理一:目标文件
  19. 知言 代立冬:大家都在关注Hbase到底是怎样的?
  20. 【Word】实习证明简易模板

热门文章

  1. cocos creator moveTo 或者moveBy 连续调用问题
  2. 家庭电气火灾原因分析及解决方案
  3. 2020法定节假日mysql导入数据库(附2020法定节假日下载链接)
  4. 化解射频和微波设计挑战的六个技巧
  5. CodeForces - 11C How Many Squares?【DFS】
  6. CentOS虚拟机访问外部网络
  7. java permgen space_PermGen space 与 Java heap space
  8. Python PIL库 安装
  9. css 剪辑图片_CSS 截取图片只显示部分图片
  10. 第一行代码十一章:(基于位置的服务) 3C-58-C2-5D-F8-FE