Continuando con el proyecto JARVIS de transformación de texto a voz, os paso el código fuente de un ShellScript para Linux en el que se han introducido algunos modificadores para ofrecer una salida por consola en diferentes colores. De este modo, conseguiremos diferenciar mejor qué es texto del propio software y cuál es el que ha sido introducido por el usuario para ser emitido posteriormente en formato sonoro.
Adicionalmente, para acelerar y simplificar la interacción con el script se ha incluido un pequeño menú con las funciones más básicas de respuesta, pregunta y emisión de mensajes.
#!/bin/bash
function colorea()
{
#La siguiente línea colorea el texto a emitir
#pasado como parámetro
echo -e '\E[37;44m'"\033[1m$1\033[0m"
#El color es texto blanco sobre fondo azul
}
function texto()
{
#La siguiente línea colorea el texto
#pasado como parámetro
echo -e '\E[37;45m'"\033[1m$1\033[0m"
#El color es texto blanco sobre fondo morado
}
function menu()
{
clear
echo "*************************"
echo "* ¿QUÉ QUIERES DECIR? *"
echo "*************************"
echo " 1 - Sí "
echo " 2 - No "
echo " 3 - No lo sé "
echo " 4 - Tengo una duda "
echo " 5 - Quiero responder "
echo " 6 - Quiero decir algo..."
echo " x - Salir"
}
function habla()
{
echo
colorea "$1"
echo "$1" | iconv -f utf-8 -t iso-8859-1 | festival --tts
}
function duda()
{
clear
texto "Introduce tu PREGUNTA, cuando pulses INTRO se emitirá: "
read pregunta
habla "Mi pregunta es: $pregunta"
habla "Vuelvo a repetirla"
habla "$pregunta"
}
function respuesta()
{
clear
texto "Introduce tu REPUESTA, cuando pulses INTRO se emitirá: "
read respuesta
habla "Mi respuesta es: $respuesta"
habla "repito"
habla "$respuesta"
}
function deciralgo()
{
clear
texto "Introduce tu MENSAJE: "
read mensaje
habla "Tengo algo que decir:"
habla "$mensaje"
habla "Lo repetiré una vez más"
habla "$mensaje"
}
clear
iniciosonido="Sintetizador activado y en espera. pulsa x para terminar"
habla "$iniciosonido"
echo
opcion=""
while [ "$opcion" != "x" ]
do
menu
read -p "Indica qué quieres decir: " opcion
case $opcion in
1)colorea "Sí";habla "Sí";;
2)colorea "No";habla "No";;
3)colorea "No lo sé";habla "No lo sé";;
4)duda;;
5)respuesta;;
6)deciralgo;;
x)echo "Sintetizador detenido"; echo "Sintetizador detenido" | iconv -f utf-8 -t iso-8859-1 | festival --tts;;
*)echo "Opción no válida, vuelve a intentarlo";;
esac
done
No hay comentarios:
Publicar un comentario