当前位置: 首页 > 知识库问答 >
问题:

如何在我的Android应用程序中使用内置语音识别?

商璞
2023-03-14

我想在我的应用程序中使用脱机语音识别。设置-

public class MainActivity extends AppCompatActivity {

private TextView txtSpeechInput;
private ImageButton btnSpeak;
private final int REQ_CODE_SPEECH_INPUT = 100;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    promptSpeechInput();
    //onCreateOptionsMenu();
}

private void promptSpeechInput() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
            getString(R.string.speech_prompt));
    try {
        startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
    } catch (ActivityNotFoundException a) {
        Toast.makeText(getApplicationContext(),
                getString(R.string.speech_not_supported),
                Toast.LENGTH_SHORT).show();
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case REQ_CODE_SPEECH_INPUT: {
            if (resultCode == RESULT_OK && null != data) {

                ArrayList<String> result = data
                        .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                //txtSpeechInput.setText(result.get(0));
                {
                    String a="camera";
                    if(a.compareTo(result.get(0))==0){
                        Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                        if (i.resolveActivity(getPackageManager()) != null) {
                            startActivityForResult(i, 1);
                        }
                    }
                }
            }
            break;
        }

    }
}

嗯,这里我通过语音向相机发送意图。所以,我对词汇量的要求有限。

共有1个答案

上官凯泽
2023-03-14

尝试以下操作:

intent.putExtra(RecognizerIntent.EXTRA_PREFER_OFFLINE,true);

注:这仅适用于API级别23及以上。

 类似资料:
  • 我正在尝试在我的Android应用程序中实现继续语音识别。我已经遵循了这个链接编码。这个继续语音识别在两天前工作。但是现在语音识别工作不好,它将需要更多的时间进行语音监听。如何解决这个问题。请指导我。谢谢 识别编码: 用户开始说话

  • 我正在考虑做一个语音屏幕锁/解锁Android应用程序,作为我的最后一个毕业设计,我遇到了一些问题,当一个按下锁按钮时,我如何打开麦克风,这样它就可以一直听下去,直到密码说出来。 我已经搜索了它,但我只找到了使用RecognizerIntent和其他类Google Speech API的技术。 我需要知道当锁定屏幕显示时,我如何开始收听麦克风,这样我就可以捕捉音频流。不允许我使用任何api,没有谷

  • 我想在我的Android应用程序中添加一个语音界面。两个要求: > 我只需要在任何时候从一个小字典中识别单词——基本上是屏幕上的任何可点击元素,并且大多数可点击元素已经有文本,所以从字面上看就是“说你看到的”。 在应用程序可见的情况下进行连续语音识别,尽管我可以忍受在演讲之前说“Ok app”。 实现这一点的最佳方式是什么? 谢谢NickB

  • 我想在我的应用程序中引入一项新功能:永久语音识别。 首先,我关注以下帖子: 语音识别 Android中的语音识别 Android离线语音识别(JellyBean) 还有更多其他人,还有来自不同网站的其他帖子。 问题:实际上,我想做的是在不显示谷歌语音活动的情况下获得永久性的语音识别。例如:当我启动应用程序时,语音识别应该启动并收听。当识别器匹配一些单词时,我的应用程序将相应地执行不同的操作。我不喜

  • 我一直在android中开发语音识别API,发现当语言设置更改时,语音结果会发生变化,有没有办法通过编程进行设置?或者是否打算在语音语言设置屏幕上使用午餐?或者其他什么?注意:我试图使用这个额外的意图: 但这是无效的

  • 问题内容: 我需要找到Android应用程序中的瓶颈所在。 我可以使用哪些配置文件工具或技术? 问题答案: 您可以使用Traceview。它远非理想,但可行。 本文介绍了如何使用它。