Android Speech to Text Api Google Tutoriel

Convertir la parole (la voix) en texte avec Speech to Text sous Android

Une chose vraie avec les nouvelles technologie, c’est de pouvoir simplifier ou d’améliorer le quotidien c’est le but !

Avec nos téléphones (smartphone), notamment sous Android il est tout a fait possible de dicter ces messages texte dans n’importe quel contexte.

Quoi de mieux au lieu de taper des mots ou des caractères sur un clavier, de plutôt les dicter tout simplement c’est beaucoup plus rapide et  bien moins fatiguant.Google propose différentes API pour aider les développeurs en voici une qui permet de récupérer la parole grâce au micro sur le téléphone ou la tablette et de la transformer en texte.

Android Speech to Text Api Google Tutoriel Android Studio

Voici un exemple de l’Api de Google Speech to Text en image.J’ai créer un simple bouton ‘Start’ et quand on clique dessus l’Api de Google speech to text se lance écoute grâce au micro si vous parlez et une fois la parole terminé l’Api s’arrête toute seule et vous transmet le texte que moi je renvois dans une zone de texte (TextView).

 

Le code est vraiment très simple c’est pour cela que Speech to Text est très pratique.

La fonction startSpeechToText() démarre l’écoute du micro et protected void onActivityResult() récupère le traitement de la fonction précédente.Notez que j’envoie le résultat dans la zone de texte (TextView) avec txtOutput.setText(text).

Ci-dessous le code JAVA de l’activité principal MainActivity.

package command.max.com.voice;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.speech.RecognizerIntent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {
    TextView txtOutput;
    Button bouton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtOutput = (TextView) findViewById(R.id.text);
        bouton = (Button) findViewById(R.id.button);

      bouton.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              Toast.makeText(getApplicationContext(),
                      "click",
                      Toast.LENGTH_SHORT).show();
              startSpeechToText();
          }
      });

    }


    private void startSpeechToText() {
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
                "Speak something...");
        try {
            startActivityForResult(intent, 666);
        } catch (ActivityNotFoundException a) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! Speech recognition is not supported in this device.",
                    Toast.LENGTH_SHORT).show();
        }
    }
    /**
     * Callback for speech recognition activity
     * */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case 666: {
                if (resultCode == RESULT_OK && null != data) {
                    ArrayList<String> result = data
                            .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    String text = result.get(0);
                    txtOutput.setText(text);
                }
                break;
            }
        }
    }
}

Le fichier XML de cet activité ou se trouve le design du bouton start et de la zone de texte.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="command.max.com.voice.MainActivity">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello Yohann"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start"
        tools:layout_editor_absoluteX="148dp"
        tools:layout_editor_absoluteY="34dp" />

</android.support.constraint.ConstraintLayout>

Le fichier Gradle au cas ou mais aucune librairie spécifique a importer dans mon souvenir.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "command.max.com.voice"
        minSdkVersion 17
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

Voila, normalement vous avez implémenté assez facilement Speech to Text à votre projet.

bon code.