我想创建一个简单的应用程序,它将通过语音命令完成一些任务。我想开始用我自己的短语来监听命令,例如" Hello设备"。 Android语音识别API是否可行?如何通过我自己的短语实现激活?
我在询问之前正在搜索此内容,但无法找到有关激活的信息。我知道口袋里的狮身人面像,但我需要用Google API来实现它。
答案 0 :(得分:3)
CMUSphinx是解决此问题的真正解决方案,连续语音识别需要占用太多资源,并且会在一小时内耗尽电池电量,而关键字定位模式的速度足以检测到一个关键短语。
您可能会对Google在v21中为类似任务引入新API感兴趣:
http://developer.android.com/reference/android/service/voice/AlwaysOnHotwordDetector.html
您可以使用它,但会严重限制您的用户群。
答案 1 :(得分:1)
Here您有一个如何实施语音识别的教程。
我想开始用我自己的短语来监听命令,如a “你好设备”。是否可以使用Android语音识别API?
您无法录制短语,但您可以收听所有内容,然后向识别引擎询问其听到的单词。
教程中的相关代码片段:
// Populate the wordsList with the String values the recognition engine thought it heard
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
所以,你可以检查它是否听说过你的普通英语命令,比如“你好设备”,如果是的话,你可以做点什么。
答案 2 :(得分:0)
import android.speech.RecognizerIntent;
import android.content.Intent;
import java.util.ArrayList;
import java.util.List;
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
第2步:这将要求我们覆盖onActivityResult()方法以使用上述方法。
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
String wordStr = null;
String[] words = null;
String firstWord = null;
String secondWord = null;
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if(requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK)
{
wordStr = matches.get(0);
words = wordStr.split(" ");
firstWord = words[0];
secondWord = words[1];
}
if (firstWord.equals("open"))
{
// DO SOMETHING HERE
}
}