换了好几个语音转文字的工具,主要跟百度上大家的方法一样,最开始用的科大讯飞的语音,真的还蛮好用的,整体来说demo的接口比较清晰吧~准确率也很高,但是量大就要收费。所以,换了第二种,Android原生语音识别功能,但是,现在很多手机都进不去Google了,开放的接口也用不了,小米可以用哦。已经试过了,照网上的去调原生的接口,对于小米就直接可以去调小爱了!惊喜,哈哈哈,原谅我书读得少!但是其他很多手机还是用不了了,所以,放弃了。最后只能选百度免费的语音识别了!
这里呢,首先很感谢 https://www.jb51.net/article/106299.htm?winzoom=1#comments ,
这里的工具类SpeechRecognizerTool把百度语音识别中可能会用到的接口给列出来了,直接可以用,对于初学者来说很棒~~因为要实现说话时,跟微信一样的语音提示框,所以参考了 https://blog.csdn.net/lhk147852369/article/details/78658055 的对话框的写法
百度语音首先:
1.创建一个应用,拥有应用的APPID,API_KEY,SECRET_KEY,下载Android的sdk,会有一个demo。
文件名:audiobd_speech_sdk_asr_v3.0.8.2_20180801_d6f298a
把下载的文件中 core->src->main->jniLibs中的5个文件放到自己工程中的app->src->main->(自己新建)jniLibs中
把下载的文件中的core->libs中的bdasr_V3_20180801_d6f298a.jar拷贝放到自己工程中的app->libs中,然后在自己的项目中

2.然后在manifest里面application或者你自己的activity下添加

     <meta-data android:name="com.baidu.speech.APP_ID"android:value="*******" /><meta-dataandroid:name="com.baidu.speech.API_KEY"android:value="******************" /><meta-dataandroid:name="com.baidu.speech.SECRET_KEY"android:value="**********************************" /><service android:name="com.baidu.speech.VoiceRecognitionService" android:exported="false" />

3.添加权限
(1)静态的 manifest中的权限

<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" />

(2)动态的权限申请

