如何使用Android的实时演讲文字?

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指定的;
>并不是每个语音识别器都支持这种回调.

因此,您的代码将专门针对Google语音搜索.

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

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...