Android TTS (texto a voz) no pronuncia letra única correctamente

Estoy tratando de implementar la tecnología de texto a voz de Android en mi actividad. Es un simple juego de palabras y quiero que el motor TTS deletree una sola letra cuando el usuario pulsa algún botón. Por ejemplo, cuando el usuario presiona el botón A , quiero escuchar "A".

El problema es que el método .speak sólo toma una cadena como entrada. Por lo tanto, cuando le digo al motor TTS que sólo quiero una sola cadena de letra, el sonido no es la pronunciación de la letra. ¿Hay alguna manera que puedo hacer que pronuncie correctamente las cadenas de una sola letra?

La solución hasta ahora era usar como entrada de cadena, palabras que sonaban como las letras, por ejemplo, "abeja" para B , "ver" para C y así sucesivamente. Pero ¿qué pasa con F , H y así sucesivamente?

¿Alguna otra idea?

2 Solutions collect form web for “Android TTS (texto a voz) no pronuncia letra única correctamente”

Después de experimentar mucho, encontré una solución mejor. Para que el motor de tts de androide anounce una sola letra que usted tiene que escribirla en mayúsculas. Por ejemplo "B". De esta manera se pronunciará correctamente! Las únicas excepciones son "A" y "Z" que tienen que ser escritas como "ay" y "zet"!

Espero que esto ayude

He actualizado un antiguo proyecto de prueba TTS, así que sí es la forma en que se dice, pero poniendo la coma separada para forzar la letra de la pronunciación por letra, estaba intentando la otra opción que usted dice también (ambos se incluyen aquí):

Introduzca aquí la descripción de la imagen

Las clases principales son:

 public class SpellUtil { public static String convertToSpellOnce(String words) { StringBuilder sb = new StringBuilder(); for (char letter : words.toCharArray()) { sb.append(letter); //sb.append(convertSoundBased(letter)); this is another option sb.append(","); } return sb.toString(); } private static String convertSoundBased(char letter) { switch (letter) { case 'a': return "a"; case 'b': return "bee"; case 'c': return "cee"; case 'd': return "dee"; case 'e': return "e"; case 'f': return "ef"; case 'g': return "gee"; case 'h': return "aitch"; case 'i': return "i"; case 'j': return "jay"; case 'k': return "kay"; case 'l': return "el"; case 'm': return "em"; case 'n': return "en"; case 'o': return "o"; case 'p': return "pee"; case 'q': return "cue"; case 'r': return "ar"; case 's': return "ess"; case 't': return "tee"; case 'u': return "u"; case 'v': return "vee"; case 'w': return "double-u"; case 'x': return "ex"; case 'y': return "wy"; case 'z': return "zed"; } return ""; } } 

Compruebe el código completo aquí:

https://github.com/tiveor/android-intermediate/tree/master/SpeechTest

  • Android "speak fallado: no está vinculado al motor tts"
  • Idiomas faltantes en TTS android
  • La función de devolución de llamada de Android TTS onUtteranceCompleted no se recibe
  • Android llamada TTS en BroadcastReceiver
  • Android TextToSpeech: obtener la longitud de tiempo de audio
  • NullPointerException durante el uso de TTS en CustomListview
  • Cómo cambiar programáticamente el motor predeterminado TTS
  • Cómo cambiar la voz de un motor TTS
  • TextToSpeech.setEngineByPackageName () devuelve el éxito incluso cuando el paquete no está disponible
  • ¿Cómo puedo guardar el archivo Text to Speech como formato .wav / .mp3 en idioma árabe en External Storage?
  • Desarrollo de aplicaciones similares a "Google ahora" - ¿es posible utilizar el reconocimiento de voz sin entrada de teclado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.