Android: texto a voz

Android te permite convertir tu texto en voz. No solo puede convertirlo, sino que también le permite hablar texto en una variedad de idiomas diferentes.

Android proporciona TextToSpeechclase para este propósito. Para utilizar esta clase, debe crear una instancia de un objeto de esta clase y también especificar elinitListener. Su sintaxis se da a continuación:

private EditText write;
ttobj=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
   @Override
   public void onInit(int status) {
   }
});

En este oyente, debe especificar las propiedades del objeto TextToSpeech, como su idioma, tono, etc. El idioma se puede configurar llamando setLanguage()método. Su sintaxis se da a continuación:

ttobj.setLanguage(Locale.UK);

El método setLanguage toma un objeto Locale como parámetro. La lista de algunas de las configuraciones regionales disponibles se proporciona a continuación:

No Señor Lugar
1 NOS
2 CANADA_FRENCH
3 ALEMANIA
4 ITALIA
5 JAPÓN
6 CHINA

Una vez que haya configurado el idioma, puede llamar speakmétodo de la clase para pronunciar el texto. Su sintaxis se da a continuación:

ttobj.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);

Aparte del método speak, hay otros métodos disponibles en la clase TextToSpeech. Se enumeran a continuación:

No Señor Método y descripción
1

addSpeech(String text, String filename)

Este método agrega un mapeo entre una cadena de texto y un archivo de sonido.

2

getLanguage()

Este método devuelve una instancia de Locale que describe el idioma.

3

isSpeaking()

Este método comprueba si el motor TextToSpeech está ocupado hablando.

4

setPitch(float pitch)

Este método establece el tono de voz para el motor TextToSpeech.

5

setSpeechRate(float speechRate)

Este método establece la velocidad del habla.

6

shutdown()

Este método libera los recursos utilizados por el motor TextToSpeech.

7

stop()

Este método deja de hablar.

Ejemplo

El siguiente ejemplo demuestra el uso de la clase TextToSpeech. Contiene una aplicación básica que le permite configurar escribir texto y hablarlo.

Para experimentar con este ejemplo, debe ejecutarlo en un dispositivo real.

Pasos Descripción
1 Utilizará Android Studio para crear una aplicación de Android en un paquete com.example.sairamkrishna.myapplication.
2 Modifique el archivo src / MainActivity.java para agregar código TextToSpeech.
3 Modifique el archivo XML de diseño res / layout / activity_main.xml agregue cualquier componente GUI si es necesario.
4 Ejecute la aplicación y elija un dispositivo Android en ejecución e instale la aplicación en él y verifique los resultados.

Aquí está el contenido 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();
   }
}

Aquí está el contenido de activity_main.xml

En el siguiente código abcindica el 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>

Aquí está el contenido de Strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Aquí está el contenido 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>

Intentemos ejecutar su aplicación. Supongo que ha conectado su dispositivo móvil Android real con su computadora. Para ejecutar la aplicación desde Android Studio, abra uno de los archivos de actividad de su proyecto y haga clic en el icono Ejecutar de la barra de herramientas. Antes de iniciar su aplicación, Android Studio mostrará la siguiente ventana para seleccionar una opción donde desea ejecutar su aplicación de Android.

Seleccione su dispositivo móvil como una opción y luego verifique su dispositivo móvil que mostrará la siguiente pantalla.

Ahora simplemente escriba algo de texto en el campo y haga clic en el botón de texto a voz a continuación. Aparecerá una notificación y se hablará un texto. Se muestra en la imagen a continuación:

Ahora escriba algo más y repita el paso nuevamente con una configuración regional diferente. Volverá a escuchar el sonido. Esto se muestra a continuación: