本文使用百度语音识别,完成语音识别的功能,使用百度语音识别,先要申请APP ID,这个直接到百度网站上有说明文档,本文不再赘述。申请之后,下载SDK包,按照百度官网要求,合并libs和res两个目录到项目中,然后在build.gradle(module:app)中的Android{...}下添加
sourceSets{
main{
jniLibs.srcDirs=['libs']
}
}
这样, 百度语音识别的so文件才能正常使用。
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" />
然后还要在Manifest中添加
<!-- 请填写应用实际的APP_ID --> <meta-data android:name="com.baidu.speech.APP_ID" android:value="APP 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" />
其中的APP ID,API_KEY和SECRET_KEY替换为你申请的内容。
我们封装了一个工具类,用来使用语音识别
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) {
// 设置识别参数
}
@Override
public void onReadyForSpeech(Bundle params) {
// 准备就绪
Toast.makeText(mContext, "请开始说话", Toast.LENGTH_SHORT).show();
}
@Override
public void onBeginningOfSpeech() {
// 开始说话处理
}
@Override
public void onRmsChanged(float rmsdB) {
// 音量变化处理
}
@Override
public void onBufferReceived(byte[] buffer) {
// 录音数据传出处理
}
@Override
public void onEndOfSpeech() {
// 说话结束处理
}
@Override
public void onError(int error) {
}
@Override
public void onResults(Bundle results) {
// 最终结果处理
if (mResultsCallback != null) {
String text = results.get(SpeechRecognizer.RESULTS_RECOGNITION)
.toString().replace("]", "").replace("[", "");
mResultsCallback.onResults(text);
}
}
@Override
public void onPartialResults(Bundle partialResults) {
// 临时结果处理
}
@Override
public void onEvent(int eventType, Bundle params) {
}
}
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">
<Button
android:id="@+id/startSpeechButton"
android:layout_width="60dp"
android:layout_height="40dp"
android:background="@drawable/bdspeech_btn_orangelight_normal"
android:text="按住说话"/>
<TextView
android:id="@+id/speechTextView"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
MainActivity的类实现为:
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);
@Override
protected 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() {
@Override
public 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;
}
});
}
@Override
protected void onStart() {
super.onStart();
mSpeechRecognizerTool.createTool();
}
@Override
protected void onStop() {
super.onStop();
mSpeechRecognizerTool.destroyTool();
}
@Override
public void onResults(String result) {
final String finalResult = result;
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mTextView.setText(finalResult);
}
});
}
}
可以运行看一下效果,感觉识别率还是不错的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# 语音识别
# android百度语音识别
# android实现语音识别
# Android基于讯飞语音SDK实现语音识别
# Android仿微信语音聊天功能
# android预置默认的语音信箱号码具体实现
# Android实现语音识别代码
# Android 轻松实现语音识别详解及实例代码
# Android Studio应用开发集成百度语音合成使用方法实例讲解
# Android 基于百度语音的语音交互功能(推荐)
# Android仿微信语音聊天界面设计
# Android实现语音数据实时采集、播放
# android语音即时通讯之录音、播放功能实现代码
# 请填写
# 为你
# 上有
# 要在
# 正常使用
# 看一下
# 装了
# 官网
# 大家多多
# 文档
# public
# SpeechRecognizerTool
# Toast
# RecognitionListener
# SpeechRecognizer
# widget
# void
# onResults
# String
相关文章:
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
c# 在ASP.NET Core中管理和取消后台任务
图册素材网站设计制作软件,图册的导出方式有几种?
如何在IIS中新建站点并配置端口与IP地址?
如何通过IIS搭建网站并配置访问权限?
创业网站制作流程,创业网站可靠吗?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
如何配置IIS站点权限与局域网访问?
在线制作视频的网站有哪些,电脑如何制作视频短片?
网站制作服务平台,有什么网站可以发布本地服务信息?
建站之星后台密码遗忘或太弱?如何重置与强化?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
如何在景安云服务器上绑定域名并配置虚拟主机?
如何设置并定期更换建站之星安全管理员密码?
IOS倒计时设置UIButton标题title的抖动问题
如何高效配置IIS服务器搭建网站?
如何快速查询网站的真实建站时间?
建站之星安装失败:服务器环境不兼容?
C++时间戳转换成日期时间的步骤和示例代码
历史网站制作软件,华为如何找回被删除的网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
如何在阿里云高效完成企业建站全流程?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
建站主机选购指南:核心配置与性价比推荐解析
c# 在高并发场景下,委托和接口调用的性能对比
如何快速使用云服务器搭建个人网站?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
学校建站服务器如何选型才能满足性能需求?
公众号网站制作网页,微信公众号怎么制作?
家庭建站与云服务器建站,如何选择更优?
制作销售网站教学视频,销售网站有哪些?
深圳网站制作案例,网页的相关名词有哪些?
定制建站策划方案_专业建站与网站建设方案一站式指南
音响网站制作视频教程,隆霸音响官方网站?
如何用景安虚拟主机手机版绑定域名建站?
如何在橙子建站上传落地页?操作指南详解
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
Python多线程使用规范_线程安全解析【教程】
如何设计高效校园网站?
建站之星如何通过成品分离优化网站效率?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
寿县云建站:智能SEO优化与多行业模板快速上线指南
制作旅游网站html,怎样注册旅游网站?
高防服务器租用如何选择配置与防御等级?
如何快速上传自定义模板至建站之星?
如何通过智能用户系统一键生成高效建站方案?
如何获取上海专业网站定制建站电话?
测试制作网站有哪些,测试性取向的权威测试或者网站?
实现虚拟支付需哪些建站技术支撑?
*请认真填写需求信息,我们会在24小时内与您取得联系。