jueves, 26 de mayo de 2016

Sacando partido a los audio-libros

En ocasiones llevamos a cavo tareas que nos interrumpen la rutina diaria y de la cual no es fácil sacar partido, como por ejemplo, pasear al perro, ir en bus, caminar por la calle, limpiar la casa, etc.
Hay en muchos de esos momentos en los cuales me gusta escuchar música, pero no siempre es así, así que busque la forma de sacarles más partido. Es ahí cuando descubrí los audio-libros.
En si mismo no hay nada geek en ello, así que me gustaría compartir mi pequeña experiencia.

Seguro que ya hay muchos (ojalá) que estarán diciendo: "No es lo mismo, es mil veces mejor leer un libro que escucharlo". Y a todos los que piensen así tengo que darles la razón. No obstante, si te gusta la lectura, seguro que tienes un gran número de títulos en tu lista de espera y esa lista no hace más que crecer y crecer. Bien, pues es aquí donde puedes ir dando salida a todos esos títulos que quieres leer pero que no consideras tan buenos como para acaparar tu tiempo.

No resulta sencillo encontrar audio-libros o muy posiblemente no estén los que a uno le gustaría escuchar, así que yo he recurrido directamente a la opción del TTS (Text To Speech) o dicho de otra forma, al sintetizador de voz.

Esta es la corta lista de herramientas que uso, pueden servir otras, pero esta es la combinación que yo uso:
  • Teléfono Android.
  • Moon+ Reader Pro (5.29€).
  • Ivona TTS.

Moon+ Reader Pro.


De Android no hablaré, así que salto directamente al Moon+ Reader. Es una aplicación un poco cara, pero en ocasiones le ponen buenos descuentos que hace que merezca mucho la pena. No se caracteriza por permitir grandes opciones de anotación, pero soporta un grandioso número de formatos además de complementarse muy bien con el TTS. De hecho, este es el principal motivo por el cual uso esta app y no otra.
El primer problema con el que te encuentras al escuchar un libro, es la velocidad a la que el TTS lo lee. Esto en Moon+ Reader no es un problema, ya que deja regular la velocidad a la cual se lee el texto. Muy útil cuando ya te has acostumbrado y prefieres agilizar la lectura.

Yo uso una velocidad entre 10-14.


Otro problema que ocurre, al menos con Ivona, es que hay palabras que no las lee bien, como por ejemplo "cajones", "cojones", "usa", etc. Al parecer esto es dado a un problema con el diccionario interno que tiene, y palabras como "Jones" o "USA" las lee como "Yons" o "U.S.A.", de esta forma queda raro al escuchar "cayons" o "coyons". Pero hay una forma de solucionarlo.
En las opciones del TTS (Menu -> Misceláneo -> Opciones TTS -> (flecha abajo) -> FILTRO CARACTERES TTS) se puede remplazar algunas palabras por otras. De esta forma yo he añadido:

jones -> jonehs
usa   -> uhsa

Si sabes manejar expresioens regulares podras sacar mucho más partido.


Este truco y otros parecidos vale para muchas otras palabras o letras (como por ejemplo "ö") que harán más natural la lectura conforme añadamos excepciones.
También puede ser muy útil para eliminar los molestos pie de página o numeración de las páginas (para este último caso mejor usar expresiones regulares).

Otro problema adicional de los audio-libros es que cuando hay una imagen en el documento, el TTS salta esta y no nos enteramos de que estaba ahí. Por suerte las imágenes que yo me he topado en los libros que he escuchado esta imagen va representada por un carácter muy particular (U+FFFC), que nuevamente podemos capturar con el filtro de caracteres TTS.
Para localizar este carácter yo lo que hice fue: Buscar una imagen cualquiera (una portada de un libro por ejemplo) seleccionarla y copiarla. Después el el filtro de caracteres TTS añado la entrada:
? -> Atención: Imagen en el documento.

De esta forma cada vez que escucho eso, se que puedo parar la lectura (con el manos libres de los auriculares) y ver de que imagen se trata.


Ivona TTS.


