2010-05-06 140 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一部分。