/*** android 6.0 以上需要动态申请权限*/
private void initPermission() {String permissions[] = {Manifest.permission.RECORD_AUDIO,Manifest.permission.ACCESS_NETWORK_STATE,Manifest.permission.INTERNET,Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE};ArrayList<String> toApplyList = new ArrayList<String>();for (String perm :permissions){if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {toApplyList.add(perm);//进入到这里代表没有权限.}}String tmpList[] = new String[toApplyList.size()];if (!toApplyList.isEmpty()){ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123);}}@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {// 此处为android 6.0以上动态授权的回调,用户自行实现。
}

4.SpeechRecognizerTool这个工具类
他们写的哈:https://www.jb51.net/article/106299.htm?winzoom=1#comments

package com.yjp.speechrecognizer; import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.SpeechRecognizer;
import android.widget.Toast; import com.baidu.speech.VoiceRecognitionService; public class SpeechRecognizerTool implements RecognitionListener { public interface ResultsCallback { void onResults(String result);
}private Context mContext; private SpeechRecognizer mSpeechRecognizer; private ResultsCallback mResultsCallback; public SpeechRecognizerTool(Context context) { mContext = context; } public synchronized void createTool() { if (null == mSpeechRecognizer) { // 创建识别器 mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(mContext, new ComponentName(mContext, VoiceRecognitionService.class)); // 注册监听器 mSpeechRecognizer.setRecognitionListener(this); } } public synchronized void destroyTool() {
mSpeechRecognizer.stopListening();
mSpeechRecognizer.destroy();
mSpeechRecognizer = null;
} // 开始识别 public void startASR(ResultsCallback callback) { mResultsCallback = callback; Intent intent = new Intent();
bindParams(intent);
mSpeechRecognizer.startListening(intent); } //停止识别
public void stopASR() {
mSpeechRecognizer.stopListening(); } private void bindParams(Intent intent) {
// 设置识别参数 } @Overridepublic void onReadyForSpeech(Bundle params) { // 准备就绪 Toast.makeText(mContext, "请开始说话", Toast.LENGTH_SHORT).show();
} @Overridepublic void onBeginningOfSpeech() { // 开始说话处理 } @Overridepublic void onRmsChanged(float rmsdB) { // 音量变化处理 //这里可以调用声音大小哦,在写像微信一样的声音的时候就可以直接调用哦~} @Overridepublic void onBufferReceived(byte[] buffer) { // 录音数据传出处理 } @Overridepublic void onEndOfSpeech() { // 说话结束处理 } @Overridepublic void onError(int error) { } @Overridepublic void onResults(Bundle results) { // 最终结果处理
if (mResultsCallback != null) { String text = results.get(SpeechRecognizer.RESULTS_RECOGNITION) .toString().replace("]", "").replace("[", ""); mResultsCallback.onResults(text); } } @Overridepublic void onPartialResults(Bundle partialResults) {
// 临时结果处理 } @Overridepublic void onEvent(int eventType, Bundle params) { }
}

5.在把他们的调用方法拿上来,可以参考使用工具类

package com.yjp.speechrecognizer; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends AppCompatActivity implements SpeechRecognizerTool.ResultsCallback { private Button mStartSpeechButton; private TextView mTextView; private SpeechRecognizerTool mSpeechRecognizerTool = new SpeechRecognizerTool(this); @Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.speechTextView); mStartSpeechButton = (Button) findViewById(R.id.startSpeechButton); mStartSpeechButton.setOnTouchListener(new View.OnTouchListener() { @Overridepublic boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: mSpeechRecognizerTool.startASR(MainActivity.this); mStartSpeechButton.setBackgroundResource( R.drawable.bdspeech_btn_orangelight_pressed); break; case MotionEvent.ACTION_UP: mSpeechRecognizerTool.stopASR(); mStartSpeechButton.setBackgroundResource( R.drawable.bdspeech_btn_orangelight_normal); break; default: return false; } return true; } }); } @Overrideprotected void onStart() { super.onStart(); mSpeechRecognizerTool.createTool(); } @Overrideprotected void onStop() { super.onStop(); mSpeechRecognizerTool.destroyTool(); } @Overridepublic void onResults(String result) { final String finalResult = result; MainActivity.this.runOnUiThread(new Runnable() { @Overridepublic void run() { mTextView.setText(finalResult); } }); }
}

6.MainActivity的一些布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"android:gravity="center"tools:context="com.yjp.speechrecognizer.MainActivity"> <Buttonandroid:id="@+id/startSpeechButton"android:layout_width="60dp"android:layout_height="40dp"android:background="@drawable/bdspeech_btn_orangelight_normal"android:text="按住说话"/> <TextViewandroid:id="@+id/speechTextView"android:layout_margin="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>

7.仿微信的对话框那种网上很多哈,这里就不放了 https://blog.csdn.net/lhk147852369/article/details/78658055 里面写了一个dialog的类,可以直接参考用的
结束~~~

