赞
踩
最近了解了一下Android Q(安卓10),得知Android Q基于语音识别技术,不需要联网就可以将视频中的语音实时转化成字幕这一功能。其实,在安卓中实现语音识别的代码很简单,我们要实现的就是调用谷歌API获取搜索结果,然后根据这个结果做自己想要的功能。
Android 中主要通过RecognizerIntent来实现语音识别。
常量 | 简介 |
---|---|
ACTION_RECOGNIZE_SPEECH | 开启语音识别调用 |
ACTION_WEB_SEARCH | 开启网络语音识别,结果以网页的形式显示 |
EXTRA_LANGUAGE_MODEL | 语音识别的模式 |
EXTRA_MAX_RESULTS | 返回的最大结果 |
EXTRA_PROMPT | 设置用户可以开始语音的提示语 |
EXTRA_RESULTS | 将返回的字符串集中到一个list |
LANGUAGE_MODEL_FREE_FORM | 在一种模式上的自由语音 |
LANGUAGE_MODEL_WEB_SEARCH | 使用语言模型在web上搜索 |
RESULT_AUDIO_ERROR | 返回结果时,音频遇到错误 |
RESULT_CLIENT_ERROR | 返回结果时,客户端遇到错误 |
RESULT_NETWORK_ERROR | 返回结果时,网络遇到错误 |
RESULT_NO_MATCH | 未知错误 |
RESULT_SERVER_ERROR | 返回结果时,服务端遇到错误 |
1. 首先在AndroidManifest中设置网络权限,Android 6.0以后还需要动态请求权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
2.调用Google原生语音识别
@Override public void onClick(View v) { //开启语音识别功能 Intent intent = new Intent( RecognizerIntent.ACTION_RECOGNIZE_SPEECH); //设置模式,这里设置成自由模式 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //提示语音开始文字 intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"Please start your voice"); //开始进行语音识别,这里先检测手机(模拟器)是否支持语音识别并且捕获异常 try { startActivityForResult(intent, RESULT_SPEECH); txtText.setText(""); } catch (ActivityNotFoundException a) { Toast t = Toast.makeText(getApplicationContext(), "Opps! Your device doesn't support Speech to Text", Toast.LENGTH_SHORT); t.show(); } } });
3.使用onActivityResult接收返回的结果
@Override
protected void onActivityResult(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。