¿Cómo puede usted leer los datos, es decir, convertir simples cadenas de texto a voz (speech) en Android?

Hay una API donde puedo hacer algo como esto:

TextToVoice speaker = new TextToVoice();
speaker.Speak("Hello World");
InformationsquelleAutor Soni Ali | 2009-07-21

5 Comentarios

  1. 3

    Utilizando el TTS es un poco más complicado de lo esperado, pero es fácil escribir un contenedor que le da la API deseo.

    Hay un número de asuntos que hay que superar para conseguir que funcione bien.

    Son:

    1. Siempre se establece en el UtteranceId (o más
      OnUtteranceCompleted no será
      llamado)
    2. configuración OnUtteranceCompleted
      el oyente (sólo después de la intervención
      el sistema se inicializa correctamente)
    
    public class TextSpeakerDemo implements OnInitListener
    {
    private TextToSpeech tts;
    private Activity activity;
    private static HashMap DUMMY_PARAMS = new HashMap();
    static 
    {
    DUMMY_PARAMS.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "theUtId");
    }
    private ReentrantLock waitForInitLock = new ReentrantLock();
    public TextSpeakerDemo(Activity parentActivity)
    {
    activity = parentActivity;
    tts = new TextToSpeech(activity, this);       
    //don't do speak until initing
    waitForInitLock.lock();
    }
    public void onInit(int version)
    {        //unlock it so that speech will happen
    waitForInitLock.unlock();
    }  
    public void say(WhatToSay say)
    {
    say(say.toString());
    }
    public void say(String say)
    {
    tts.speak(say, TextToSpeech.QUEUE_FLUSH, null);
    }
    public void say(String say, OnUtteranceCompletedListener whenTextDone)
    {
    if (waitForInitLock.isLocked())
    {
    try
    {
    waitForInitLock.tryLock(180, TimeUnit.SECONDS);
    }
    catch (InterruptedException e)
    {
    Log.e("speaker", "interruped");
    }
    //unlock it here so that it is never locked again
    waitForInitLock.unlock();
    }
    int result = tts.setOnUtteranceCompletedListener(whenTextDone);
    if (result == TextToSpeech.ERROR)
    {
    Log.e("speaker", "failed to add utterance listener");
    }
    //note: here pass in the dummy params so onUtteranceCompleted gets called
    tts.speak(say, TextToSpeech.QUEUE_FLUSH, DUMMY_PARAMS);
    }
    /**
    * make sure to call this at the end
    */
    public void done()
    {
    tts.shutdown();
    }
    }
  2. 1

    Un buen ejemplo de trabajo de tts de uso se pueden encontrar en el «Pro Android 2 del libro». Eche un vistazo a su código fuente para el capítulo 15.

  3. 0

    Hay terceros de texto-a-voz de los motores. Se rumorea que el Donut contiene un texto-a-voz de motor, lo que sugiere que estará disponible en futuras versiones de Android. Más allá de eso, sin embargo, no hay nada construido en Android para el texto-a-voz.

    • Esto ya no es cierto, ya 1.6 tiene

Dejar respuesta

Please enter your comment!
Please enter your name here