
Archivo temático:
Lo más leído (o visto):
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:
pdftotext -enc Latin1 archivo.PDFpstotext -output archivo.txt archivo.pdfsed, 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.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*
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.
text2wave prefijo01.txt | lame - prefijo01.mp3text2wave prefijo01.txt | oggenc - -o prefijo01.ogg
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