Android 调用百度在线语音识别功能相关推荐

  1. 【Android App】在线语音识别功能实现(使用云知声平台与WebSocket 超详细 附源码)

    需要源码和相关资源请点赞关注收藏后评论区留下QQ~~~ 一.在线语音识别 云知声的语音识别同样采用WebSocket接口,待识别的音频流支持MP3和PCM两种格式,对于在线语音识别来说,云知声使用JS ...

  2. Android 调用百度地图sdk 实现路线规划导航

    Android 调用百度地图sdk 实现路线规划导航 功能: 实现实时/需求定位 卫星地图查看 路况 周边poi检索 地点输入提示检索 驾驶 步行 公交 骑行路线规划 注:以上为实现的大概功能 ,接下 ...

  3. android 调用百度地图规划,Android 调用百度地图API

    一.到 百度地图开发平台下载SDK 1.点击自定义下载 2.下载自己想要的功能包我这里选了三个 3.获取密钥 获取密钥之前我们要新建一个应用 填写好相关的信息 二. 新建一个项目工程 1. 把下载好的 ...

  4. linux 短信功能,Android调用系统短信功能发送短信

    Android调用系统短信功能发送短信有两种方法: 第一种,设定发送的号码,和内容,界面没有联系人,群组组等按钮,如下图所示: 代码如下: Uri smsToUri = Uri.parse(" ...

  5. android百度人脸采集免费,Android 调用百度人脸采集

    1.访问集成文档 http://ai.baidu.com/docs#/FaceSDK-Collect-WithLiveness-Android/top 申请license,下载自动授权的sdk 2. ...

  6. Android 调用谷歌原生语音识别

    前提: 1.安装谷歌语音搜索APP 2.需要越狱连接外网 废话不多说,直接上代码 public void onClick(View v) {                 //开启语音识别功能   ...

  7. Android 百度在线语音识别

    首先需要在百度进行用户注册,然后新建一个应用,选择你需要的服务,并且设置好创建的apk的包名. 然后在AndroidManifest.xml中配置: <?xml version="1. ...

  8. android调用百度活体检测接口,C#调用百度API实现活体检测的方法

    前言 活体检测有多种情形,本文所指:从摄像头获取的影像中判断是活体,还是使用了相片等静态图片. 场景描述 用户个人信息中上传了近照,当用户经过摄像头时进行身份识别. 此时,如果单纯的使用摄像头获取的影 ...

  9. 百度在线语音识别接入经验

    由于最近项目需要语音识别,所以去接了一下语音识别的SDK. 分别接了讯飞的语音识别,和百度的.至于优缺点嘛,感觉讯飞的实时识别速度比较快,然后百度的是一次性上传,如果你一次识别的语音太多,就会识别比较 ...

最新文章

  1. Kali Linux常用服务配置教程DHCP服务原理
  2. MyBatis 插入数据库返回主键
  3. 如何架设灵活多变的数据采集路线?
  4. VM虚拟机运行Windows11出现蓝屏
  5. 呆萌直播源码:如何开发视频直播平台?
  6. LeetCode--single-number复杂度
  7. 自学python买什么教材-从自学到编写大学python教材——低调quot;虫师”谢乾坤
  8. Codeforces Round #260 (Div. 1) A - Boredom DP
  9. 收到“【有奖话题】虚拟空间“筑梦师”,谈谈微软虚拟化 ”礼物一个
  10. win7设置计算机共享的打印机共享的打印机共享,win7,xp打印机共享设置软件 一键共享...
  11. 快冲!淘宝无货源副业,傻瓜式操作,日赚300-500元!!
  12. 电脑计算机睡眠和休眠模式区别,Windows系统的睡眠模式和休眠模式以及待机模式的区别知识科普...
  13. 【Python】常用中英文词汇对照
  14. 指数分布的期望与方差
  15. html实现视频录制,保存和回放
  16. Visio(一) Visio 键盘的上下左右快捷键 没办法移动图标了:取消掉Scroll lock指示灯即可。
  17. 网络1711班 C语言第四次作业批改总结
  18. 破译《碟中谍》经典画面,解密指纹验证+刷脸!
  19. 当机器学习遇到病理学,机遇和挑战(UCL柴秉浩博士 | 钰沐菡 公益公开课)
  20. 自然语言处理(NLP): 12 BERT文本分类

热门文章

  1. 误差理论与平差基础学习笔记(Ⅰ)
  2. 颠覆绿之韵传销谣言!看草根企业逆袭激荡十五载
  3. ae教程 (六)人物滤镜 (三)皮肤润饰
  4. C++ std::enable_if的简明指南
  5. 华丽转身——英语总结
  6. 深度学习实战(1):花的分类任务|附数据集与源码
  7. 如何在计算机里查找pdf文件,电脑上怎么打开PDF文件 你值得一看的技巧
  8. 世上最全NVDIA GPU参数列表: 3090,4090, A40, A30,V100, A100, A800性能参数
  9. 系统分析师备考经验分享
  10. 2020年面试官常问点总结