2010-05-06 6 views
3

Из того, что я прочитал, распознавание речи доступно для 3-х языков: английский (Великобритания, США, Au ..), японский и китайский (мандарин).Доступные языки для распознавания речи

Кто-нибудь знает более подробную информацию о том, как переключаться между этими языками? Есть ли способ узнать (программно), какой язык активен для распознавания речи на определенном устройстве? (возможно, в Японии есть только японцы ... но могу ли я получить эту информацию как-то ... как собственность или что-нибудь еще?).

Любая помощь в этом отношении будет оценена по достоинству.

Спасибо, ребята.

+0

Просьба сделать ваши заголовки более наглядными. Например: «Доступные языки для распознавания речи» – Casebash

+0

Отныне. Благодарю. – FiDo

ответ

0

Возможно, вы захотите взглянуть на android.speech.RecognizerIntent. Похоже, вы можете получить информацию о поддержке языка, вызвав getVoiceDetailsIntent().

Посмотрите на API Docs here

+0

К сожалению, это не сработает, всегда возвращая нулевой пучок. Я нашел похожие проблемы, возникающие в Интернете. Может ли кто-нибудь сказать, работает ли он и как правильно его использовать? –

2

Для переключения между языками, просто использовать Locale вы хотите для языка и установить Locale.toString для EXTRA_LANGAUGE в вас ACTION_RECOGNIZE_SPEECH намерения.

Чтобы проверить, какие языки доступны, вам нужно что-то вроде этого:

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.

Смежные вопросы