2016-05-18 21 views
3

我使用此代碼修改語音識別的不同語言,因爲您看到我使用微調來選擇其他語言。選擇其他語言進行語音識別

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); 

中設置語言爲我的微調:

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

很明顯,你需要在你的設備上安裝你想使用的所有語言語音。並在您通過微調器選擇選擇一個時,相應地設置語言環境。這兩項任務都可以通過編程完成。 –

+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

一般來說,有什麼方法可以識別語音?(不使用谷歌服務器)? –

+0

ACTION_INPUT_METHOD_SETTINGS將打開設置菜單,用戶必須安裝軟件包。你可以使用這種方式檢查安裝的軟件包:http://stackoverflow.com/questions/17803487/detect-installed-languages-for-offline-recognition –