El que no conozca este sintetizador, tengo que decir que es el más natural de entre los que conozco, mucho más que por ejemplo que el trae Android por defecto. Además es gratuito para la versión Android descargable desde el play.
No obstante tiene un grandioso "pero". Su instalación.
No es que sea una instalación complicada, sino que desde hace algún tiempo han añadido en Google Play restricciones de dispositivo y de zona que hacen su instalación casi imposible.
Este sintetizador necesita de 2 aplicaciones:

LINK MOTOR:    https://play.google.com/store/apps/details?id=com.ivona.tts

La primera es el motor. Esta APP cuenta con una restricción de versión que si tienes Android superior a 4.4.4 (creo que esta es la última soportada) no puedes instalarla, dando un mensaje de "Tu dispositivo no es compatible con esta versión". Esto no es cierto, por lo menos al 100% ya que yo la tengo instalada y no tengo ningún problema.

Esto es lo que aparece en Android 6.


Si contamos con un teléfono 4.4.4 o anterior y una aplicación del tipo Titanium Backup, podemos migrarla del terminal viejo al nuevo, sino hay otra opción más simple (pero menos segura) que es buscarla en un market alternativo. Mucho ojo con esta última opción que puede ser un coladero de virus. Yo en "Apk mirror" la he buscado y está la última versión a día de hoy (pero no la he probado).

La siguiente aplicación a instalar es la voz, en mi caso Conchita (voz españolo de España).
Esta APP también cuenta con otra restricción, pero esta vez del tipo zona. Esta restricción es a mi modo de ver mucho peor, ya que si no sabes que está y como llegar a ella, es como si no existiera en el Google Play. En este caso la solución es mucho más sencilla, solo hay que navegar con un proxy y localizar la URL, pero no es necesario que lo hagáis, ya os facilito yo la URL:

Desde ese enlace del Play ya tendrías que poder instalarla sin problemas. De no ser así, la instalación se puede complicar, pero no tiene por que ser imposible (nada es imposible).

Como ves puede ser un poco tediosa la instalación, pero os garantizo que el esfuerzo merece la pena, tanto como para escribir un post. Yo uso este sistema para leer libros, pero puede valer para otras cosas, como leer noticias, páginas web, mensajes de WhatsApp, correos electrónicos, repasar anotaciones personales y mil usos más, pero eso ya será para otra entrada.

Espero que lo disfrutéis.
Un saludo erráticos.

