logo
¿Y esto, qué es?
Un sitio singular con contenido plural (o viceversa) perdido en la maraña informe
Foto

Escríbeme

Subscríbete Subscripción

Archivo temático:

Arqueosidades:
Reinterpretaciones / Dispersión / Historias / Mapas
Lectopiniones:
Ciencia / Cineratura / Politiquerías / El resto
Informaticosas:
Libertad / Figuraciones / Programas / Autorías
Fotoenfoques:
Personales / Ajenos / Transiciones / Dibujos
Musicotropías:
Personales / Inusuales
Aconteceres:
De bitácora / En la vía / Maquinales

Búsqueda:

Páginas conexas:
Primeras panorámicas
Segundas panorámicas
Más galerías
Mis fotos en JPGMag
Escritos sueltos y breves
¿Por qué?

Lo más leído (o visto):

Estoy suscrito a:
Andreína/ Anfrix/ Argonáuticas/ Ars Secreta/ Atalaya/ BBCMundo/ BibliOdyssey/ Cabinet of Wonders/ Caja virtual/ Cartographic Perspectives/ Cesarius Revolutions/ Current Epigraphy/ De lo conocido a lo desconocido/ De viaje a Ítaca/ Debian Package of the Day/ Debian System Administration/ Días del futuro pasado/ El Blog de Jotace/ El subrayado es nuestro/ En colas/ FAU70's/ Ficción Caracas/ Fotolibre/ Genbeta/ Gentehistoria/ GoogleEarth es/ Hay que estar vivo pa' ver vainas/ Horothesia/ Inkscape/ Invira: publicadas/ Javier Miranda-Luque/ JGGweb/ JorgeLetralia/ JPG Magazine/ La bombilla/ La brújula verde/ La muchacha dorada/ La patata de la libertad/ LaEncrucijada.Info/ Las palabras de la tribu/ Le français ne vient pas du latin/ Linux and Open Source Blog/ Lo que nunca nos contaron/ Los sueños de la razón/ Malaprensa/ Menéame/ Ogle Earth/ Paleo-Future/ Parte Pagana/ Pedro Callealta/ Planet Debian/ Planet Drupal/ Planet KDE/ Pocas Palabras/ Pulga de libertad/ Reflexiones Diarias/ Ricardo Galli/ Roberto Echeto/ RomRod/ Saudi Aramco World/ Science Blog -/ Slashdot/ Strange maps/ TecnoMaps.com/ Terrae Antiqvae/ The Boat Lullabies/ The Daily Grail/ The Stoa Consortium/ Tradición Clásica/ Unofficial Blosxom/ Using Google Earth/ What's New in Papyrology/ xkcd.com/
Viernes, 14 Julio 2006

Texto a voz, casi automático (o proceso para recitar un libro)

Ahora que he hecho el proceso completo al menos una vez, creo estar en condiciones de echar el cuento de cómo producir un audiolibro en GNU/Debian(testing)/Linux. Se supone que disponemos de un libro -o cualquier otro texto- en formato PDF, al final se obtiene un cierto número de archivos mp3 u ogg que pueden escucharse en la computadora o en un tocador portátil de esos formatos.

Los programas requeridos -aparte de las herramientas normales del terminal- son: festival (incluye text2wave y voz en español), pdftotext o ps2text, lame para producir MP3.

Primero, hay que convertir el archivo PDF a texto y el problema puede estar en la codificación del texto. En esta máquina la codificación predeterminada es iso-8859-1 o Latin1. También puede pasar que la conversión no se pueda realizar porque el conversor no "conoce" la codificación. En ese caso, hay que agregar la línea textEncoding Latin1 en el archivo de configuración de xpdf, en debian está en: /etc/xpdf/xpdfrc. Así que hay dos opciones:

Después de probar ambas, me quedo con la última. ps2text hace un mejor trabajo de conversión del texto a Latin1 (de hecho es lo que hace de forma predeterminada), elimina caracteres ocultos y deja el texto más limpio (por ejemplo, convierte los guiones largos en ---). Este proceso tarda unos pocos segundos.

Pero el conversor de texto a voz comete actualmente algunos errores intolerables, como no entender los signos ¿ (pronuncia "equis" y deletrea la palabra que sigue). Así que hay que pulir el texto, esto es, corregir la ortografía (los acentos y demás detalles son importantes para la pronuciación correcta) y eliminar los caracteres no pronunciables o que causan esos errores en el robot-lector, en el caso que nos ocupa ¿ ¡ - y similares. Para ello se puede hacer un pequeño libreto (script) con sed, como líneas como esta: sed -i -e 's/¿/ /g' archivo.txt. Una vez pulido el texto, ya se puede enviar al lector, pero el resultado sería un solo archivo excesivamente largo si se trata de un libro (unas 300 páginas pueden llevar a 200 megabytes de archivo de sonido y eso en un formato comprimido). Así que es preferible 'picar' o dividir el texto original en trozos para que sea más sencillo detener al lector y llegar a un punto dado.

Para dividir el archivo ya corregido en pedazos de (por ejemplo) 300 líneas: split -l 300 -d archivo.txt prefijo. El 'prefijo' es el nombre que tendrán los archivos divididos seguidos de un número secuencial, por lo tanto esa orden crea una serie de archivos con nombre prefijo01, prefijo02, etc. Si text2wave se confunde con los nombres de los archivos, se les puede agregar la extensión .txt de forma automática así: rename 's/$/\.txt/' prefijo*

Hasta aquí, no se ha producido ningún sonido, aparte del típico repiqueteo del teclado. Ahora hay que ordenarle a text2wave que vaya leyendo cada uno de los archivos text2wave prefijo04.txt -o archivodesonido04.wav. Pero, puede pasar -así fue en este caso- que el lector predeterminado no sea el que queremos. Para hacer que la voz elegida por text2wave para leer sea la que realmente se desea hay que modificar -o crear, si no existe- un archivo llamado .festivalrc y colocar esta línea: (set! voice_default 'voice_el_diphone): la voz "el_diphone" que corresponde a un lector español será la que haga el trabajo; de otro modo muy bien puede suceder que el lector sea un gringo y la lectura será consecuentemente errada.

Además, es preferible hacer de una vez la conversión a un formato portátil, sea MP3 u Ogg, de una de estas formas: Ya que pueden resultar muchos archivos (entre 10 y 100, dependiendo de la longitud que hayamos decidido poner como norma) es mejor hacer un libreto o script, algo como: cuenta=1 for i in `ls prefijo*` do text2wave $i | lame - prefijo${cuenta}.mp3 cuenta=`expr $cuenta + 1` done Lo que queda es esperar un rato; según mi cuenta, aproximadamente una décima parte del tiempo de lectura real. Es decir, si la lectura del libro completo dura unas 30 horas, el proceso de conversión de texto a voz tardará unas tres; de hecho algo menos, dependerá de la velocidad de la máquina y demás detalles.

[ haga un comentario, ( 6 ) ]   [ otras notas similares ]

 231