Android - Text To Speech
Android ti consente di convertire il tuo testo in voce. Non solo puoi convertirlo, ma ti consente anche di parlare il testo in una varietà di lingue diverse.
Android fornisce TextToSpeechclasse per questo scopo. Per utilizzare questa classe, è necessario creare un'istanza di un oggetto di questa classe e specificare anche il fileinitListener. La sua sintassi è data di seguito:
private EditText write;
ttobj=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
}
});
In questo listener, devi specificare le proprietà per l'oggetto TextToSpeech, come la sua lingua, il tono ecc. La lingua può essere impostata chiamando setLanguage()metodo. La sua sintassi è data di seguito:
ttobj.setLanguage(Locale.UK);
Il metodo setLanguage accetta un oggetto Locale come parametro. Di seguito è riportato l'elenco di alcune delle località disponibili:
Suor n | Locale |
---|---|
1 | NOI |
2 | CANADA_FRENCH |
3 | GERMANIA |
4 | ITALIA |
5 | GIAPPONE |
6 | CINA |
Dopo aver impostato la lingua, puoi chiamare speakmetodo della classe per pronunciare il testo. La sua sintassi è data di seguito:
ttobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
Oltre al metodo speak, ci sono altri metodi disponibili nella classe TextToSpeech. Sono elencati di seguito:
Suor n | Metodo e descrizione |
---|---|
1 | addSpeech(String text, String filename) Questo metodo aggiunge una mappatura tra una stringa di testo e un file audio. |
2 | getLanguage() Questo metodo restituisce un'istanza Locale che descrive la lingua. |
3 | isSpeaking() Questo metodo controlla se il motore TextToSpeech è occupato a parlare. |
4 | setPitch(float pitch) Questo metodo imposta il tono del parlato per il motore TextToSpeech. |
5 | setSpeechRate(float speechRate) Questo metodo imposta la velocità del parlato. |
6 | shutdown() Questo metodo rilascia le risorse utilizzate dal motore TextToSpeech. |
7 | stop() Questo metodo ferma la parola. |
Esempio
L'esempio seguente mostra l'uso della classe TextToSpeech. Crea un'applicazione di base che ti consente di impostare il testo di scrittura e di pronunciarlo.
Per sperimentare questo esempio, è necessario eseguirlo su un dispositivo reale.
Passi | Descrizione |
---|---|
1 | Utilizzerai Android Studio per creare un'applicazione Android con un pacchetto com.example.sairamkrishna.myapplication. |
2 | Modifica il file src / MainActivity.java per aggiungere il codice TextToSpeech. |
3 | Modifica il file XML di layout res / layout / activity_main.xml aggiungi qualsiasi componente della GUI se necessario. |
4 | Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati. |
Ecco il contenuto di 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();
}
}
Ecco il contenuto di activity_main.xml
Nel codice seguente abcindica il logo di 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>
Ecco il contenuto di Strings.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
Ecco il contenuto di 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>
Proviamo a eseguire la tua applicazione. Presumo che tu abbia collegato il tuo attuale dispositivo mobile Android al tuo computer. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic
Seleziona il tuo dispositivo mobile come opzione e quindi controlla il tuo dispositivo mobile che mostrerà la schermata seguente.
Ora digita del testo nel campo e fai clic sul pulsante di sintesi vocale in basso. Apparirà una notifica e verrà pronunciato il testo. È mostrato nell'immagine qui sotto -
Ora digita qualcos'altro e ripeti il passaggio di nuovo con una lingua diversa. Sentirai di nuovo il suono. Questo è mostrato di seguito -