2016-05-18 2 views
3

Я использую этот код для изменения разных языков для распознавания речи, так как вы видите, что я использую Spinner для выбора других языков.Выберите другие языки для распознавания речи

public static String country; 

речи опознавательный код:

String name = country; 
       Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 


intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
         RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
       intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, name); 

Установка языка в моей Spinner:

public String LanguageSelection() { 
     language_select_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       // final String country; 
       switch (position){ 
        case 0: 
         country="en"; // english 
         break; 

        case 1: 
         country="it"; // itally 
         break; 
       } 
      } 

Но это не работает в Италии.
Он просто признает английский.

Как его решить?

+3

Что означает «он не работает в Италии»? Он работает (или не работает) независимо от того, где вы находитесь. –

+0

Совершенно очевидно, что вам нужны все языковые голоса, которые вы хотите использовать на своем устройстве. И установите локаль соответственно, когда вы выберете ее через свой выбор Spinner. Обе задачи могут выполняться программно. –

+0

Вы имеете в виду, что для использования каждого языка этот язык должен быть установлен на устройстве? но я хочу сделать это в целом. –

ответ

0

Чтобы выбрать язык, вам необходимо добавить его в свои намерения, как и вы. Просто создать массив с различным Locale.YourLanguage

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.JAPANESE); 

Но, это не будет работать, если вы не имеете ваш язык пакет включен в вашем телефоне. Итак, самое лучшее, что вы можете сделать, это перенаправить пользователя на его параметры ввода телефона с намерением: ACTION_INPUT_METHOD_SETTINGS

+0

вы имеете в виду, что 'ACTION_INPUT_METHOD_SETTINGS' проверяет, не установлен ли язык, он переходит в SETTING для его установки? –

+0

Как правило, существует ли способ распознать голос? (Без использования серверов google)? –

+0

ACTION_INPUT_METHOD_SETTINGS откроет меню настроек, и пользователь должен установить пакеты. Вы можете проверить установленные пакеты следующим образом: http://stackoverflow.com/questions/17803487/detect-installed-languages-for-offline-recognition –

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