当前位置:   article > 正文

Android开发之语音识别_android 语音识别

android 语音识别

开发背景

最近了解了一下Android Q(安卓10),得知Android Q基于语音识别技术,不需要联网就可以将视频中的语音实时转化成字幕这一功能。其实,在安卓中实现语音识别的代码很简单,我们要实现的就是调用谷歌API获取搜索结果,然后根据这个结果做自己想要的功能。
Android 中主要通过RecognizerIntent来实现语音识别。

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" />
  • 1
  • 2

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();
                }
            }
        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

3.使用onActivityResult接收返回的结果

  @Override
    protected void onActivityResult(
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/929004
推荐阅读
相关标签
  

闽ICP备14008679号