2012-07-01 3 views
1

Я пытаюсь создать приложение, которое могло бы помочь мне набрать контакт так же, как поиск Google Voice, но с использованием чешского языка с помощью Google Voice через RecognizerIntent.Android - RecognizerIntent search Контакты

В чем проблема, похоже, он не просматривает мой список контактов.

Скажем, «Ребро» [или что-нибудь, что не не является частью словаря «, например, Шварценеггер, или так] Имя контакта

Независимо от того, какой язык выбран, или если я произношу имя, используя английский произношением или чешский один, он никогда не попадет в наборе результатов при вызове data.getStringArrayListExtra (RecognizerIntent.EXTRA_RESULTS)?

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

EDIT : Код добавлен ... Это код, который я создал d где-то в сети

import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.content.pm.ResolveInfo; 
import android.os.Bundle; 
import android.speech.RecognizerIntent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

import java.util.ArrayList; 
import java.util.List; 


public class MainActivity extends Activity implements OnClickListener { 

private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; 

private ListView mList; 

/** 
* Called with the activity is first created. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button speakButton = (Button) findViewById(R.id.button1); 
    mList = (ListView) findViewById(R.id.listView1); 

    PackageManager pm = getPackageManager(); 
    List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); 
    if (activities.size() != 0) { 
     speakButton.setOnClickListener(this); 
    } else { 
     speakButton.setEnabled(false); 
     speakButton.setText("Recognizer not present"); 
    } 
} 

/** 
* Handle the click on the start recognition button. 
*/ 
public void onClick(View v) { 
    if (v.getId() == R.id.button1) { 
     startVoiceRecognitionActivity(); 
    } 
} 

/** 
* Fire an intent to start the speech recognition activity. 
*/ 
private void startVoiceRecognitionActivity() { 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    // intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo"); 
    startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); 



} 

/** 
* Handle the results from the recognition activity. 
*/ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { 
     // Fill the list view with the strings the recognizer thought it could have heard 
     ArrayList<String> matches = data.getStringArrayListExtra(
       RecognizerIntent.EXTRA_RESULTS); 



     mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 
       matches)); 
    } 

    super.onActivityResult(requestCode, resultCode, data); 
} 
} 
+0

Пожалуйста, укажите ваш код. Кроме того, он возвращает ArrayList? – Erol

+0

Привет, код был добавлен. Да, он возвращает ArrayList –

ответ

3

Я думаю, что Google Voice Search нет (и не может) выставить все свои возможности через RecognizerIntent, т.е. он просто будет выполнять общую транскрипцию речи без какой-либо поддержки голосовых команд (call ..., text ...) или знания о содержании вашей адресной книги. API RecognizerIntent, к сожалению, не позволяет указать грамматику или список допустимых слов.

Решение состоит в том, чтобы игнорировать распознаватель речи Google и реализовать свои собственные. Посмотрите, например. в Pocketsphinx. Вам нужно иметь чешские акустические модели, если вы не хотите произносить имена по-английски (для которых вы можете использовать английские акустические модели, к которым поставляется CMU Sphinx).

Я внедрил приложение поиска контактов на основе Pocketsphinx с открытым исходным кодом для эстонского языка, см. Inimesed.

+0

Привет, Kaarel, спасибо за то, что он принес мне свет. Есть ли какой-то централизованный список доступных акустических моделей для Sphinx? –

+0

Не знаю. Начните для этого отдельный вопрос. – Kaarel

0

невозможно с речевым ретранслятором, потому что это позволит названиям городов большого города не имена, как любые. его upto google для его повышения соответственно. но вы можете найти другую библиотеку pocketphinx

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