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: