2016-04-26 19 views
5

Konuşma tanıma için Google API kullanıyorum, ancak dinleme süresini sınırlamak istiyorum. Örneğin iki saniye. Kullanıcı iki saniyeden sonra tanımaya devam etse bile tanıyıcı dinlemeyi bırakmalı. BenAndroid - Konuşma Tanıma Sınırlama Dinleme Süresi

EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

gibi bazı ekstralar denedik ama bana yardımcı olmadı. Benim tam kod kimse bana yardımcı olabilir, ben

public void promptSpeechInput() 
{ 
    //This intent recognize the peech 
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); 
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say Something"); 

    try { 
     startActivityForResult(i, 100); 
    } 
    catch (ActivityNotFoundException a) 
    { 
     Toast.makeText(MainActivity.this,"Your device does not support",Toast.LENGTH_LONG).show(); 
    } 
} 

//For receiving speech input 
public void onActivityResult(int request_code, int result_code, Intent i) 
{ 
    super.onActivityResult(request_code, result_code, i); 

    switch (request_code) 
    { 
     case 100: if(result_code == RESULT_OK && i != null) 
     { 
      ArrayList<String> result = i.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
      resultTEXT.setText(result.get(0)); 
     } 
      break; 
    } 
} 

cevap

2

Sen tanıyıcı dinliyor süreyi sınırlamak olamaz takdir edilecektir, burada. Sadece, kapanmadan önce dinlemesi gereken minimum süreyi ayarlayın, ancak maksimum bir tane değil.

Bu problem için de bir çözüm arıyordum, bu yüzden umarım daha iyi bir tane bulabilirsin.

Orada SpeechRecognizer Time Limit

, o senin sorunu çözmek için bir sonraki olasılığı teklif: Ben başka bir StackOverflow arkadaşı bu yazı bulundu

Yapabileceğiniz en iyi şey, böyle bir şey zamanlayıcı çeşit iplik olacaktır bir countDownTimer: başka bir şekilde

yourSpeechListener.startListening(yourRecognizerIntent); 
new CountDownTimer(2000, 1000) { 

public void onTick(long millisUntilFinished) { 
    //do nothing, just let it tick 
} 

public void onFinish() { 
    yourSpeechListener.stopListening(); 
} }.start(); 

, yo, senin SpeechRecognition kısa hale getirmek için u Niyet yanında parametreyi ekleyebilirsiniz: EXTRA_PARTIAL_RESULTS

Bu, methor onActivityPartialResult size maçlar değeri ile başka dizi döndürür; diğer bir deyişle SpeechRecognizer, kısmi sonuçlar elde etmesini sağlar. Bu yöntem onActivityResults'dan önce çağrılır ve daha hızlıdır, ancak elbette onActivityResult kadar kesin değildir. Böylece, eğer Dinleyici'niz belirli bir kelime arıyorsa size yardımcı olacaktır.

Bunun uygulamanıza yardımcı olacağını umuyoruz!

İyi Şanslar!

+0

Teşekkürler Francisco, deneyeceğim – ysfcyln

İlgili konular