Texto a voz desde VFP

2,168 views
Skip to first unread message

Ultraton500

unread,
Nov 19, 2013, 1:35:34 PM11/19/13
to publice...@googlegroups.com
Hola colegas, hay varios hilos acerca de este tema pero no pude hallar una solución a mi problema en alguno de ellos y por eso abrí este nuevo hilo.
Necesito hacer que mi programa pronuncie unos mensajes y la solución sería esta:

oVoz = CreateObject("SAPI.SpVoice")
oVoz.Speak("Hola")

Funciona, pero la única voz instalada es para inglés.
Mi pregunta es si instalando una voz en español (como por ej. la de Loquendo) sería suficiente para que este código funcione.
Ya he descargado una voz de Loquendo y bien podría sacarme la duda probando pero no encuentro manera de instalarla. Se trata de tres archivos (.bin, .sde y .pmk), asi que si me dan alguna idea de cómo se hace les voy a estar muy agradecido.

Saludos,
Javier.

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Nov 19, 2013, 1:41:57 PM11/19/13
to publice...@googlegroups.com
Hola yo lo probé en Win 8 con VFP SP 1 en ingles y funciona perfecto la voz es en español, no sera por el sistema operativo que tienes?


Saludos; 


Ing. Russvell Jesus Soto Gamarra 
Framework Multi-conexion a cualquier base de datos v6.0

Douglas Sánchez

unread,
Nov 19, 2013, 1:51:01 PM11/19/13
to publice...@googlegroups.com
Hola yo hice una aplicacion para control de turno y lo que compre fue el programita textaloud con 4 voces 1 de ellas ingles ya que el Sistema mensiona en Ingles y Espñol para area de extranjeria, te recomiendo que probes con ese, y tengo algo donde configuro la vos que deseo dentro del sistema.

Saludes

Douglas
--
Ing. Douglas Sánchez Guillén
      Consultor Informatico
Claro: 505 88495476

Ultraton500

unread,
Nov 19, 2013, 2:04:49 PM11/19/13
to publice...@googlegroups.com
Hola Russvell, gracias por responder.
Tengo entendido que para Windows Vista y 7 solo hay una voz y es en inglés y no sé si lo mismo pasa con xp.
Por eso es que quisiera instalar una voz en español y despreocuparme si el S.O. es xp, Vista o 7.

Saludos,
Javier.

Luis Mata

unread,
Nov 19, 2013, 2:15:51 PM11/19/13
to publice...@googlegroups.com
Hola Malka, donde puedo ver tu codigo para hacer eso?

Ultraton500

unread,
Nov 19, 2013, 2:18:06 PM11/19/13
to publice...@googlegroups.com
Hola Douglas, si pudiese instalar y usar la voz que ya tengo descargada y evitar gastos sería lo mejor, pero igualmente estuve viendo la página de textaloud y no me parece caro. Lo que no entiendo bien es por qué me ofrecen el textaloud por un lado y el motor de voces AT&T por otro en la misma oferta.
Por eso me quedan algunas dudas al respecto:

- Se debe instalar el motor de voces AT&T, las voces y solo llamarlo desde vfp?
- Hace falta instalar también el textaloud?
- Cómo lo llamas desde vfp ?

Gracias Douglas por la información

Saludos,
Javier.

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Nov 19, 2013, 2:59:08 PM11/19/13
to publice...@googlegroups.com
Hola DSANCHEZ es el mismo código que paso el colega

oVoz = CreateObject("SAPI.SpVoice")
oVoz.Speak("Hola")

como comente hace un momento tengo win 8 enterpresi y VFP9 SP1 en ingles y todo corre perfecto, es por eso que le dije que se fijara en su sistema operativo.

Cesar Arias

unread,
Nov 19, 2013, 3:20:06 PM11/19/13
to publice...@googlegroups.com
Utiliza este que es un codigo de alguien de este foro y funciona bien

=tts("hola mundo")

