2010-05-06 123 views
3

从我所阅读的内容来看,语音识别可用于3种语言:英语(英国,美国,澳大利亚),日语和中文(普通话)。语音识别的可用语言

有谁知道更多关于如何在这些语言之间切换的细节? 有没有办法知道(编程)哪种语言在某个设备上的语音识别是活动的? (也许在日本只有日本人...但我能不知怎的得到这个信息......就像一个财产或任何东西?)。

任何有关这帮助将不胜感激。

谢谢你们。

+0

请尝试使您的标题更具描述性。例如:“语音识别的可用语言” – Casebash 2010-05-06 22:42:08

+0

从现在开始。谢谢。 – FiDo 2010-05-07 13:34:04

回答

0

您可能想看看android.speech.RecognizerIntent它看起来像你可以通过调用getVoiceDetailsIntent()从那里获得语言支持信息。

看一看API文档here

+0

不幸的是,它不起作用,总是返回空包。我在互联网上发现了类似的问题。任何人都可以告诉它是否有效,以及如何正确使用它? – 2011-02-23 17:37:50

2

要语言之间进行切换,只需使用你想要的区域设置为语言和你ACTION_RECOGNIZE_SPEECH意图设置为Locale.toStringEXTRA_LANGAUGE

要检查哪些语言,你需要的东西是这样的:

Intent detailsIntent = new Intent(
      RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS); 
    LanguageDetailsChecker checker = new LanguageDetailsChecker(); 
    sendOrderedBroadcast(detailsIntent, null, checker, null, 
      Activity.RESULT_OK, null, null); 

哪里LanguageDetailsChecker是被定义为这样的一个BroadcastReceiver:所有这些代码

public class LanguageDetailsChecker extends BroadcastReceiver { 

    private static final String TAG = "LanguageDetailsChecker"; 

    private List<String> supportedLanguages; 

    private String languagePreference; 

    public LanguageDetailsChecker() { 
     supportedLanguages = new ArrayList<String>(); 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle results = getResultExtras(true); 
     if (results.containsKey(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE)) { 
      languagePreference = results 
        .getString(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE); 
     } 
     if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES)) { 
      supportedLanguages = results 
        .getStringArrayList(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES); 
     } 
    } 
} 

this project一部分。