Los Scripts para usar el reconocimiento de voz con asterisk los pueden conseguir aqui: http://zaf.github.com/asterisk-speech-recog/
Primero inicializamos las salidas(en este caso 4 y 17):
# echo "4" > /sys/class/gpio/export # echo "out" > /sys/class/gpio/gpio4/direction # echo "17" > /sys/class/gpio/export # echo "out" > /sys/class/gpio/gpio17/direction
El dialplan Utilizado para esta prueba es el siguiente:
exten => *53,1,Answer() same => n,Playback(ordene) same => n(record),agi(speech-recog.agi,es-Es) same => n,GotoIf($[$["${status}" = "0"] & $["${confidence}" > "0.5"]]?success:retry) same => n(success),AGI(on-off.agi,${utterance}) same => n,Hangup() same => n(retry),agi(googletts.agi,"Lo siento, Repita la Orden",es) same => n,goto(record)
El script de PHP:
#!/usr/bin/php -q <?php set_time_limit(30); require('phpagi/phpagi.php'); $arg=$argv[1]; $agi = new AGI(); // mostramos la cadena que estamos recibiendo Verbose("Arg: $arg"); //Separamos la cadena para saber que accion tomar $vars=explode(" ",$arg); //Evaluamos la orden switch($vars[0]){ // En caso de encender verificamos que led case 'encender': if ( $vars[1] == 'led'){ if ( $vars[2] == '1'){ exec("echo 1 > /sys/class/gpio/gpio4/value"); }elseif ( $vars[2] == '2'){ exec("echo 1 > /sys/class/gpio/gpio17/value"); } } break; //En caso de apagar verificamos que led case 'apagar': if ( $vars[1] == 'led'){ if ( $vars[2] == '1'){ exec("echo 0 > /sys/class/gpio/gpio4/value"); }elseif ( $vars[2] == '2'){ exec("echo 0 > /sys/class/gpio/gpio17/value"); } } break; } //Colgamos la llamada $agi->Hangup(); ?>
Entonces para encender un LED hay que marcar desde un telefono *53, esperar al "beep" y enviar la orden. Este es el video de el resultado: