domingo, 12 de abril de 2015

¿Sienten algo los androides cuando ven pasar a una oveja eléctrica?

Qué encontrarás en esta entrada?
  • Cómo simular emociones en tu ordenador.

Esta entrada no pretende revolucionar el panorama actual en lo que a inteligencia artificial se refiere (por si queda alguna duda al finalizar la lectura de la misma), sino que se trata de un sencillo script realizado como divertimento para jugar un poco con eSpeak.

Ya hemos hablado alguna vez de eSpeak, incluso os he enseñado algún ejemplo divertido en el pasado, cuando os presenté a mi novia virtual. En este caso, el "juego" consiste básicamente en generar un pequeño script que tome como entrada la luz que le llega a una webcam, y como salida simule una respuesta emocional en consecuencia.

Para obtener la entrada, la idea es tomar una foto (es bastante fácil utilizando Streamer desde Linux), y analizarla con Octave, por ejemplo. Con el comando "imread" de Octave, podemos convertir la imagen en un tensor de datos con el que trabajar numéricamente.

Después, en función de nuestro análisis, y con unos cuantos "if" en un script de bash, podemos definir una casuística emocional en función de la entrada que hemos definido.

El resultado es el que podéis ver en los dos siguientes vídeos:



Os dejo también el script en bash:

#!/bin/bash
i=0
while [ $i = 0 ]; do
    streamer -o LucyView.jpeg
    I=`echo "Lucy" | octave | grep "ans" | grep -o "[0-9]*"`
    if [ $I -lt 20 ] ; then
        mensaje="...Estoy muy triste..."
    else
        if [ $I -lt 40 ] ; then
            mensaje="...Estoy un poco desmotivada..."
        else
            if [ $I -lt 60 ] ; then
                mensaje="...Estoy normal..."
            else
                if [ $I -lt 80 ] ; then
                    mensaje="...Estoy bastante bien..."
                else
                    mensaje="¡Estoy eufórica!"
                fi
            fi
        fi
    fi
    s=`echo "( 2 * $I )" | bc`
    espeak -m -v es+f4 -s $s "$mensaje"
    clear
    echo "Índice: $I% => Mensaje: $mensaje."
    sleep 2
done

Y el sencillo script en Octave:

function [I]=Lucy()
%
% Leyendo imagen:
IMG=double(imread('LucyView.jpeg'));
media=mean(mean(mean(IMG)));
I=round(media/254*100);

Y esto es todo por hoy. Espero que os haya parecido interesante.

2 comentarios:

  1. Ay, ¡lo que me reí con estos vídeos! xDDDDDDDD
    Cundo dice de repente "estoy eufórica", me parto xDD

    ResponderEliminar
    Respuestas
    1. Jajajaja, es un poco bipolar mi amiga xD... pasa de la euforia a la tristeza en un chispazo :p!

      Eliminar

Querido astarothista!,

Si te ha gustado la entrada y quieres dejar constancia de ello, tienes alguna sugerencia para completarla o corregirla, quieres mostrar tu opinión respecto a algo de lo que se haya hablado en esta entrada (con respeto) o simplemente quieres dejarme un mensaje a mi o a la comunidad, no dudes en comentar ;)!

Recuerda que también estamos en Facebook y en Google+.