Acceder

Ver la Versión Completa : [ IDEA ] Pronunciación TTS con pausas (más natural)


SmartPhoneLover
09/09/16, 19:54:51
Hola HTCManiac@s!
En éste hilo les traigo una interesante tarea que he hallado por la web (referencia (https://www.reddit.com/r/tasker/comments/35zfi9/how_to_pause_a_say_action_inside_tasker_to_pause/)), y me gustaría exponerla aquí para ver si podemos comprenderla, saber qué es lo que realiza tras cada paso y adaptarla.

Se trata de una tarea que mediante la incorporación de '<p>' (elementos creados para tal fin) después de un punto, una coma, un párrafo, o donde queramos, ésta agrrega una espera de x milisegundos, haciendo que la lectura sea un pelín más natural. Al menos eso he entendido según la descripción de la tarea, y viendo como funciona.

El inconveniente que le veo por ahora, es que al parecer hay que escribir (o copiar y pegar) el texto a procesar en la acción nº 3. Pues por tal motivo animo a que la estudiemos y veamos como podemos hacer para que en vez de que tengamos que pegar nosotros mismos el texto y agregarle dichos elementos, con solo incluir la variable '%CLIP' o donde hayamos almacenado el texto, ésta analize y auto-detecte los espacios depués de una coma o un punto, y lo haga todo ella solita.


A1: Establecer variable [ Nombre:%open_pause_char A:< Calcular:Apagado Añadir:Apagado ]
A2: Establecer variable [ Nombre:%close_pause_char A:p> Calcular:Apagado Añadir:Apagado ]
<Enter your text, combine open and close pause chars above to insert wherever you want a pause>
A3: Establecer variable [ Nombre:%text A:Hello, welcome to Tasker. <p> I will take a moment to pause here before continuing. <p> <p> Tasker is very powerful. <p> You will enjoy it. Calcular:Apagado Añadir:Apagado ]
<Set the basic pause time>
A4: Establecer variable [ Nombre:%pause_time A:300 Calcular:Apagado Añadir:Apagado ]
<BEGIN>
A5: Separar variable [ Nombre:%text Separador:%open_pause_char Eliminar base:Apagado ]
A6: Establecer variable [ Nombre:%regex A:^%close_pause_char Calcular:Apagado Añadir:Apagado ]
A7: For [ Variable:%saythis Ítems:%text() ]
A8: Si (if) [ %saythis ~R %regex ]
A9: Esperar [ MS:%pause_time Segundos:0 Minutos:0 Horas:0 Días:0 ]
A10: Separar variable [ Nombre:%saythis Separador:%close_pause_char Eliminar base:Apagado ]
A11: Decir [ Texto:%saythis(2) Motor: Voz:com.ivona.tts:eng-USA Stream:3 Tono:7 Velocidad:5 Respetar Foco Audio:Encendido Red:Apagado Continuar tarea inmediatamente:Apagado ]
A12: Else
A13: Decir [ Texto:%saythis Motor: Voz:com.ivona.tts:eng-USA Stream:3 Tono:7 Velocidad:5 Respetar Foco Audio:Encendido Red:Apagado Continuar tarea inmediatamente:Apagado ]
A14: Fin si (End if)
A15: End For
A16: Detener [ Con error:Apagado Tarea: ]NOTA: ésta tarea sería una buena implementación a 'Sintetizar texto a voz sin complicaciones (e interactivo) (http://www.htcmania.com/showthread.php?t=1227548)'

---------------------------------------------------------

Disponen del archivo XML al final de éste primer hilo por si desean agregarlo al dispositivo más fácilmente.

leromaro
09/09/16, 20:11:02
Hola: los archivos los descargo, pero no puedo descomprimirlos, ni este ni el del otro post, alguien más lo ha intentado.

Gracias

SmartPhoneLover
09/09/16, 21:03:15
Hola, yo los archivos los comprimo con ésta (https://play.google.com/store/apps/details?id=com.rarlab.rar&hl=es) app:

https://www.imagensn.com/images/2016/09/09/Screenshot_2016-09-09-21-00-12.md.png


De todos modos subo una segundo versión de los archivos comprimida con WinRAR (PC)

WillyWeb
10/09/16, 18:24:49
Una de las primeras cosas que comentan en la web de referencia del proyecto es que la mayoría de sistemas TTS ya hacen pausas, más o menos coherentes, con los principales signos de puntuación ... ¿para qué esta tarea?

Este proyecto permite crear pausas personalizadas en sitios en los que normalmente el motor TTS no las haría. La ventaja está clara; pronunciación a tu gusto. El inconveniente; tienes que editar el texto para añadir las marcas <p> en los sitios adecuados.

La tarea no hace más que analizar el texto y trocearlo por la marca <p> metiendo el resultado del troceado en un array. Luego se recorre el array pronuncia cada elemento y haciendo una pausa personalizable tras cada uno. Un sistema muy simple implementado de una forma un poco "farragosa". Creo que se podría hacer lo mismo de forma un poco más sencilla.

Si sólo se trata de "mejorar" las pausas que ya hace el motor TTS se puede mirar si existen ajustes para ello en sus opciones de configuración.

Si no se puede arreglar vía ajustes se podría hacer una sustitución de los signos de puntuación originales por otros que hagan las pausas de la duración que más nos agrade. Si una coma no es suficiente se podría sustituir por un punto, o mejor todavía por más de una coma. Es cuestión de hacer unas pocas pruebas para determinar la pausa justa para cada signo. Una subtarea a la que se le pase un texto y que haga esas sustituciones no debería tener más de media docena de acciones.

Como siempre las posibilidades existen y son muchas, pero antes de nada se tiene que definir el problema y el objetivo.

-¿Quieres pausas personalizadas o un ajuste automático de las que tenga el texto?
-¿Tu motor TTS hace pausas en los signos de puntuación?
-¿Tienes ajustes para controlar esas pausas?

Una cosa más: en la web de referencia dan varias aplicaciones a esta tarea, como leer los SMS, un evento que es fácil de controlar vía Tasker. Me parece más versátil tu propuesta de usar el portapapeles (%CLIP).

SmartPhoneLover
10/09/16, 19:37:33
Si tienes razón, no es en absoluto útil esa tarea. No me di cuenta.
Tampoco sirve la del otro tema verdad? ('Sintetizar texto a voz sin complicaciones (e interactivo) (http://www.htcmania.com/showthread.php?t=1227548)')

No pensé en lo que hacía, solo quería aportar y ayudar, y bueno intentar mejorar el mio a ver si se puede. ;) [:palomitas::palomitas::palomitas::palomitas:]

WillyWeb
10/09/16, 19:51:37
Yo no diría (no lo he dicho) que esta tarea o la otra no valen para nada :oh:

La verdad es que ambas combinan perfectamente. Con la otra controlas cuándo quieres sintetizar un texto y con esta ajustas las pausas de la pronunciación a tu gusto.

Si el motor TTS de tu dispositivo tiene ajustes para esas pausas te puedes ahorrar esta tarea. Si no las tiene, debes responder esta pregunta...

-¿Tu motor TTS hace pausas en los signos de puntuación?

Si la respuesta es sí la solución para modificar la duración de esas pausas debería ser sencilla haciendo unas pocas sustituciones.

Caravantes
10/09/16, 23:12:13
-¿Tu motor TTS hace pausas en los signos de puntuación?

Me quedé un poco sorprendido cuando Lover publicó el primer post. Uso mucho el motor de voz de Google/Android y creo que hace pausas bastante adecuadas en las comas y en los puntos. Jamás hubiera imaginado que a alguien se pudiera sentir incómodo porque esas pausas le parezcan demasiado cortas; quizá pase con otro motor de voz, o quizá sea alguien que tiene un oído más sensible/exigente que el mío.

El motor de voz de Google tiene muchas cosas que mejorar. Por ejemplo, hablando de pausas, creo que hace la misma pausa para un cambio de párrafo o para un cambio de capítulo, cuando la segunda debería ser mayor. Pero ese tema de las pausas me parece un problema mucho menor que muchos otros, como el siguiente: el texto "Capítulo X" lo lee diciendo "Capítulo equis", lo cual me parece muy poco acertado.

¿Es posible hacer una tarea Tasker que corrija algunos de estos fallos? Claro que sí, aunque opino que pocas veces merecerá la pena, seguramente sea como matar moscas a cañonazos. Cuando camino por la calle suelo llevar encendida mi app de leer libros epub en versión "audio". En esa situación me parece bastante absurdo tener que pararme cada poco para copiar al portapapeles los párrafos siguientes. Quizá haya otras situaciones o personas a las que sí les compense.

Pero el tema si tiene cierto interés en este foro de Tasker, para aprender y para ejercitarse en la búsqueda de soluciones óptimas. Creo que el primer post del hilo iba un poco en esta dirección.

En este sentido, me parecen muy acertados los comentarios de Willy: analizar bien el problema, ver si hay una forma sencilla de resolverlo sin implicar a Tasker, o utilizar trucos como cambiar la puntuación original por otra que de mejores resultados cuando el texto se entregue al motor de voz.

Ximo_GPEG
11/09/16, 15:55:47
A mi me gustaba mucho el motor de voz ivona, pero ya no es compatible con marshmallow