2015-09-07 11 views
5

Ho un'app per le persone ipovedenti che fanno molto affidamento su TTS. Tuttavia, per qualche motivo, quando uso il metodo speak, TTS salta in modo casuale le prime lettere di una frase o pronuncia le prime lettere in un volume basso e il resto in un volume normale.TTS salta in modo casuale le prime lettere della frase

Qualche idea del motivo per cui ciò potrebbe accadere?

Questo è il mio codice corrente:

public class SpeechHelper implements TextToSpeech.OnInitListener { 
    private Context context = null; 
    private TextToSpeech tts; 

    public SpeechHelper(Context context) 
    { 
     this.context = context; 
     try { 
      tts = new TextToSpeech(context, this); 
     } catch(Exception e) { 
      Log.e("Phone Features Exception","Couldn't initiate TTS", e); 
     } 
    } 


    @Override 
    public void onInit(int status) { 
     if (status == TextToSpeech.SUCCESS) { 
      tts.setLanguage(Locale.getDefault()); 
     } 
    } 

    public void speak(String s, int mode, String messageID) { 

     Log.d("VOLUME", "getStreamVolume " + am.getStreamVolume(AudioManager.STREAM_MUSIC)); // Always 15 
     Log.d("VOLUME", "isMusicActive " + (am.isMusicActive() ? "true" : "false")); // Always false 
     Log.d("VOLUME", "isVolumeFixed " + (am.isVolumeFixed() ? "true" : "false")); // Always false 
     Log.d("VOLUME", "isSpeakerphoneOn: " + (am.isSpeakerphoneOn() ? "true" : "false")); // Always false 
     Log.d("VOLUME", "getMode: " + am.getMode()); // Always 0 

     HashMap<String, String> params = new HashMap<String, String>(); 
     params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, messageID); 
     tts.speak(s, mode, params); 
    } 
} 

ho notato il problema si verifica sui prossimi 5 secondi dopo aver effettuato una chiamata o quando si sblocca il telefono per l'applicazione sempre.

+0

A quale motore stai testando? – ozbek

+0

Ho notato che ciò accade sempre dopo aver effettuato una chiamata. Qualche indizio? cosa intendi con quale motore? – lisovaccaro

+0

@ozbek Sto utilizzando com.google.android.tts – lisovaccaro

risposta

2

O stai facendo qualcosa di sbagliato o Android sta facendo qualcosa di sbagliato. Se dovessi metterci dei soldi, direi che sei tu.

Inizia semplicemente chiamando

tts.speak("the quick brown fox jumps over the lazy dog", tts.QUEUE_FLUSH, null); 

per vedere se è possibile riprodurre il problema in un applicazione di test (non ho potuto). Se puoi, sarei molto curioso di sapere su quale telefono/sistema operativo stai utilizzando. Il tuo problema risiede probabilmente nelle stringhe troncate o in qualcos'altro che crea problemi con il volume.

+0

Ho stampato le stringhe e non sembrano avere problemi. Ho notato che il problema si verifica sempre dopo aver effettuato una chiamata, ma non sono ancora riuscito a risolverlo. – lisovaccaro

+0

Che telefono/sistema operativo stai usando? – James

Problemi correlati