本文使用百度语音识别,完成语音识别的功能,使用百度语音识别,先要申请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
相关文章:
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何配置FTP站点权限与安全设置?
如何在服务器上三步完成建站并提升流量?
建站主机如何安装配置?新手必看操作指南
如何有效防御Web建站篡改攻击?
专业网站建设制作报价,网页设计制作要考什么证?
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何在IIS中新建站点并配置端口与物理路径?
自助网站制作软件,个人如何自助建网站?
广德云建站网站建设方案与建站流程优化指南
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
临沂网站制作企业,临沂第三中学官方网站?
建站之星展会模版如何一键下载生成?
如何在Tomcat中配置并部署网站项目?
如何快速查询网站的真实建站时间?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
建站之星如何取消后台验证码生成?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
建站之星后台密码遗忘或太弱?如何重置与强化?
建站之星北京办公室:智能建站系统与小程序生成方案解析
如何在云主机上快速搭建多站点网站?
如何选择可靠的免备案建站服务器?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何获取上海专业网站定制建站电话?
如何快速重置建站主机并恢复默认配置?
如何设置并定期更换建站之星安全管理员密码?
如何在万网自助建站中设置域名及备案?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何在IIS中配置站点IP、端口及主机头?
定制建站如何定义?其核心优势是什么?
网页设计与网站制作内容,怎样注册网站?
网站制作员失业,怎样查看自己网站的注册者?
建站主机是否属于云主机类型?
如何规划企业建站流程的关键步骤?
C#怎么使用委托和事件 C# delegate与event编程方法
,网站推广常用方法?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何在Golang中使用replace替换模块_指定本地或远程路径
公司网站制作需要多少钱,找人做公司网站需要多少钱?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
详解jQuery停止动画——stop()方法的使用
广东企业建站网站优化与SEO营销核心策略指南
,柠檬视频怎样兑换vip?
教学论文网站制作软件有哪些,写论文用什么软件
?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
在线制作视频网站免费,都有哪些好的动漫网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。