第一步

① 创建平台应用

点击百度智能云进入,没有账号的可以先注册账号,这里默认都有账号了,然后登录。

然后左侧导航栏点击找到语音技术

然后会进入一个应用总览页面,

然后点击创建应用

立即创建

点击查看应用详情

这几个值都是等下项目中要用的,请注意,最好是复制粘贴,不要手打,上图中有一个下载SDK,点击进入下载页面,第一个就是

点击下载到本地,下载之后是一个压缩文件,解压之后先不用管它,

第二步

然后在Android Studio里面创建一个项目

② 创建Android项目并配置。包名填之前创建应用时填的包名

将下载的SDK中的core复制到你项目的app同级目录下,

打开core中的src/main/AndroidManifest.xml

在里面修改成你的apiid ,appid,secretid

第三步

示例代码:

MainActivity.java

  1. package com.yyz.asrdemo;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import androidx.core.app.ActivityCompat;
  4. import androidx.core.content.ContextCompat;
  5. import android.Manifest;
  6. import android.content.pm.PackageManager;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import com.baidu.speech.EventListener;
  12. import com.baidu.speech.EventManager;
  13. import com.baidu.speech.EventManagerFactory;
  14. import com.baidu.speech.asr.SpeechConstant;
  15. import java.util.ArrayList;
  16. import java.util.regex.Matcher;
  17. import java.util.regex.Pattern;
  18. public class MainActivity extends AppCompatActivity implements EventListener {
  19. protected EditText txtResult;//识别结果
  20. protected Button startBtn;//开始识别,持续一定时间不说话会自动停止,需要再次打开
  21. protected Button stopBtn;//停止识别,立即停止,直接输出已经识别的内容
  22. private EventManager asr;//语音识别核心库
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27. initView();
  28. initPermission();
  29. //初始化EventManager对象
  30. asr = EventManagerFactory.create(this, "asr");
  31. //注册自己的输出事件类
  32. asr.registerListener(this); // EventListener 中 onEvent方法
  33. }
  34. /**
  35. * android 6.0 以上需要动态申请权限
  36. */
  37. private void initPermission() {
  38. String permissions[] = {Manifest.permission.RECORD_AUDIO,
  39. Manifest.permission.ACCESS_NETWORK_STATE,
  40. Manifest.permission.INTERNET,
  41. Manifest.permission.WRITE_EXTERNAL_STORAGE
  42. };
  43. ArrayList<String> toApplyList = new ArrayList<String>();
  44. for (String perm : permissions) {
  45. if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
  46. toApplyList.add(perm);
  47. //进入到这里代表没有权限
  48. }
  49. }
  50. String tmpList[] = new String[toApplyList.size()];
  51. if (!toApplyList.isEmpty()) {
  52. ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123);
  53. }
  54. }
  55. /**
  56. * 权限申请回调,可以作进一步处理
  57. * @param requestCode
  58. * @param permissions
  59. * @param grantResults
  60. */
  61. @Override
  62. public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
  63. // 此处为android 6.0以上动态授权的回调,用户自行实现。
  64. }
  65. /**
  66. * 初始化控件
  67. */
  68. private void initView() {
  69. txtResult = (EditText) findViewById(R.id.edittext);
  70. startBtn = (Button) findViewById(R.id.btn_start);
  71. stopBtn = (Button) findViewById(R.id.btn_stop);
  72. startBtn.setOnClickListener(new View.OnClickListener() {//点击开始按钮
  73. @Override
  74. public void onClick(View v) {
  75. asr.send(SpeechConstant.ASR_START, null, null, 0, 0);
  76. }
  77. });
  78. stopBtn.setOnClickListener(new View.OnClickListener() {//点击停止按钮
  79. @Override
  80. public void onClick(View v) {
  81. asr.send(SpeechConstant.ASR_STOP, null, null, 0, 0);
  82. }
  83. });
  84. }
  85. /**
  86. * 自定义输出事件类 EventListener 回调方法
  87. */
  88. @Override
  89. public void onEvent(String name, String params, byte[] data, int offset, int length) {
  90. if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)) {
  91. // 识别相关的结果都在这里
  92. if (params == null || params.isEmpty()) {
  93. return;
  94. }
  95. if (params.contains("\"final_result\"")) {
  96. // 一句话的最终识别结果
  97. String regrex = "\\[(.*?),"; //使用正则表达式抽取我们需要的内容
  98. Pattern pattern = Pattern.compile(regrex);
  99. Matcher matcher = pattern.matcher(params);
  100. if (matcher.find()) {
  101. int a = matcher.group(0).indexOf("[");
  102. int b = matcher.group(0).indexOf(",");
  103. txtResult.setText(matcher.group(0).substring(a+2,b-3));
  104. }
  105. }
  106. }
  107. }
  108. @Override
  109. protected void onDestroy() {
  110. super.onDestroy();
  111. //发送取消事件
  112. asr.send(SpeechConstant.ASR_CANCEL, "{}", null, 0, 0);
  113. //退出事件管理器
  114. // 必须与registerListener成对出现,否则可能造成内存泄露
  115. asr.unregisterListener(this);
  116. }
  117. }

