在
Android 4.1中,您可以使用
keyboard上的麦克风选项获得实时演讲文字转换.
我一直在查看android.speech的文档,试图找出如何将实时语音实现为应用程序的文本.但是,唯一可以促成这一点的选项是“EXTRA_PARTIAL_RESULTS”选项(服务器每次尝试使用它时都会忽略).
代码:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"VoiceIME"); intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS,true); intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS,3000L); mSpeaker.startListening(intent);
从不返回部分结果.
我知道这是可能的,因为键盘版本是一贯的.有人知道吗
解决方法
在开始呼叫之前,您需要注册onPartialResults-callback.两个重要的事情要注意:
>调用onPartialResults的bundle的结构不是由Android API指定的;
>并不是每个语音识别器都支持这种回调.
mSpeaker.setRecognitionListener(new RecognitionListener() { ... public void onPartialResults(Bundle partialResults) { // WARNING: The following is specific to Google Voice Search String[] results = partialResults.getStringArray("com.google.android.voicesearch.UNSUPPORTED_PARTIAL_RESULTS"); updateTheUi(results); } ... }
要在开源应用程序中查看此回调操作,请参阅Babble:
> Google Play:https://play.google.com/store/apps/details?id=be.lukin.android.babble
>源代码:https://github.com/lukin0110/babble/blob/master/android/app/src/be/lukin/android/babble/BabbleActivity.java