Android - Synthèse vocale
Android vous permet de convertir votre texte en voix. Non seulement vous pouvez le convertir, mais cela vous permet également de parler du texte dans une variété de langues différentes.
Android fournit TextToSpeechclasse à cet effet. Pour utiliser cette classe, vous devez instancier un objet de cette classe et également spécifier leinitListener. Sa syntaxe est donnée ci-dessous -
private EditText write;
ttobj=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
}
});
Dans cet écouteur, vous devez spécifier les propriétés de l'objet TextToSpeech, telles que sa langue, sa hauteur, etc.La langue peut être définie en appelant setLanguage()méthode. Sa syntaxe est donnée ci-dessous -
ttobj.setLanguage(Locale.UK);
La méthode setLanguage prend un objet Locale comme paramètre. La liste de certains des paramètres régionaux disponibles est donnée ci-dessous -
Sr. Non | Lieu |
---|---|
1 | NOUS |
2 | CANADA_FRANÇAIS |
3 | ALLEMAGNE |
4 | ITALIE |
5 | JAPON |
6 | CHINE |
Une fois que vous avez défini la langue, vous pouvez appeler speakméthode de la classe pour prononcer le texte. Sa syntaxe est donnée ci-dessous -
ttobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
Outre la méthode speak, il existe d'autres méthodes disponibles dans la classe TextToSpeech. Ils sont listés ci-dessous -
Sr. Non | Méthode et description |
---|---|
1 |
addSpeech(String text, String filename) Cette méthode ajoute un mappage entre une chaîne de texte et un fichier son. |
2 |
getLanguage() Cette méthode renvoie une instance de Locale décrivant la langue. |
3 |
isSpeaking() Cette méthode vérifie si le moteur TextToSpeech est occupé à parler. |
4 |
setPitch(float pitch) Cette méthode définit la hauteur de parole du moteur TextToSpeech. |
5 |
setSpeechRate(float speechRate) Cette méthode définit le taux de parole. |
6 |
shutdown() Cette méthode libère les ressources utilisées par le moteur TextToSpeech. |
sept |
stop() Cette méthode arrête la parole. |
Exemple
L'exemple ci-dessous illustre l'utilisation de la classe TextToSpeech. Il crée une application de base qui vous permet de définir le texte d'écriture et de le prononcer.
Pour expérimenter cet exemple, vous devez l'exécuter sur un appareil réel.
Pas | La description |
---|---|
1 | Vous utiliserez Android Studio pour créer une application Android sous un package com.example.sairamkrishna.myapplication. |
2 | Modifiez le fichier src / MainActivity.java pour ajouter du code TextToSpeech. |
3 | Modifiez le fichier XML de mise en page res / layout / activity_main.xml, ajoutez tout composant GUI si nécessaire. |
4 | Exécutez l'application et choisissez un appareil Android en cours d'exécution, installez l'application dessus et vérifiez les résultats. |
Voici le contenu de src/MainActivity.java.
package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.Locale;
import android.widget.Toast;
public class MainActivity extends Activity {
TextToSpeech t1;
EditText ed1;
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1=(EditText)findViewById(R.id.editText);
b1=(Button)findViewById(R.id.button);
t1=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR) {
t1.setLanguage(Locale.UK);
}
}
});
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String toSpeak = ed1.getText().toString();
Toast.makeText(getApplicationContext(), toSpeak,Toast.LENGTH_SHORT).show();
t1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
}
});
}
public void onPause(){
if(t1 !=null){
t1.stop();
t1.shutdown();
}
super.onPause();
}
}
Voici le contenu de activity_main.xml
Dans le code suivant abcindique le logo de tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:transitionGroup="true">
<TextView android:text="Text to Speech" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:theme="@style/Base.TextAppearance.AppCompat" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/imageView"
android:layout_marginTop="46dp"
android:hint="Enter Text"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="#ff7aff10"
android:textColorHint="#ffff23d1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text to Speech"
android:id="@+id/button"
android:layout_below="@+id/editText"
android:layout_centerHorizontal="true"
android:layout_marginTop="46dp" />
</RelativeLayout>
Voici le contenu de Strings.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
Voici le contenu de AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" >
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Essayons d'exécuter votre application. Je suppose que vous avez connecté votre appareil mobile Android à votre ordinateur. Pour exécuter l'application à partir du studio Android, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l'
Sélectionnez votre appareil mobile en option, puis vérifiez votre appareil mobile qui affichera l'écran suivant.
Maintenant, tapez simplement du texte dans le champ et cliquez sur le bouton de synthèse vocale ci-dessous. Une notification apparaîtra et le texte sera prononcé. Il est montré dans l'image ci-dessous -
Tapez maintenant quelque chose d'autre et répétez l'étape avec des paramètres régionaux différents. Vous entendrez à nouveau le son. Ceci est montré ci-dessous -