FUNCTION tts()
  LPARAMETERS tctext
  m.http_get = "http://translate.google.com/translate_tts?tl=es&q="+urlencode(m.tctext)
  LOCAL ohttp AS winhttp.winhttprequest.5.1
  m.ohttp = CREATEOBJECT("WinHTTP.WinHTTPRequest.5.1")
  m.ohttp.OPEN("GET", m.http_get)
  m.ohttp.setrequestheader("Host","translate.google.com")
  m.ohttp.setrequestheader("User-Agent","Mozilla/5.0 (Windows; U; Windows 7; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)  ")
  m.ohttp.setrequestheader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
  m.ohttp.setrequestheader("Accept-Language","en-us,en;q=0.5")
  m.ohttp.setrequestheader("Accept-Encoding","gzip,deflate")
  m.ohttp.setrequestheader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7")
  m.ohttp.setrequestheader("Keep-Alive","115")
  m.ohttp.setrequestheader("Connection","keep-alive")
  m.ohttp.SEND()

  TRY
    DELETE FILE (ADDBS(SYS(2023)) + "trans*.mp3")
  CATCH TO m.loErr
  ENDTRY

  m.lcFileName =  ADDBS(SYS(2023)) + "trans" + FORCEEXT(SYS(2015),"MP3")
  SET SAFETY OFF
  STRTOFILE(CAST(m.ohttp.responsebody AS MEMO),m.lcFileName)

 * IF VARTYPE(m.oMCI) # "O"
    PUBLIC oMCI
    m.oMCI = CREATEOBJECT("MCI.MMcontrol")
*  ENDIF
  m.omci.COMMAND = "Close"
  *//
  m.omci.FileName = m.lcFileName
  m.omci.AutoEnable=1
  m.omci.COMMAND = "Open"
  m.omci.COMMAND = "Play"

  RETURN
ENDFUNC

FUNCTION urlencode
  PARAMETERS tcvalue, llnoplus
  LOCAL lcresult, lcchar, lnsize, lnx
  *** Do it in VFP Code
  m.lcresult = ""
  FOR m.lnx = 1 TO LEN(m.tcvalue)
    m.lcchar = SUBSTR(m.tcvalue,m.lnx,1)
    IF ATC(m.lcchar,"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") > 0
      m.lcresult = m.lcresult + m.lcchar
      LOOP
    ENDIF

    IF m.lcchar = " " AND !m.llnoplus
      m.lcresult = m.lcresult + "+"
      LOOP
    ENDIF

    *** Convert others to Hex equivalents
    m.lcresult = m.lcresult + "%" + RIGHT(TRANSFORM(ASC(m.lcchar),"@0"),2)
  ENDFOR
  RETURN m.lcresult
ENDFUNC

 

Douglas Sánchez

unread,
Nov 19, 2013, 3:30:36 PM11/19/13
to publice...@googlegroups.com
Y te lo envie revisa tu correo.

Saludes
Douglas

Luis Maria Guayan

unread,
Nov 19, 2013, 5:01:25 PM11/19/13
to publice...@googlegroups.com
Con VFP 9 SP2 y Windows 8.1 Pro 64 bits en español habla una mujer en español !!


oVoz = CreateObject("SAPI.SpVoice")
oVoz.Speak("Nada corre como un zorro")

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Ultraton500

unread,
Nov 19, 2013, 7:26:26 PM11/19/13
to publice...@googlegroups.com
Gracias Cesar por el aporte pero..
No entiendo por qué crea un objeto WinHTTP ni por qué mete en el código a translate.google.com y Mozzila.
ese código es para usar con internet?

Saludos,
Javier.

Ultraton500

unread,
Nov 19, 2013, 7:29:23 PM11/19/13
to publice...@googlegroups.com
Hola Luis María, si, se vé que para windows 8 el narrador en español funciona.
El inconveniente estaría en que mi idea es que funcione en todos los windows de xp en adelante.

Saludos,
Javier.

edgar suarez kummers

unread,
Nov 19, 2013, 7:32:25 PM11/19/13
to publice...@googlegroups.com

elkin dario uribe torres

unread,
Nov 20, 2013, 7:06:41 AM11/20/13
to publice...@googlegroups.com
Hola Javier, por defecto trae es el ingles, lo que puedes hacer para que ensayes es conseguirte una voz de loquendo (Carlos y Carmen en mi caso para colombia), pero hay otros que hablan Lunfardo si es para tu caso.  Te lo digo porque para un desarrolo que efectue de identificacion de huellas me encargaron que le adicionara altavoces para que al momento de identificarlo pronunciara el nombre de la persona y que tipo de marcacion era (entrada o salida), y la unica forma de quitarme eso de encima fue con las voces de loquendo.

Saludos

Elkin Uribe

Luis Maria Guayan

unread,
Nov 20, 2013, 8:07:50 AM11/20/13
to publice...@googlegroups.com
Con el siguiente código, el narrador "habla" en todos los idiomas y voces instaladas (válido para cualquier Windows)

LOCAL oVoz AS "SAPI.SpVoice"
oVoz = CREATEOBJECT("SAPI.SpVoice")
FOR ln = 0 TO oVoz.GetVoices().COUNT - 1
  ? oVoz.GetVoices().ITEM(ln).GetDescription
  ? oVoz.GetVoices().ITEM(ln).ID
  oVoz.Voice = oVoz.GetVoices().ITEM(ln)

  oVoz.Speak("Nada corre como un zorro")
