有可能在谷歌眼镜上拥有Android语音识别(作为一项自定义服务)吗



我们有一个演示android应用程序(android 4.0.3),它将语音识别作为一项服务运行,并(continuosly)将识别结果记录在视图中。

我们的智能手机一切正常。

我们想在谷歌眼镜沉浸式应用程序中复制这种场景,但当我们尝试启动服务时,总是会出现以下错误消息:

未选择语音识别服务

是否存在一些已知的局限性?或者有人想好了如何解决这种问题吗?

提前感谢

这是活动的一些重要代码:

public class MainActivity extends Activity implements Observer {
   ...
   @Override
   protected void onStart() {
      super.onStart();
      //Toast.makeText(this, "Hi guys", Toast.LENGTH_LONG);
      startService(new Intent(this, SilentVoiceRecognitionService.class));
   }
   ...
}

这是服务的代码:

public class SilentVoiceRecognitionService extends Service {
   protected AudioManager mAudioManager; 
   protected SpeechRecognizer mSpeechRecognizer;
   protected Intent mSpeechRecognizerIntent;
   protected final Messenger mServerMessenger = new Messenger(new IncomingHandler(this));
   private Model model = Model.getInstance();
   static final String TAG = "SilentRecognizer";
   static final int MSG_RECOGNIZER_START_LISTENING = 1;
   static final int MSG_RECOGNIZER_CANCEL = 2;
   protected boolean mIsListening;
   @Override
   public void onCreate()
   {
       super.onCreate();
       mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
       mSpeechRecognizer.setRecognitionListener(new SpeechRecognitionListener());
       mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
       mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                                     RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
       mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                                     this.getPackageName());
   }
   @Override
   public int onStartCommand(Intent intent, int flags, int startId) {
       Log.i("LocalService", "Received start id " + startId + ": " + intent);
       // We want this service to continue running until it is explicitly
       // stopped, so return sticky.
       mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
       return START_STICKY;
   }
   @Override
   public void onDestroy()
   {
       super.onDestroy();
       if (mSpeechRecognizer != null)
       {
           mSpeechRecognizer.destroy();
       }
   }
   protected class SpeechRecognitionListener implements RecognitionListener
   {
       ...
   }

   protected static class IncomingHandler extends Handler
   {
       private WeakReference<SilentVoiceRecognitionService> mtarget;
       IncomingHandler(SilentVoiceRecognitionService target)
       {
           mtarget = new WeakReference<SilentVoiceRecognitionService>(target);
       }

       @Override
       public void handleMessage(Message msg)
       {
           final SilentVoiceRecognitionService target = mtarget.get();
           switch (msg.what)
           {
               case MSG_RECOGNIZER_START_LISTENING:
                    if (!target.mIsListening)
                    {
                   target.mSpeechRecognizer.startListening(target.mSpeechRecognizerIntent);
                        target.mIsListening = true;
                       //Log.d(TAG, "message start listening"); //$NON-NLS-1$
                    }
                    break;
                case MSG_RECOGNIZER_CANCEL:
                     target.mSpeechRecognizer.cancel();
                     target.mIsListening = false;
                     //Log.d(TAG, "message canceled recognizer"); //$NON-NLS-1$
                     break;
            }
      } 
   }

}

此功能最近已被接受,但尚未可用,请参阅https://code.google.com/p/google-glass-api/issues/detail?id=245

你可以加载额外提到的apk来获得功能。请参阅使用Google Glass 中的Android语音识别API

从XE16开始,现在可以直接使用SpeechRecognizer并通过SpeechReconfigurationListener获取结果。

不幸的是,这仍然无法脱机工作。

最新更新