Recognize Speech Android! Fale com o seu dispositivo.

Uma funcionalidade muito interessante disponível no Android é o Speech To Text, traduzindo para o português seria o Fala Para Texto.

Este recurso permite que o usuário fale alguma coisa para o seu aplicativo, e este por sua vez consegue identificar o que foi falado e transforma aquela informação em String.

Com a String em mãos é possível fazer qualquer coisa como por exemplo:

– Filtrar uma listagem de dados.
– Realizar uma ação no sistema.
– Fazer uma busca pela informação que foi falada, etc.

Então vamos la…

Pra desenvolver essa funcionalidade crie um novo projeto Android.
Teremos uma Activity que iremos chamar de MainActivity e teremos um layout.xml que chamaremos de main_layout.xml.

Este layout é extremamente simples, vai ter apenas um TextView que vai exibir o texto que foi falado pelo usuário e um botão com o rótulo Fale Agora, que após ser clicado o usuário poderá falar com o aplicativo.

O layout XML ficou assim:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="@android:color/white"
    android:gravity="center">

    <TextView
        android:textSize="22sp"
        android:id="@+id/text_view_texto_falado"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" 
        android:layout_margin="20dp"/>
    
    
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fale AGORA"
        android:onClick="onClickFale"
        />

</LinearLayout>

E vai gerar a seguinte tela.

Layout do APP.

Layout do APP.

Com o layout pronto vamos agora criar a nossa Activity.

public class MainActivity extends Activity {
	
	public static final int SPEECH_REQUEST_CODE = 1;
	
	private TextView textViewTextoFalado;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		textViewTextoFalado = (TextView)findViewById(R.id.text_view_texto_falado);
	}
	
	public void onClickFale(View view) {
		Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
		intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "pt-BR");

		try {
			startActivityForResult(intent, SPEECH_REQUEST_CODE);
		} catch (ActivityNotFoundException a) {
			Toast.makeText(this,"Este dispositivo não suporta SpeechToText", Toast.LENGTH_SHORT).show();
		}		
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		
		if(requestCode == SPEECH_REQUEST_CODE && resultCode == RESULT_OK) {
				ArrayList<String> texts = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
				StringBuilder stringBuilder = new StringBuilder();
				for(int i = 0; i < texts.size(); i ++) {
					if(i == 0) {
						stringBuilder.append("Acreditamos que você falou: \n");
						stringBuilder.append(texts.get(i));
					} else {
						stringBuilder.append("\n");
						stringBuilder.append("\n");
						stringBuilder.append("Ou pode ter sido: ");
						stringBuilder.append("\n");
						stringBuilder.append(texts.get(i));	
					} 
				}
				
				String textoFalado = stringBuilder.toString();
				textViewTextoFalado.setText(textoFalado);
		} 
	}
}

Pontos a serem destacados no código:

– No método onCreate() apenas vinculamos o layout XML que criamos a nossa Activity.

– O método onClickFale será executado quando o botão que definimos no layout for clicado.

– Veja que o método onClickFale apenas inicia uma Intent com a ação RecognizerIntent.ACTION_RECOGNIZE_SPEECH esperando um resultado através do método startActivityForResult.
Após a Intent ser disparada o aplicativo de captura de voz da Google será inicializado e o usuário poderá falar no aplicativo.

– O método onActivityResult será acionado assim que o usuário parar de falar. E irá trazer o resultado da Intent. No caso ele irá retornar um Lista de Strings. Onde a primeira String desta lista seria o texto que o Android acha mais provável que você falou, e as demais são as menos prováveis.

– Veja que pegamos essa lista de Strings e exibimos no nosso TextView.

Observe como ficou a tela do nosso aplicativo após eu falar: “Hi Guys”

Usando o App.

Usando o App.

Então é isso pessoal.
Por se tratar de um projeto bem simples não vou disponibilizar para download o código deste aplicativo. Pois apenas teremos dois arquivos a Activity e o layout XML.

Dica: Tem um artigo meu que ensina como fazer o caminho inverso desta funcionalidade.
Dada uma String o aplicativo fala o texto passado confira no link abaixo:

https://androiddevbr.wordpress.com/2012/08/31/texttospeech-faca-a-sua-aplicacao-falar/

Abraço galera até mais!

Anúncios

  1. Deixe um comentário

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: