Android speech to text'i inbuild özellik olarak sunmaktadır. Uygulamanızın kullanıcılarla olan etkileşimini arttırmak istiyorsanız, speech to text çok işinize yarayabilir. Google speech to text'i kullanarak kullanıcılardan konuşmasını isteyebilir ve söylediklerine göre işlemler yaptırarak harika işler çıkartabilirsiniz.
Speech to text'in çalıma prensibi çok basit. Kaydedilen ses server' a gönderiliyor, server sesi text'e dönüştürerek tekrar uygulamanıza gönderiyor.
Olanakları bi düşünün derim ben ;)
Evet şimdi nasıl yapacağımızı öğrenelim. İlk olarak örnek bir proje oluşturuyoruz ve res/valuses dizinindeki strings.xml dosyasını açıp aşşağıdaki string value'ları ekliyoruz.
strings.xml
123456789
<?xml version="1.0" encoding="utf-8"?><resources><stringname="app_name">Speech To Text</string><stringname="action_settings">Settings</string><stringname="hello_world">Hello world!</string><stringname="speech_prompt">Say something…</string><stringname="speech_not_supported">Sorry! Your device doesn\'t support speech input</string><stringname="tap_on_mic">Tap on mic to speak</string></resources>
İkinci olarak aynı dizin altındaki colors.xml dosyasını açıp aşşağıdaki gibi güncelliyoruz.
Yalnız ekrandaki icon sizde olmadığı için istediğiniz bi icon kullanabilirsiniz.
Son olarak da main activity'mizi açıyoruz ve kodlamamıza devam ediyoruz. Burada yapmamız gereken iki işlem var. Birincisi RecognizerIntent ‘i başlatmak, ikincisi ise speech response'larını almak.
Intent'i ACTION_RECOGNIZE_SPEECH, LANGUAGE_MODEL_FREE_FORM ve EXTRA_PROMPT flaglarını set ederek çağırıyoruz. Ses girişi başarılı olduktan sonra ise response'u onActivityResult methodunda yakalayıp ekrana basıyoruz.
packagecom.ensr.speechtotext;importjava.util.ArrayList;importjava.util.Locale;importandroid.app.Activity;importandroid.content.ActivityNotFoundException;importandroid.content.Intent;importandroid.os.Bundle;importandroid.speech.RecognizerIntent;importandroid.view.Menu;importandroid.view.View;importandroid.widget.ImageButton;importandroid.widget.TextView;importandroid.widget.Toast;publicclassMainActivityextendsActivity{privateTextViewtxtSpeechInput;privateImageButtonbtnSpeak;privatefinalintREQ_CODE_SPEECH_INPUT=100;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);txtSpeechInput=(TextView)findViewById(R.id.txtSpeechInput);btnSpeak=(ImageButton)findViewById(R.id.btnSpeak);// action barı gizlegetActionBar().hide();btnSpeak.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){promptSpeechInput();}});}/** * google speech input dialog'u göster * */privatevoidpromptSpeechInput(){Intentintent=newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,Locale.getDefault());intent.putExtra(RecognizerIntent.EXTRA_PROMPT,getString(R.string.speech_prompt));try{startActivityForResult(intent,REQ_CODE_SPEECH_INPUT);}catch(ActivityNotFoundExceptiona){Toast.makeText(getApplicationContext(),getString(R.string.speech_not_supported),Toast.LENGTH_SHORT).show();}}/** * Respons'u yakala * */@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityResult(requestCode,resultCode,data);switch(requestCode){caseREQ_CODE_SPEECH_INPUT:{if(resultCode==RESULT_OK&&null!=data){ArrayList<String>result=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);txtSpeechInput.setText(result.get(0));}break;}}}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main,menu);returntrue;}}
Evet arkadaşlar artık uygulamamızı telefon üzerinde deneyebilirsiniz. Tebrikler! Ne dediğinizi anlayan bir uygulamanız var. Artık ona istediğinizi söyleyebilirsiniz (!)