有没有办法发出语音命令:
确定GOOGLE询问XXX某些应用特定问题或命令
让它推出" APP"使用公认的文本:"某些应用程序特定问题或命令"
我的应用程序将语音识别作为一项服务......但在使用我的APP时,我无法提出Google可以处理的问题......
答案 0 :(得分:18)
通过Voice Actions API,您的应用可以注册system actions,其中一个是搜索' (所以你可以在APP'上搜索一些问题或命令。)
过去,一些开发人员能够submit a custom voice action request。获得批准后,用户可以通过语音对您的应用进行特定操作。这不再是一种选择。
答案 1 :(得分:10)
实际上非常简单,使用内置的语音操作API ,您可以在线和离线模式下执行此操作。这是一个简短的演示,
首先提示用户输入一些声音,
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();
}
}
这将打开内置的Google语音输入屏幕,并将进行语音输入。现在,在语音输入后检查结果并将语音转换为转换后的字符串,
@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);
// here the string converted from your voice
String converted_text = (result.get(0);
}
break;
}
}
}
现在,您可以以任何您想要的方式操作字符串,或者将它们与预定义的操作字符串进行比较,以执行特定操作等等....
<强>更新强>
在说出特定命令之后使应用程序工作“OK Google”,只需定义一个名为“OK Google”的静态字符串,并将每个语音输入与此预定义字符串进行比较。如果匹配“OK Google”字符串,则转到下一个世界并执行说明。例如,
“确定Google会说出当前时间”
在这里,你可以比较前两个单词“OK Google”如果匹配你预定义的字符串移动到下一个单词“说出当前时间” 。为此,您可以保存一组包含命令的数组,例如“说出当前时间”会说出时间。
为了使其看起来更智能,您可以实施后台服务并继续收听用户的语音输入。
PS:我不确定这是否是一种有效的方式,但这只是另一种做法。答案 2 :(得分:5)
整合&#34;确定Google&#34;通过以下两个步骤,您的应用程序很容易。
首先我们需要在清单文件中声明
<activity..
<intent-filter>
<action android:name="com.google.android.gms.actions.SEARCH_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
/>
现在我们需要在Activity onCreate
中声明 if (getIntent().getAction() != null && getIntent().getAction().equals("com.google.android.gms.actions.SEARCH_ACTION")) {
query = getIntent().getStringExtra(SearchManager.QUERY);
Log.e("Query:",query); //query is the search word
}
用户应按照语法检测&#34; Ok google&#34;,当用户说“好的Google,在应用名称上搜索词组时“,谷歌首先会检查是否安装了名为app name的应用程序,该应用程序已声明能够处理此类查询。