|
Página 1 de 1
|
Comando Play De Sox Como Proceso. SOLUCIONADO
Autor |
Mensaje |
celtilander
Usuario
Registrado: Octobre 2009
Mensajes: 49
Edad: 58
|
Comando Play De Sox Como Proceso. SOLUCIONADO
Hola a todos.
Estoy intentando usar el comando play del paquete sox, para que reproduzca sonidos en mi aplicación.
El caso es que creo un proceso donde hago que se ejecute play con EXEC y no consigo saber cuando termina el proceso de ejecutarse.
Es una aplicación que habla y el problema es que en momentos se interfieren peticiones para que diga algo, y eso hace que no reproduzca algunas peticiones. La única solución que he encontrado hasta ahora es meter un wait de cierto tiempo, pero no es muy útil al ser frases de diferentes tamaños y que no conozco de antemano.
Me explico mejor con el código.
Public Reproducir As Process
Public Sub Hablar(texto As String)
Try Kill "/tmp/a.wav"
FMain.TxtAVoz.text = texto
Exec ["pico2wave", "-l", "es-ES", "-w", "/tmp/a.wav", "\"" & texto & "\""] To texto
Reproducir = Exec ["play", "/tmp/a.wav"]
Reproducirlo()
End
Public Sub Reproducirlo()
If Reproducir.Running Then 'Si está en ejecución, espero con el bucle
Reproducirlo()
Else
[color=#FF0000]"NUNCA ENTRA AQUÍ" [/color]
Endif
última edición por celtilander el Miercoles, 22 Junio 2016, 00:10; editado 1 vez
|
#1 Martes, 21 Junio 2016, 16:26 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Comando Play De Sox Como Proceso.
Public Sub Reproducirlo()
If Reproducir.Running Then 'Si está en ejecución, espero con el bucle
Reproducirlo()
Else
Aquí creo que deberías usar wait. Algo así:
Esto comprueba cada centésima de segundo el estado del proceso y deja abierto el bucle para la ejecución de eventos (tecla cancelar o lo que sea)
Espero que te sirva.
Saludos.
=================== No podemos regresar
|
#2 Martes, 21 Junio 2016, 17:09 |
|
|
celtilander
Usuario
Registrado: Octobre 2009
Mensajes: 49
Edad: 58
|
Re: Comando Play De Sox Como Proceso.
Public Sub Reproducirlo()
If Reproducir.Running Then 'Si está en ejecución, espero con el bucle
Reproducirlo()
Else
Aquí creo que deberías usar wait. Algo así:
Esto comprueba cada centésima de segundo el estado del proceso y deja abierto el bucle para la ejecución de eventos (tecla cancelar o lo que sea)
Espero que te sirva.
Saludos.
Gracias shordi por tu ayuda. Pero eso es precisamente lo que no funciona. Se queda Running todo el rato y no acaba con el proceso. Ya probé ese código y se queda en un bucle sin fin ya que nunca sale del running
Probé a usar Reproducir.Kill o Reproducir.Close, pero no valen de nada ya que no tengo control para saber cuando acaba la ejecución del play.. A veces ya se me da por pensar si es una especie de bug.
Saludos.
Por cierto, probé smplayer ejecutándolo desde consola con la opción "-close-at-end", que aunque sea un coñazo, ya que abre un gui, tampoco funciona como creo entender debería el "proceso".
Tambien probé con music de gb.sdl.sound según me dijo Julio, pero no se por qué motivo me genera mucho ruido.
última edición por celtilander el Martes, 21 Junio 2016, 19:25; editado 3 veces
|
#3 Martes, 21 Junio 2016, 18:41 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Comando Play De Sox Como Proceso.
...y si te gusta usar las funciones externas de Sox:
http://www.gambas-it.org/wiki/index..._del_API_di_Sox
|
#4 Martes, 21 Junio 2016, 19:28 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Comando Play De Sox Como Proceso.
Hola celtilander, mira si este ejemplo que hice te sirve para lo que queres hacer.
Saludos.
Descripción: |
Ejemplo para reproducir una pista mp3 con mplayer y dar aviso de comienzo y finalización de la reproducción. |
Descargar |
Nombre del archivo: |
test-0.0.2.tar.gz |
Tamaño: |
11.95 KB |
Descargado: |
56 veces |
Descripción: |
Ejemplo para reproducir una pista mp3 con mplayer y dar aviso de comienzo y finalización de la reproducción. |
Descargar |
Nombre del archivo: |
test-0.0.2.tar.gz |
Tamaño: |
11.95 KB |
Descargado: |
56 veces |
Descripción: |
Ejemplo para reproducir una pista mp3 con mplayer y dar aviso de comienzo y finalización de la reproducción. |
Descargar |
Nombre del archivo: |
test-0.0.2.tar.gz |
Tamaño: |
11.95 KB |
Descargado: |
56 veces |
|
#5 Martes, 21 Junio 2016, 19:59 |
|
|
celtilander
Usuario
Registrado: Octobre 2009
Mensajes: 49
Edad: 58
|
Re: Comando Play De Sox Como Proceso.
Muchas gracias a todos.
Al final he utilizado el ejemplo de tincho, me pareció más acorde a mis conocimientos.
El caso es que con las pruebas realizadas y una pequeña modificación, está funcionando.
Como curiosidad decir que si ajusto en valor de WAIT a menos de 1, se montan las reproducciones...
Y si interesa a alguien dejo la salida que obtengo en una prueba satisfactoria...
/tmp/a.wav:
File Size: 68.7k Bit Rate: 256k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 16000Hz
Replaygain: off
Duration: 00:00:02.14
In:100% 00:00:02.14 [00:00:00.00] Out:34.3k [ | ] Hd:0.0 Clip:0
Done.
/tmp/a.wav:
File Size: 133k Bit Rate: 256k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 16000Hz
Replaygain: off
Duration: 00:00:04.15
In:100% 00:00:04.15 [00:00:00.00] Out:66.4k [ | ] Hd:0.0 Clip:0
Done.
/tmp/a.wav:
File Size: 72.5k Bit Rate: 256k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 16000Hz
Replaygain: off
Duration: 00:00:02.26
In:100% 00:00:02.26 [00:00:00.00] Out:36.2k [ | ] Hd:0.0 Clip:0
Done.
/tmp/a.wav:
File Size: 72.5k Bit Rate: 256k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 16000Hz
Replaygain: off
Duration: 00:00:02.26
In:100% 00:00:02.26 [00:00:00.00] Out:36.2k [ | ] Hd:0.0 Clip:0
Done.
/tmp/a.wav:
File Size: 72.5k Bit Rate: 256k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 16000Hz
Replaygain: off
Duration: 00:00:02.26
In:100% 00:00:02.26 [00:00:00.00] Out:36.2k [ | ] Hd:0.0 Clip:0
Done.
/tmp/a.wav:
File Size: 72.5k Bit Rate: 256k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 16000Hz
Replaygain: off
Duration: 00:00:02.26
In:100% 00:00:02.26 [00:00:00.00] Out:36.2k [ | ] Hd:0.0 Clip:0
Done.
/tmp/a.wav:
File Size: 72.5k Bit Rate: 256k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 16000Hz
Replaygain: off
Duration: 00:00:02.26
In:100% 00:00:02.26 [00:00:00.00] Out:36.2k [ | ] Hd:0.0 Clip:0
Done.
/tmp/a.wav:
File Size: 72.5k Bit Rate: 256k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 16000Hz
Replaygain: off
Duration: 00:00:02.26
|
#6 Miercoles, 22 Junio 2016, 00:09 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|