ENDFOR

En mi caso que tengo instalada la voz de Diego (con acento Argentino) y las por defectos de Windows 8 me lista 4 voces:

Diego (Argentina)
Helena (España)
Zira (Ingles)
Sabina (México)

En un Windows XP sin voces adicionales instaladas me lista solo 1:

Sam (Inglés)


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Ultraton500

unread,
Nov 20, 2013, 9:26:06 AM11/20/13
to publice...@googlegroups.com
Muchas gracias Douglas y Luis María por los ejemplos, me vienen muy bien para saber cómo obtener las voces instaladas.
Mi mayor obstáculo es que tengo una voz de Loquendo y no sé cómo instalarla. Me he visto unos cuantos videos pero no encontré ninguno que indique cómo instalar una voz en el sistema operativo. La mayoría hace referencia a instalar un programa para que pronuncie el texto que se le escriba.

Saludos cordiales,
Javier.

Ultraton500

unread,
Nov 20, 2013, 9:32:17 AM11/20/13
to publice...@googlegroups.com
Hola Elkin, gracias por consejo. Como comentaba anteriormente ya he conseguido una voz de Loquendo pero no sé cómo agregarla a la voz que tengo en el S.O.. No encontré ninguna opción para agregar voces ni tengo un .exe entre los archivos de la voz que conseguí (solo .bin, .sde y .pmk). Así que si alguien pudiera darme alguna mano con esto se lo agradecería)

Saludos cordiales,
Javier.

elkin dario uribe torres

unread,
Nov 20, 2013, 10:00:43 AM11/20/13
to publice...@googlegroups.com
Javier cada voz trae su instalador y es un archivo exe revisalo.

Jose Antonio Blasco

unread,
Nov 20, 2013, 10:21:06 AM11/20/13
to Comunidad de Visual Foxpro en Español
Javier, si quieres, yo tengo la instalación de la voz "Isabel".

Ya me dirás.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Ultraton500

unread,
Nov 20, 2013, 11:21:47 AM11/20/13
to publice...@googlegroups.com
Mes está faltando el .exe entonces. Veré que hago.
Gracias por el dato.

Saludos,
Javier.

Jorge Blas Diaz Armesto

unread,
Nov 20, 2013, 1:02:28 PM11/20/13
to publice...@googlegroups.com

Hermano colega tengo instalado Windows 7 32 y me sigue dando voz en ingles

Jorge Blas Diaz Armesto

unread,
Nov 20, 2013, 1:07:14 PM11/20/13
to publice...@googlegroups.com

Quiero instalar la voz de diego luis pero tengo el sistema windos 7 32 que hago para instalarla ya probe otras voces para instlarla en este sistema pero anna se mantiene sin quitarse o darle espacio a otra voz en castellano

Saludos jorge

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Ultraton500
Enviado el: Wednesday, November 20, 2013 9:26 AM
Para: publice...@googlegroups.com
Asunto: Re: [vfp] Texto a voz desde VFP

 

Muchas gracias Douglas y Luis María por los ejemplos, me vienen muy bien para saber cómo obtener las voces instaladas.

Staff de Desarrollos EfiMax

unread,
Nov 20, 2013, 1:28:50 PM11/20/13
to publice...@googlegroups.com

De manera adicional a lo comentado y dado que las voces de loquendo requieren licencia por cada instalación, te recomendaría la siguiente:

 

A): Si lo que vas a reproducir son audios constantes como "Estimado usuario su cuenta presenta saldos pendientes, favor de contactar al departamento de contabilidad", "Su ingreso ha sido procesado satisfactoriamente", etc.

y no requieres reproducir cadenas generadas al aire.

 

Considera usar el TTS de loquendo para generar audios MP3 o WAV que puedes reproducir en cualquier equipo con audio sin tener que instalar las voces licencias al menos las de español y genera la biblioteca de audios requerida.

 

B): Ahora si lo que requieres es  generar cadenas al aire y reproducirlas revisa el agente de Windows (lo recuerdas ese mago que aparecía desde Windows 95) al menos en Windows 95/98/XP/Vista/2000/Windows 7 todavía funciona  con la voz de ATT  en español, evidentemente es equiparable a la de SAM pero es en español y se puede instalar sin licencias en todos los equipos y no requiere grandes recursos CPU/Disco alrededor de unos 10 megas en lugar de los 600 que requiere la voz de carlos

 

Suerte.

 

____________________________________

Carlos Omar Figueroa López

