fbpx

Android – Voice Recognition

Oggi, con questa breve lezione, vorrei introdurvi nel mondo OpenSource (Linux Based) di Android e sviluppare la nostra prima applicazione vocale. Prima di ciò diamo qualche notizia sul mondo Androide.

Le applicazioni Android sono scritte in linguaggio Java e vengono eseguite all’interno di una Virtual Machine (VM), ma non la classica JVM, bensì la Dalvik Virtual Machine, che si trova all’interno dei processi gestiti dal kernel.

android Per iniziare a realizzare la prima applicazione android, di tipo Voice Recognition o di qualunque altro tipo, è necessario scaricare ed istallare l’Android SDK e seguire le istruzioni relative all’istallazione dei pacchetti sull’IDE Eclipse.

Una volta preparato tutto l’ambiente di sviluppo, siamo pronti a realizzare la nostra prima applicazione di Voice Recognition la quale utilizzerà il potente motore di Google per l’elaborazione e sintesi vocale; ovviamente per poter utilizzare tale tecnologia è necessario essere connessi ad internet.

Iniziamo ad analizzare la prima porzione di codice.

public class exampleVoiceRecognition extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button speak = (Button) findViewById(R.id.speak);
speak.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent("android.speech.action.RECOGNIZE_SPEECH");
startActivityForResult(intent, 0);
}
});
}

Questo semplice pezzo di codice utilizza il bottone “speak”, istanziato nel layout principale, ed associa a questo un evento; al click del bottone, catturato attraverso il .setOnClickListener(), verrà iniziata l’attività di Recognize Speech la quale effettua un riconoscimento vocale. Terminata la fase di acquisizione audio, partirà l’attività che gestisce il risultato dello Recognize, che riporto di seguito.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
TextView myRes = (TextView) findViewById(R.id.provaRes);
if (resultCode == RESULT_OK){
myRes.append("TTS OK! ");
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
Toast.makeText(getApplicationContext(), results.toString(), Toast.LENGTH_LONG).show();
}
else{
myRes.append("TTS non riuscito!");
}

Questa semplice applicazione, effettua un riconoscimento vocale e mostra il risultato in un Toast. Mi rendo conto che potrebbe risultare ostico lavorare con un ArrayList per cui consiglio di aggiungere una variabile in più al tutto per lavorare in modo forse più comodo; subito dopo aver costruito l’ArrayList, aggiungiamo:

String myString = result.toString();

In questo modo avremo una stringa, racchiusa tra “[ ]” contenente il risultato della nostra conversione. A questo punto è possibile utilizzare tutti i metodi statici delle stringhe per verificare che la frase pronunciata contenga delle parole, per noi, chiave in modo da poter scatenare altri eventi in cascata.
In quest’ottica se aggiungiamo il codice

if (myString.contains("ciao"))
Toast.makeText(getApplicationContext(), "COMPLIMENTI! Hai detto 'CIAO'!", Toast.LENGTH_LONG).show();

comparirà un Toast ogni volta diremo la parola “ciao” o una frase che la contiene.

Ovviamente le applicazioni sono molteplici e le più svariate, questo era solo un modo per introdurvi al fantastico mondo Androide.
Alla prossima.