tts texttospeech studio speak spanish not failed español engine developers bound android api text-to-speech

texttospeech - text to speech android studio español



TextToSpeech con API 21 (6)

Así que supongo que este es el truco:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { tts.speak("12 e8", TextToSpeech.QUEUE_FLUSH, null, null); } else { tts.speak("12 e8", TextToSpeech.QUEUE_FLUSH, null); }

Solo necesito probar esto en el emulador.

Por cierto, @Aditya, desde que me has ayudado tanto, me he quedado atascado en el mismo proyecto en el que debería decir que TextToSpeech y enciende la pantalla, pero no logro encender la pantalla. He intentado usar wakelocks y banderas de todos los ejemplos que he encontrado :) Esto se hace a través del sensor de proximidad que logré trabajar. Dice el texto pero no muestra la pantalla. ¿Me puedes ayudar con esto?

Bueno, la práctica es la clave del éxito. Todas las respuestas sugeridas por mí están funcionando perfectamente en mi eclipse IDE. La solución de su bloqueo de pantalla está abajo.

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); wl.acquire(); ..screen will stay on during this section.. wl.release();

Alguien me puede ayudar a usar TTS con API 21. Todos los ejemplos disponibles están en desuso con la versión 21

Aquí está mi código que da error en la última línea:

Calendar cal = Calendar.getInstance(); cal.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); String text = sdf.toString(); btn.setText("Ouvir as Horas"); TextToSpeech tts = new TextToSpeech(NightClock.this,(TextToSpeech.OnInitListener) NightClock.this); tts.setLanguage(Locale.US); tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);

En los desarrolladores de Android, dice que este método está en desuso y es reemplazado por este:

speak (String text, int queueMode, HashMap params) Este método quedó en desuso en el nivel 21 de API. En el nivel 21 del API, se reemplazó por speak (CharSequence, int, Bundle, String).

Alguien puede ayudar a codificar mi aplicación.


Busqué varios sitios. Finalmente, creo que podría obtener la respuesta a tu pregunta ...

En lugar de llamar directamente a tts.speak (), coloque la siguiente instrucción if-else.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { ttsGreater21(text); } else { ttsUnder20(text); }

Luego declare ttsGreater21 () y ttsUnder20 () de la siguiente manera.

@SuppressWarnings("deprecation") private void ttsUnder20(String text) { HashMap<String, String> map = new HashMap<>(); map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "MessageId"); tts.speak(text, TextToSpeech.QUEUE_FLUSH, map); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void ttsGreater21(String text) { String utteranceId=this.hashCode() + ""; tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, utteranceId); }

Confirmé el código anterior con Genymotion VM Android 5.0 y Android 4.4.4.


El wakelock, me las arreglé para hacerte trabajar de esta manera:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "MyWakelock"); wl.aquire(); wl.release();


Prueba esto

tts=new TextToSpeech(getBaseContext(),new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { tts.setLanguage(Locale.getDefault()); tts.setPitch(1.3f); tts.setSpeechRate(1f); } });


(1) Mi actividad implementa TextToSpeech.OnInitListener

(2) reproduzco mi voz sintetizada en el método onInit, pero supongo que (no lo he intentado) podría reproducirlo en cualquier momento después de llamar a onInit (). Pero esta es la clave, hay que esperar a que el motor TextToSpeech se inicialice.

public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener { public TextToSpeech mTTS; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTTS = new TextToSpeech(this, this); } @Override public void onInit(int i) { mTTS.setLanguage(Locale.UK); mTTS.speak("Hello, how are you?", TextToSpeech.QUEUE_ADD, null, null); } }


tts.speak(text,TextToSpeech.QUEUE_FLUSH,null,null);

Prueba esto.