13 comentarios:

  1. Muchas gracias. Aparte de los filtros que pones añado: :>. y ;>. para que haga pausa. Me gustaría que me respondieras a estas dudas:
    1 ¿Podrías recomendarme otros filtros a parte de los que aparecen en la captura de pantalla? Comentas que hay otros.
    2 ¿Sigue siendo la voz de Conchita la más natural?
    3 ¿Moon+ Reader Pro sigue siendo el mejor programa de audio-libros?
    4 ¿Alguna otra sugerencia?

    Empecé probando TextAloud 4 y Balabolka en el ordenador pero ahora prefiero Moon porque es con el móvil y no tengo que convertir el audio a mp3.

    Gracias por adelantado :)

    ResponderEliminar
  2. Buenas José Manuel.

    Lo de los filtros es complicado, porque muchos depende de que libro esté escuchando, pero si que hay algunos que se repiten mucho.
    Por ejemplo hay libros donde el título está todo el mayúsculas pero no hay punto al final, por lo que no hace pausa y a veces no queda claro cuando hay un título.
    En estos casos uso una expresión que es:
    ^([A-Z0-9ÁÉÍÓÚ\W]+)$ -> $1

    En este caso, hay dos cosas importantes a destacar.
    1- La expresión regular:
    En este caso es una expresión que admite toda línea que empiece y termine por mayúsculas, números y/o caracteres que no sean letras o números (por ejemplo espacios o ",;[]().", etc).

    2- La etiqueta :
    Descubrí hace algún tiempo que este sintetizador de voz admite un tipo de lenguaje de marcado llamado "Speech Synthesis Markup Language" (SSML).
    Esto permite manipular más profundamente como se reproduce el sonido.
    Aquí puedes encontrar mucha más información sobre este tipo de marcado:
    http://www.w3.org/TR/voicexml20/

    Normalmente uso otras expresiones para los nombres de los personajes cuando estos no son en español. Un truco es ponerlos en el traductor de google y reproducir como suenan en el idioma original.
    Esto me fue de mucha ayuda en una ocasión en la que todos los nombres de personajes estaban en chino. Así descubrí como se pronunciaban.

    Con respecto a tus dudas dos y tres, lamento no poder ayudarte ya que pese a que uso esta forma de leer libros todos los días, no he probado otros sintetizadores o lectores.
    Considero que la vez de Ivona sigue siendo muy buena en muchos sentidos y el lector cumple con todas mis expectativas, por lo que no me he visto en la necesidad de buscar alternativas.
    Entiendo ese interés por buscar herramientas mejores, si es que las hay. Pero considero que si llegas a algo que cumple con todo lo que necesitas es mejor para.

    Para la 4, solo decirte que si dominas mínimamente el tema de las expresiones regulares, estas van muy bien para muchas cosas más, como por ejemplo quitar la numeración de las páginas, que son especialmente molestas en PDFs.
    Y lo mismo para cabeceras y pies de página.

    Y muchas gracias por tu comentario, ha sido todo un placer para mi poder contestarte. Espero que disfrutes con lo aprendido.
    Un saludo!

    ResponderEliminar
  3. Hola de nuevo, te agradecería si me respondieras a estas dudas:

    1. ¿Hay forma de evitar que pronuncie el punto en esta situación?: ?>>.

    2. Cuando el libro avisa de una nota, por ejemplo:[468]. ¿Puede evitarse que pronuncie el contenido del corchete?

    2. ¿Que aportan las versiones que van apareciendo del Moon+ Reader Pro? ¿Mejoran el motor del sístesis de voz?

    3. ¿Que versión de Ivona/Conchita tienes, la Beta?

    Gracias por adelantado, eres de mucha ayuda, no he encontrado ningún otro sitio de habla hispana que trate ese tema en tanta profundidad.

    ResponderEliminar
  4. En cuanto a la 1. y la 2a. decirte que puedes usar expresiones regulares.
    Por ejemplo para la 2a. puedes hacer una expresión del tipo:
    "\[([0-9]+)\]" -> "Ver nota $1."
    O si directamente quieres que no diga nada lo dejas en blanco.
    Para el punto 1. seria algo así:
    "\?>>\." -> "."

    Con respecto a la 2b. yo creo que no aportan nada al motor del TTS más allá de los filtros. Por un lado es está la APP y por otro el TTS. Son cosas separadas y distintas. Si quieres saber que aportan las versiones nuevas yo iría prestando atención al changelog de la APP. Yo no lo sigo.

    Y el punto 3. Pues la v1.6.23.422 que la catalogan como Beta.
    Hay que recordar que esta app está abandonada ya que la empresa la compró Amazon, por lo que no veras versiones nuevas. Aun así es la voz más natural que he conseguido encontrar.

    ResponderEliminar
  5. Hola de nuevo.

    En filtros de caracteres TTS en la primera columna puse "\[([0-9]+)\]" (para - le puse el signo 'menos') y en su correspondiente segunda colunma la dejé en blanco pero me sigue pronunciando los números dentro de los conchetes.

    La versión para android tienes la misma que tengo pero para windows si tengo versiones posteriores, tengo la IVONA 2 v1.6.63. En Android no sé porque no hay versiones más actualizadas :(

    Gracias por anticipado.

    ResponderEliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. Perdona si soy pesado, quería saber si notas diferencia dentro de 'IVONA Text-to-Speech HQ' entre seleccionar idioma 'español (España)' y 'utlizar el idioma del sistema'.

    ResponderEliminar
  8. Hola.Tengo problema con MoonReader e Ivona pues no logro que lea correctamente los números romanos. Voy a Filtro tts y escribo I-primero II-segundo III-tercero, etc y I lo lee correctamente "primero", pero después segundo lo lee cómo "primero primero" y III cómo "primero primero primero", lo peor es que por ejemplo Inglaterra lo lee cómo "primeronglaterra". Ojalá que me puedas ayudar. Gracias

    ResponderEliminar
    Respuestas
    1. Buenas Efrain.
      El tema de los números romanos es peliagudo, porque como bien has notado, son reemplazos muy cortos y dan problemas con otras expresiones.

      El primer consejo que te puedo dar, es que tengas cuidado con la ordenación de las reglas, es decir.
      No es lo mismo esto:
      'I' -> 'Primero'.
      'II' -> 'Segundo'.

      Que esto:
      'II' -> 'Segundo'.
      'I' -> 'Primero'.

      El segundo consejo que te puedo dar, es que trates de ampliar la expresión regular para evitar colisiones con otras palabras.
      Por ejemplo, si sabes que los números romanos siempre van seguidos de espacios, o van a principio de línea, o al final, o entre guiones, etc. Trata de sacar ventaja de eso.
      Por ejemplo:
      '(^|\W)I(\W|$)' -> '$1Primero$2'

      Esto detectará todo lo que empiece por:
      ó + I + ó

      Es decir cosas como "Inglaterra" no las remplazará porque hay una letra 'n' después de la 'I'.
      Como hemos ampliado la expresión para evitar capturar palabras no deseadas, usamos los '$1' y '$2' para respetar el contenido extra capturado.

      Espero que esto te ayude, y si no es así, pásate otra vez y le damos otra vuelta.

      Eliminar
  9. Hola, ¿La voz de Conchita sigue siendo la mejor?

    Ahora estoy usando TextAloud por poder escoger las pausas de las comas, semicomas, punto y seguido, punto y aparte salto de 1 línea, punto y aparte de salto de más de 1 línea y signos que escojamos. Lo escucho con VCL por permitir variar la velocidad con pasos de +-100 y diferentes tonos de voz.

    ResponderEliminar
    Respuestas
    1. ¿La mejor? Lo desconozco.

      Sí te puedo decir que a día de hoy sigue siendo la que uso yo. Es cierto que tiene fallos, hay palabras que no lee bien (cuando colisiona con anglicismos por ejemplo) y por supuesto los problemas que hay para instalarla en Android, pero a pesar de todo me sigue gustando, me parece muy natural.

      Me suena que Mozilla está haciendo un buen trabajo con Common Voice mediante el uso de redes neuronales, pero no se bien como está el proyecto. También es cierto que prefiero voces locales que no suban contenido a cloud aunque suenen un poco peor.
      Amazon creo que también tiene algo en cuestión de voces naturales, pero no lo uso.

      Eliminar
  10. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  11. Muchas gracias por responder, escuché algo de Amazon Polly, me pareció más sintética que Conchita.

    Por si os interesa probar TextAloud dejo mi configuración básica:

    Punto y seguido 0.73 coma 0.3 semicoma 0.63 1 linea de salto 1.33 2 o más líneas de salto 4 signos : 0.63 velocidad y tono cero

    FIlterText in square brackets: No pronuncia los corchete ni su contenido, ej: [66] ACTVAR
    Filter bullet and asterisk characters at the beginning of a line “Filtrar los caracteres de viñeta y asterisco al principio de una línea. Utilice esta regla para evitar que las voces intenten pronunciar viñetas y caracteres de asterisco al principio de una línea” ACTVAR
    Pronunciar numeros romanos como números: activar

    Luego en Android instalo VLC y escojo tono Soft y velocidad 0.92

    Antes ago estos reeplazos:

    2º ^p=>€€
    3º €€€€€€=>^p^p^p
    4º €€€€=>^p
    5º €€=>
    1.2º ;=>: ;:
    ?!=>?
    2º ? —=>?;(ESPACIO)
    3º ! —=>!;(ESPACIO)
    4º . —=>.(ESPACIO)
    5º … —=>:(ESPACIO)
    6º …—=>:(ESPACIO)
    7º (ESPACIO)—=>;(ESPACIO)
    8º —(ESPACIO)=>;(ESPACIO)
    9º —…=>
    10º —=>
    11º Sustituir …=>:
    12º Eliminar ¿
    13º Eliminar ¡
    14º Elimina * "» « ()“ ”
    15º :?=>?
    16º :!=>!
    17º jones jonehs
    18º negligente=>neglijente negligencia=>neglijencia öòö=>o äâäàå=>a üùů=>u êèë=>e ì ï =>i çs Ÿ=>Y ÿ=>y š=>s ž=>z Ž=>Z Š=>S ř=>r č=>c

    Borré el otro mensaje porque no me deja modificarlo.

    ResponderEliminar