Ingeniero Industrial y de Sistemas

http://www.efimax.com.mx

Jorge Blas Diaz Armesto

unread,
Nov 21, 2013, 9:55:05 AM11/21/13
to publice...@googlegroups.com

Como puedo acceder a el en Windows 7 colega

 

Saludos jorge

Staff de Desarrollos EfiMax

unread,
Nov 21, 2013, 10:02:53 AM11/21/13
to publice...@googlegroups.com

http://rainbow.arch.scriptmania.com/merlin/downloads_check.html

 

En Win7 ya no funcionan con SAPI, pero es funcional para lo que quieres hacer convertir texto a voz

 

Suerte

Message has been deleted
Message has been deleted

René Salamanca

unread,
May 15, 2017, 11:59:02 PM5/15/17
to Comunidad de Visual Foxpro en Español
Cordial saludo, Luis María,

Primero agradecerte por compartir tus conocimientos, usando el código que publicas, funciona perfecto, pero mi dificultad  es cuando comienza el sistema a pronunciar el texto a voz, no se puede hacer nada dentro del sistema, la aplicación se detiene hasta que termine de pronunciar el texto.

¿Existe alguna forma de que se pueda detener el dictado a través de un botón dentro del formulario?,  o hacer que se ejecute en segundo plano el dictado y que permita continuar el uso del formulario?.

Agradezco mucho si puedes ayudarme


René Salamanca

wpalomo

unread,
May 16, 2017, 12:51:27 PM5/16/17
to Comunidad de Visual Foxpro en Español
Saludos

Esta es la respuesta

oVoz = CreateObject("SAPI.SpVoice")
oVoz.Speak("Nada corre como un zorro",1)


Suerte

René Salamanca

unread,
May 17, 2017, 10:57:38 AM5/17/17
to publice...@googlegroups.com
Gracias por ayudarme, te comento, que eso ya lo hice y como escribi en el post, me funciona, el problema es que en la medida que comienza a pronunciar el texto el sistema se paraliza y no deja hacer nada mas hasta que termine, lo que necesito es, que cuando esta pronunciando el texto, permita que pueda hacer clic sobre los demás botones dentro del formulario, 

Por esto es que necesito que se ejecute el SAPI.Spvoice en segundo plano, por que cuando el texto a reproducir es por ejemplo de unas 20 lineas, tengo que esperar a que acabe de reproducir para poder continuar usando el formulario.


Gracias

Antonio Meza

unread,
May 17, 2017, 11:07:39 AM5/17/17
to Comunidad de Visual Foxpro en Español
Y si generas un exe de VFP que le mandes el texto a pronunciar, y cuando quieras que lo haga llamas al exe de forma externa desde la aplicación de VFP ? 

saludos
Antonio Meza

René Salamanca

unread,
May 17, 2017, 11:11:52 AM5/17/17
to publice...@googlegroups.com
Gracias Antonio, ya estaba trabajando en eso, no vi otra opción, aunque por ahí buscando, hay una opcion en el control que dice "priority= " pero aun no he logrado hacerlo funcionar.

Saludos.....

Elides Paredes

unread,
May 17, 2017, 9:31:16 PM5/17/17
to Comunidad de Visual Foxpro en Español
Amigo ve éste hilo.

José Antonio Blanco me sugirió éste enlace.
Muy bueno....

La respuesta es 

oVoz.Speak(cMensaje ,1)
Pero revisa el contenido que es muy bueno.
Saludos
Elides Paredes
Barquisimeto Venezuela..


Mario López

unread,
May 18, 2017, 12:33:23 PM5/18/17
to Comunidad de Visual Foxpro en Español

@Rene:

en el caso de que no te funcione desde API podrías ejecutar directamente un programa externo que diga la frase que necesitás, yo suelo usar http://nircmd.nirsoft.net/speak.html ej:

nircmd speak text "Hasta la vista, baby"

HTH
Mario


René Salamanca

unread,
May 18, 2017, 12:54:39 PM5/18/17
to publice...@googlegroups.com
Agradezco a todos los que tomaron su tiempo por ayudarme a buscar una solución.

Opte por asignar una tecla de función para que diera un valor 1 a una variable x, de modo que al pulsar la tecla F2,  x sería igual a 1 y dentro de bucle que se encargaba de ir pronunciando cada mensaje, por que son muchos, le puse una condición en la cual mientras x sea igual a  0, pronuncie cada mensaje guardado en la tabla avanzando de uno en uno, pero al cambiar la variable x a 1, inmediatamente detenga la reproducción.

Gracias nuevamente.



René Salamanca
Reply all
Reply to author
Forward
0 new messages