| |
|
开发:
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 以上版本权限申请。语音识别要用到麦克风,这个使用权限是需要动态申请的。 /**
*/ 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); } } /**
*/ @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方法 /**
*/ @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百度语音识别 百度官方技术文档:语音技术 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 22:23:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |