sábado, 21 de junio de 2014

Texto a voz desde a terminal de linux

Script: texto a voz (Google) desde el terminal

El día de hoy comparto con Uds. un script muy útil para convertir un texto a voz utilizando el motor de voz de Google. La ventaja principal de este script es que “evade” el límite de 100 bytes impuesto por Google. En realidad, para ser honestos, respeta este límite pero envía todas las líneas en forma automática con lo cual dicha limitación pasa desapercibida para el usuario. Los más exigentes notarán, no obstante, que la conversión no es de la misma calidad que la que podemos obtener en Google Translate, principalmente debido a este límite y que no es posible pasar el texto entero de un sólo golpe. Como punto positivo, cabe agregar que este script también permite especificar el idioma del texto a convertir.
Hecha la aclaración, veamos cuáles son los pasos a seguir.

Pasos a seguir

1.- Crear un archivo con el nombre t2s.sh.
2.- Copiar el siguiente contenido:

#!/bin/bash

#################################
# Speech Script by Dan Fountain #
# Modified by Pablo Castagnino  #
# TalkToDanF@gmail.com          #
#################################

INPUT=$*
STRINGNUM=0

ary=(${INPUT:2})
echo "---------------------------"
echo "Speech Script by Dan Fountain"
echo "TalkToDanF@gmail.com"
echo "---------------------------"
for key in "${!ary[@]}"
do
SHORTTMP[$STRINGNUM]="${SHORTTMP[$STRINGNUM]} ${ary[$key]}"
LENGTH=$(echo ${#SHORTTMP[$STRINGNUM]})
#echo "word:$key, ${ary[$key]}"
#echo "adding to: $STRINGNUM"
if [[ "$LENGTH" -lt "100" ]]; then
#echo starting new line
SHORT[$STRINGNUM]=${SHORTTMP[$STRINGNUM]}
else
STRINGNUM=$(($STRINGNUM+1))
SHORTTMP[$STRINGNUM]="${ary[$key]}"
SHORT[$STRINGNUM]="${ary[$key]}"
fi
done

for key in "${!SHORT[@]}"
do
#echo "line: $key is: ${SHORT[$key]}"

echo "Playing line: $(($key+1)) of $(($STRINGNUM+1))"
mpg123 -q "http://translate.google.com/translate_tts?tl=${1}&q=${SHORT[$key]}"
done
3.- Otorgar permisos de ejecución al script:
sudo chmod +x t2s.sh
4.- Ejecutar el script pasando como parámetros: a) el código del idioma correspondiente al texto, b) el texto que se desea convertir. Por ejemplo:
./t2s.sh es Este es un texto muy interesante para convertir.
Consejo: algunos emuladores de terminal permiten pegar texto con sólo arrastrarlo. O sea que es posible seleccionar un texto en Firefox y arrastrarlo al terminal.
Eso es todo, espero que lo disfruten.

No hay comentarios:

Publicar un comentario