如何在我的应用程序中实现Google语音input?

我正在尝试在启动Google语音input的应用程序中添加一个button(或默认的语音识别)。 我试过按照这个教程 。 本教程令我难以置信的困惑。 我导入了.jar,并将必要的权限,服务和活动添加到了我的清单中。 但我似乎无法弄清楚如何“把它们放在一起”。 我在想:

  1. 我应该从我的button点击我的主要活动调用inputMethodService? 或者,我的inputMethodService基本上成为我的主要活动?
  2. IME是什么意思? 我试图谷歌它,但它给了我的定义并没有帮助我的理解。
  3. 当我尝试将整个DemoInputMethodService代码复制并粘贴到当前活动中时,出现错误,说我无法在此活动中扩展InputMethodService。 (这导致回答问题一)。

我怎样才能使这个工作?

Solutions Collecting From Web of "如何在我的应用程序中实现Google语音input?"

如果你想跟随你提到的教程,那么你需要先实现一个IME(input法编辑器),请参阅http://developer.android.com/guide/topics/text/creating-input-method.html

这个input法可以有一个普通的键盘外观或只包含一个麦克风button。

您的应用程序的用户将首先必须单击文本字段以启动IME。 (请注意,设备上可能安装了多个IME,并且必须在“设置”中明确启用它们。)然后用户将不得不单击麦克风button来触发语音识别。

该教程提供了一个jar,可以让你直接调用Google的识别器。 如果你通过SpeechRecognizer接口( http://developer.android.com/reference/android/speech/SpeechRecognizer.html )调用识别器,那么用户可以决定是使用Google还是别的什么。

SpeechRecognizer提供了一个支持方法onPartialResults的监听器 ,它允许您监视用户说话时的识别假设。 这取决于你如何展示他们。 但是请注意, SpeechRecognizer的规范并不保证这个方法被调用。 这取决于识别器服务的实施。 关于谷歌的实施:它支持的内容不断变化,它没有一个公共的API,甚至发布笔记。

您可能能够重用我的项目Kõnele( http://kaljurand.github.io/K6nele/about/ ),其中包含SpeechRecognizer的两个实现和使用它们的IME。 其中一个实现使用Kaldi GStreamer服务器( https://github.com/alumae/kaldi-gstreamer-server )提供对任意长audioinput的持续识别。 您需要设置您自己的服务器实例,将其移植到您想要识别的语言(除非您要使用Kõnele默认使用的爱沙尼亚语服务器)。

语音识别样本被发现你有Android SDK的地方..

例:

 $ find $SDK_ROOT/samples -name *recogni* ./android-19/legacy/VoiceRecognitionService/res/xml/recognizer.xml ./android-19/legacy/VoiceRecognitionService/src/com/example/android/voicerecognitionservice ./android-19/legacy/ApiDemos/res/layout/voice_recognition.xml ./android-18/legacy/VoiceRecognitionService/res/xml/recognizer.xml ./android-18/legacy/VoiceRecognitionService/src/com/example/android/voicerecognitionservice ./android-18/legacy/ApiDemos/res/layout/voice_recognition.xml ./android-21/legacy/VoiceRecognitionService/res/xml/recognizer.xml ./android-21/legacy/VoiceRecognitionService/src/com/example/android/voicerecognitionservice ./android-21/legacy/ApiDemos/res/layout/voice_recognition.xml 

任何一个服务应该帮助展示如何做一个RecognizerIntent

“APIDemo”似乎包括使用RecognizerIntent。 检查一个来源。 否则,看看服务,并将其刻成意图。

我有同样的问题,但经过了很长一段时间寻找一个活动持续的声音听写,我用pocketsphinx解决了这个问题。

我无法find将Google Voice键入集成到活动上的方法,只需按照该教程中的input法即可。 如果混淆你,只需下载这个演示并修改它。 祝你好运!

你可以触发一个button侦听器的意图

 Intent checkIntent = new Intent(); checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); 

结果可以从中得到

 private TextToSpeech mTts; protected void onActivityResult( int requestCode, int resultCode, Intent data) { if (requestCode == MY_DATA_CHECK_CODE) { if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { // success, create the TTS instance mTts = new TextToSpeech(this, this); } else { // missing data, install it Intent installIntent = new Intent(); installIntent.setAction( TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); startActivity(installIntent); } } } 

请参阅此链接了解更多信息。