скрипт php-agi.
#!/usr/bin/php -q
)
<?php
#Требуется пакет SOX
#Пример вызова из dialplan
#;Voice Module
#exten ⇒ _504,1,Answer
#exten ⇒ _504,n,Record(/tmp/${UNIQUEID}.wav,3,20);
#exten ⇒ _504,n,AGI(yandex-voice2.php,/tmp/${UNIQUEID});
#exten ⇒ _504,n,NoOp(${TEXT});
#exten ⇒ _504,n,Hangup
#получаем переменные из AGI
$agivars = array();
while (!feof(STDIN)){
$agivar = trim(fgets(STDIN));
if ($agivar ===
break;\\
$agivar = explode(':', $agivar); \\ $agivars[$agivar[0]] = trim($agivar[1]);\\
}
extract($agivars);
$filename = $_SERVER["argv"][1];
$key = '6be78e3c-6184-4f83-b18d-cf33c6727735';
$topic = «freeform»;
$lang = «ru-RU»;
$randtoken=rand(1000);
$uuid=md5($randtoken);
system('sox '.$filename.'.wav -r 16000 -b 16 -c 1 '.$filename.'-pcm.wav');
$cmd = exec('curl -F «Content-Type=audio/x-pcm;bit=16;rate=16000» -F «audio=@'.$filename.'-pcm.wav» asr.yandex.net/asr_xml\?key='.$key.'\&uuid='.$uuid .'\&topic='.$topic.'\&lang='.$lang, $xml);
$resxml = implode($xml);
if (pregmatch('!<variant .?>(.)</variant>!si', $resxml, $arr)) $voicetext = $arr[1];
else $voice_text='';\\
#передаём ответ от скрипта в поток ввода
echo 'SET VARIABLE TEXT «'.$voicetext.'»'.«\n»;
fgets(STDIN);
echo 'VERBOSE («'.$voicetext.'»)'.«\n»;
fgets(STDIN);
exit(0);
?>
''