activity_main.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. -<androidx.constraintlayout.widget.ConstraintLayout tools:context=".MainActivity" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android">
  3. <EditText android:layout_height="wrap_content" android:layout_width="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:hint="请点击开始录音" android:id="@+id/edittext"/>
  4. <Button android:layout_height="wrap_content" android:layout_width="wrap_content" app:layout_constraintTop_toTopOf="@+id/btn_stop" android:id="@+id/btn_start" app:layout_constraintEnd_toStartOf="@+id/edittext" android:text="开始录音"/>
  5. <Button android:layout_height="wrap_content" android:layout_width="wrap_content" app:layout_constraintTop_toTopOf="parent" android:id="@+id/btn_stop" android:text="停止录音" app:layout_constraintStart_toEndOf="@+id/edittext" android:layout_marginTop="116dp"/>
  6. </androidx.constraintlayout.widget.ConstraintLayout>

跑起来!!

Android使用百度语音识别api代码实现。的更多相关文章

  1. 百度语音识别API初探

    近期想做个东西把大段对话转成文字.用语音输入法太慢,所以想到看有没有现成的API,网上一搜,基本就是百度和讯飞. 这里先看百度的 笔者使用的是Java版本号的 下载地址:http://bos.nj.b ...

  2. Android通过百度地图API用Service和Alarm在后台定时获取地理位置信息

    本文主要介绍了Android项目集成百度地图API,使用AlarmManager定时调用Service,在Service中请求坐标更新,并通过坐标得到省.市和县三级地理位置信息的方法. 程序结构很简单 ...

  3. 基于百度语音识别API的Python语音识别小程序

    一.功能概述 实现语音为文字,可以扩展到多种场景进行工作,这里只实现其基本的语言接收及转换功能. 在语言录入时,根据语言内容的多少与停顿时间,自动截取音频进行转换. 工作示例: 二.软件环境 操作系统 ...

  4. Android端百度地图API使用详解

    百度地图API简介 百度地图移动版API(Android)是一套基于Android设备的应用程序接口,通过该接口,可以轻松的访问百度服务和数据,构建功能丰富.交互性强的地图应用程序. 百度地图移动版A ...

  5. 【转载】Android端百度地图API使用详解

    转载地址:http://www.cnblogs.com/rocomp/p/4994110.html 百度地图API简介 百度地图移动版API(Android)是一套基于Android设备的应用程序接口 ...

  6. android 基于百度地图api开发定位以及获取详细地址

    一:百度地图开发必须要到百度开发平台android开发api下载相应的库,已经申请百度地图开发key. 二:新建项目baidumaplocation.设计main.xml文件这里注意的是MapView ...

  7. Android使用百度地图API实现GPS步行轨迹

    百度地图Android SDK下载:http://developer.baidu.com/map/sdkandev-download.htm 下面是效果: 采样点取得太频繁所以看起来像是一个个点... ...

  8. Android 调用百度地图API

    一.到 百度地图开发平台下载SDK http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 1.点击自定义下载 2.下 ...

  9. Android引用百度定位API第三方组件后导致其它.so文件无法正常加载的问题

    查看当前调试设备CPU架构的方法: adb.exe shell getprop ro.product.cpu.abi  (一般返回值为:armeabi-v7a) adb.exe shell getpr ...

随机推荐

  1. Jetpack MVVM 实战项目,附带源码+视频,收藏!

    从读者的反馈来看,近期大部分安卓开发已跳出舒适圈,开始尝试认识和应用 Jetpack MVVM 到实际的项目开发中. 只可惜,关于 Jetpack MVVM,网上多是 东拼西凑.人云亦云.通篇贴代码  ...

  2. 获取元素在页面中位置 getBoundingClientRect()

    DOM 原生方法getBoundingClientRect()获取元素相对视口位置 DOMRect 对象包含了一组用于描述边框的只读属性--left.top.right和bottom,单位为像素.除了 ...

  3. Vue-axios 封装了一手好axios:)

    请求方式 很多种请求方式,重点还是第一种吧 下载 npm install axios --save 下载完成 直接导入 import axios from 'axios' 简单配置 axios({ u ...

  4. MongoDB-03-分片集群

    分片集群(Sharding Cluster) 架构图 规划 10个实例:38017-38026 1 configserver:38018-38020 3台构成的复制集(1主两从,不支持arbiter) ...

  5. SpringBoot开发十八-显示评论

    需求介绍 显示评论,还是我们之前做的流程. 数据层:根据实体查询一页的评论数据,以及根据实体查询评论的数量 业务层:处理查询评论的业务,处理查询评论数量的业务 表现层:同时显示帖子详情数据时显示该帖子 ...

  6. 使用Postfix与Dovecot收发电子邮件(物理机虚拟机之间)

    邮件应用协议包括: 简单邮件传输协议(SMTP),用来发送或中转发出的电子邮件,占用tcp 25端口. 第三版邮局协议(POP3),用于将服务器上把邮件存储到本地主机,占用tcp 110端口. 第四版 ...

  7. 06-SpringCloud Eureka

    Eureka基础知识 什么是服务治理 Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理 在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理 ...

  8. Java - Enum 枚举类型

    目录 前言 应用 定义 基本Enum特性 Enum的静态导入 Enum中添加新方法 Switch语句中的Enum Enum的继承 EnumSet的使用 EnumMap的使用 常量相关方法 枚举值向枚举 ...

  9. docker加速器,设置cdn

    添加加速器 vim /etc/docker/daemon.json 添加如下内容 { "registry-mirrors": ["https://registry.doc ...

  10. 程序员必须知道的数据结构:HashMap 与 LinkedHashMap

    为什么要说 HashMap 与 LinkedHashMap?第一:这两种数据结构是 Java Coder 中经常使用的数据结构.第二:这两种结构是最合适的能说明链表与数组的结构关系.在开始之前首先必须 ...