Spanish [SOLUCIONADO] Pasar de Texto a Voz un mensaje corto.

desof

Well-Known Member
Licensed User
Longtime User
Hola Estuve buscando en el foro pero no encontré nada.
Necesito enviar un String y que el que se transforme a audio o lo reproduzca con la vos predeterminada del telefono.
Es para dotar de un botón de Voz para los disminuidos visuales.

Gracias
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola, el código generico es muy simple:


B4X:
Sub Process_Globals
Dim TTS1 As TTS
Dim VozOK as Boolean
....

Sub Activity_Create(FirstTime As Boolean)
TTS1.Initialize("TextoaVoz")
...

Sub Activity_Pause (UserClosed As Boolean)
if UserClosed Then TTS1.Release
...

Sub TextoaVoz_Ready (Success As Boolean)

  VozOK = Success
  ' Puedes habilitar el botón de "hablar"
End Sub



Sub DarMensajeVoz (Texto As String)

  if VozOK = False then Return

    Try
         TTS1.Speak(Texto,True)
     Catch
    End Try      

End Sub

'Si quieres parar el mensaje hablado
    Try
       TTS1.Stop
     Catch
    End Try


Si quieres saber cuando acabó el mensaje hablado, lo tendrás que hacer con la libreria Phone:

B4X:
  Dim PhoneId As PhoneId
  Dim EventoTextoaVoz As PhoneEvents
  EventoTextoaVoz.InitializeWithPhoneState("AVISOS_EventoTextoaVoz",PhoneId)

Sub AVISOS_EventoTextoaVoz_TextToSpeechFinish (Intent As Intent)
  ' mensaje hablado finalizado, te puede valer para enviar otro mensaje
End sub

Saludos
 

desof

Well-Known Member
Licensed User
Longtime User
Hola, el código generico es muy simple:


B4X:
Sub Process_Globals
Dim TTS1 As TTS
Dim VozOK as Boolean
....

Sub Activity_Create(FirstTime As Boolean)
TTS1.Initialize("TextoaVoz")
...

Sub Activity_Pause (UserClosed As Boolean)
if UserClosed Then TTS1.Release
...

Sub TextoaVoz_Ready (Success As Boolean)

  VozOK = Success
  ' Puedes habilitar el botón de "hablar"
End Sub



Sub DarMensajeVoz (Texto As String)

  if VozOK = False then Return

    Try
         TTS1.Speak(Texto,True)
     Catch
    End Try     

End Sub

'Si quieres parar el mensaje hablado
    Try
       TTS1.Stop
     Catch
    End Try


Si quieres saber cuando acabó el mensaje hablado, lo tendrás que hacer con la libreria Phone:

B4X:
  Dim PhoneId As PhoneId
  Dim EventoTextoaVoz As PhoneEvents
  EventoTextoaVoz.InitializeWithPhoneState("AVISOS_EventoTextoaVoz",PhoneId)

Sub AVISOS_EventoTextoaVoz_TextToSpeechFinish (Intent As Intent)
  ' mensaje hablado finalizado, te puede valer para enviar otro mensaje
End sub

Saludos

Genial ESte me anduvo OK!!

pero me lo dice en Ingles ....
como cambio por defecto al español?
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola desof:

El lenguaje se cambia con SetLanguage

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
De nada desof

Se me olvidaba, el motor de texto a voz (en español) de Samsung es mucho mejor que el de Google (para mi), no "canta" tanto las frases, no hace esa entonación tan larga, yo lo prefiero, es mas "real", si tienes un Samsung lo puedes bajar aqui:
http://www.samsungapps.com/appquery...T.lang_es_es_l01&cntyTxt=214&equipID=SM-G925F

O puedes buscarla bajo este nombre: samsung tts spanish female high quality


Saludos
 
Top