IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> android开发-百度语音识别Android SDK的简单使用 -> 正文阅读

[人工智能]android开发-百度语音识别Android SDK的简单使用

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:hint=“请点击开始录音”

app:layout_constraintEnd_toEndOf=“parent”

app:layout_constraintStart_toStartOf=“parent”

app:layout_constraintTop_toTopOf=“parent” />

<Button

android:id="@+id/btn_start"

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“开始录音”

app:layout_constraintEnd_toStartOf="@+id/edittext"

app:layout_constraintTop_toTopOf="@+id/btn_stop" />

<Button

android:id="@+id/btn_stop"

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginTop=“116dp”

android:text=“停止录音”

app:layout_constraintStart_toEndOf="@+id/edittext"

app:layout_constraintTop_toTopOf=“parent” />

</androidx.constraintlayout.widget.ConstraintLayout>

试运行看看实际效果

在这里插入图片描述

②android 6.0 以上版本权限申请。语音识别要用到麦克风,这个使用权限是需要动态申请的。

/**

  • android 6.0 以上需要动态申请权限

*/

private void initPermission() {

String permissions[] = {Manifest.permission.RECORD_AUDIO,

Manifest.permission.ACCESS_NETWORK_STATE,

Manifest.permission.INTERNET,

Manifest.permission.WRITE_EXTERNAL_STORAGE

};

ArrayList toApplyList = new ArrayList();

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);

}

}

/**

  • 权限申请回调,可以作进一步处理

  • @param requestCode

  • @param permissions

  • @param grantResults

*/

@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

// 此处为android 6.0以上动态授权的回调,用户自行实现。

}

③初始化控件与语音识别的核心SDK

protected EditText txtResult;//识别结果

protected Button startBtn;//开始识别,持续一定时间不说话会自动停止,需要再次打开

protected Button stopBtn;//停止识别,立即停止,直接输出已经识别的内容

private EventManager asr;//语音识别核心库

/**

  • 初始化控件

*/

private void initView() {

txtResult = (EditText) findViewById(R.id.edittext);

startBtn = (Button) findViewById(R.id.btn_start);

stopBtn = (Button) findViewById(R.id.btn_stop);

startBtn.setOnClickListener(new View.OnClickListener() {//点击开始按钮

@Override

public void onClick(View v) {

asr.send(SpeechConstant.ASR_START, null, null, 0, 0);

}

});

stopBtn.setOnClickListener(new View.OnClickListener() {//点击停止按钮

@Override

public void onClick(View v) {

asr.send(SpeechConstant.ASR_STOP, null, null, 0, 0);

}

});

}

④在onCreate方法中调用

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

initPermission();

//初始化EventManager对象

asr = EventManagerFactory.create(this, “asr”);

//注册自己的输出事件类

asr.registerListener(this); // EventListener 中 onEvent方法

}

此时会有错误提示,因为我们还没有实现EventListener这个借口,接下来我们就实现这个接口

在这里插入图片描述

⑤实现EventListener接口,要注意这个接口是百度的这个

在这里插入图片描述

实现接口的onEvent方法

/**

  • 自定义输出事件类 EventListener 回调方法

*/

@Override

public void onEvent(String name, String params, byte[] data, int offset, int length) {

if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)) {

// 识别相关的结果都在这里

if (params == null || params.isEmpty()) {

return;

}

if (params.contains("“final_result”")) {

// 一句话的最终识别结果

String regrex = “\[(.*?),”; //使用正则表达式抽取我们需要的内容

Pattern pattern = Pattern.compile(regrex);

Matcher matcher = pattern.matcher(params);

if (matcher.find()) {

int a = matcher.group(0).indexOf("[");

int b = matcher.group(0).indexOf(",");

txtResult.setText(matcher.group(0).substring(a+2,b-3));

}

}

}

}

因为返回的结果并不是单纯是识别出的我们所说的话,还有别的内容,所以需要使用正则表达式抽取内容,不抽取的话返回内容如下,明显并不是我们想要的结果

在这里插入图片描述

⑥使用真机调试程序(我所用的genymotion模拟器是不支持语音输入的,不知道别的模拟器支不支持),前题你要开启你手机的开发者选项,并允许USB调试与USB安装,不同手机的开启方法不同,自己上网查一下就好。

在这里插入图片描述

将手机用数据线连接电脑后会在此处显示你的设备,选中你的手机并运行程序即可

在这里插入图片描述

运行测试

在这里插入图片描述

在这里插入图片描述

大功告成,注意本文只实现了在线识别,没有网络的时候是无法使用的。离线识别功能百度语音识别SDK也支持,不过离线识别只支持预定义的短语。本文只介绍了一个简单的使用例子,要深入学习百度语音识别SDK的使用建议学习下方百度官方技术文档。

参考文档:

csdn:Android百度语音识别

百度官方技术文档:语音技术

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:05:23  更:2022-01-03 16:06:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 0:07:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码