Ben*_*Ben 9 android voice-recognition google-glass google-gdk
使用Glass,您可以通过'OK,Glass'菜单启动应用程序,它似乎选择最近的匹配,除非命令是英里关闭,您显然可以看到命令列表.
无论是在应用程序内,还是从语音提示(在初始应用程序触发器之后)都有给出类似的列表并返回最近的匹配.
随机(非现实世界)示例,一个向您显示颜色的应用程序,"OK Glass,显示红色"
"显示颜色"可能是你的声音触发器,并且似乎在"最近邻居"方法上与玻璃匹配,但是"红色"只是作为自由文本读入,并且很容易被误读为"恐惧"或"头部",甚至"读",因为没有办法区分'读'和'红'.
有没有办法将预先批准的选项列表(红色,绿色,蓝色,橙色*等)传递到此阶段,或者传递到应用程序中的另一个语音提示,以便用户可以查看列表并获得更准确的结果当有一组有限的预期响应时(比如主要的玻璃屏幕)?
*好吧没有什么与橙色押韵,我们可能在那里安全
blu*_*dow 20
Google GDK尚不支持此功能.但是,某些库中已经提供了必要的功能,只要GDK本身不支持这些功能,您就可以使用它们.你要做什么:
从Glass中拉出GlassVoice.apk: adb pull /system/app/GlassVoice.apk
使用dex2jar将此apk转换为jar文件.
将jar文件添加到构建路径
现在您可以像这样使用此库:
public class VoiceActivity extends Activity {
private VoiceInputHelper mVoiceInputHelper;
private VoiceConfig mVoiceConfig;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.voice_activity);
String[] items = {"red", "green", "blue", "orange"};
mVoiceConfig = new VoiceConfig("MyVoiceConfig", items);
mVoiceInputHelper = new VoiceInputHelper(this, new MyVoiceListener(mVoiceConfig),
VoiceInputHelper.newUserActivityObserver(this));
}
@Override
protected void onResume() {
super.onResume();
mVoiceInputHelper.addVoiceServiceListener();
}
@Override
protected void onPause() {
super.onPause();
mVoiceInputHelper.removeVoiceServiceListener();
}
public class MyVoiceListener implements VoiceListener {
protected final VoiceConfig voiceConfig;
public MyVoiceListener(VoiceConfig voiceConfig) {
this.voiceConfig = voiceConfig;
}
@Override
public void onVoiceServiceConnected() {
mVoiceInputHelper.setVoiceConfig(mVoiceConfig, false);
}
@Override
public void onVoiceServiceDisconnected() {
}
@Override
public VoiceConfig onVoiceCommand(VoiceCommand vc) {
String recognizedStr = vc.getLiteral();
Log.i("VoiceActivity", "Recognized text: "+recognizedStr);
return voiceConfig;
}
@Override
public FormattingLogger getLogger() {
return FormattingLoggers.getContextLogger();
}
@Override
public boolean isRunning() {
return true;
}
@Override
public boolean onResampledAudioData(byte[] arg0, int arg1, int arg2) {
return false;
}
@Override
public boolean onVoiceAmplitudeChanged(double arg0) {
return false;
}
@Override
public void onVoiceConfigChanged(VoiceConfig arg0, boolean arg1) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以利用多个"活动"或"服务"支持相同的消歧步骤Voice Trigger:只需在应用程序支持"show me the color"中将多个"活动"或"服务" 作为语音触发器,并使用颜色选项标记它们.
您的清单看起来像:
<application
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/icon_50"
>
<activity
android:name="com.mycompany.RedActivity"
android:label="@string/red"
android:icon="@drawable/icon_red"
>
<intent-filter>
<action android:name="com.google.android.glass.action.VOICE_TRIGGER"/>
</intent-filter>
<meta-data
android:name="com.google.android.glass.VoiceTrigger"
android:resource="@xml/activity_start"
/>
</activity>
<activity
android:name="com.mycompany.BlueActivity"
android:label="@string/blue"
android:icon="@drawable/icon_blue"
>
<intent-filter>
<action android:name="com.google.android.glass.action.VOICE_TRIGGER"/>
</intent-filter>
<meta-data
android:name="com.google.android.glass.VoiceTrigger"
android:resource="@xml/activity_start"
/>
</activity>
<!-- ... -->
</application>
Run Code Online (Sandbox Code Playgroud)
这些活动或服务仅用作"蹦床",以通过颜色选择启动应用程序的主要逻辑.