Раньше реализовывал, все работало без вопросов, однако с недавноего времени голос перестал распознаваться... Подскажите, если кто пользуется сервисом распознавания речи от гугла, они у вас в настоящее время работают? Может гугл что стал блокировать?
ps Скрипт voice.php:
#!/usr/bin/php -q
<?
$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];
exec('flac -f -s '.$filename.'.wav -o '.$filename.'.flac');
$file_to_upload = array('myfile'=>'@current.flac');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=ru-RU");
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: audio/x-flac; rate=16000"));
curl_setopt($ch, CURLOPT_POSTFIELDS, $file_to_upload);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
$json_array = json_decode($result, true);
$voice_cmd = $json_array["hypotheses"][0]["utterance"];
unlink($filename.'.flac');
unlink($filename.'.wav');
echo 'SET VARIABLE VOICE "'.$voice_cmd.'"'."\n";
fgets(STDIN);
echo 'VERBOSE ("'.$voice_cmd.'")'."\n";
fgets(STDIN);
exit(0);
?>
ffmpeg и flac стоят, права на festivalcache так же есть
chmod +x /var/lib/asterisk/agi-bin/* уже пробывал, не помогает...
Может еще каких прав недостаточно? Либо действительно что-то с сервисом не так....
pps Синтез текста в речь от гугла работает отл.
Копал недавно, когда у нас сломалось. Гугл закрыл APIv1, теперь есть APIv2, но нужно зарегистрироваться как Chromium Developer, получить свой ключик для доступа к API. Гугл обещает ограничить доступ к API (50 запросов в день), но по факту, по-моему, ограничения сейчас не действуют.
Как регистрироваться: http://www.chromium.org/developers/how-tos/api-keys
Вот на какую засаду я напоролся, когда переделывал на v2: https://stackoverflow.com/questions/23682441/google-speech-api-duplicates-responses (может быть, у вас все будет нормально).
Да, и там еще изменился формат json-ответа. Теперь гугл отдает несколько вариантов.
Ответ приходит в таком формате: Результат приходит в таком формате:
{"result":[{"alternative":[{"transcript":"упоротый","confidence":0.75232214},{"transcript":"упороты"},{"transcript":"упоротые"},{"transcript":"упорный"},{"transcript":"упоротая"}],"final":true}],"result_index":0}
Я его разбираю вот так:
$result=curl_exec ($ch);
$json_array = json_decode($result, true);
$voice_cmd = $json_array['result'][0]['alternative'][0]['transcript'];
В $voice_cmd получаю текст, который далее использую как надо.
вы будете удивлены, но у гугла НЕТ такого сервиса
все эти скрипты используют недокументированное api из пакета google translate. наверно гугл его поменял.
ну либо вы настроить чтото не можете. в любом случае это не по теме данного форума
рабочий скрипт есть вот тут
Задан: 2014-06-06 13:48:09 +0400
Просмотрен: 1,725 раз
Обновлен: Jun 06 '14
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Спасибо всем :) Буду ковырять
nyll ( 2014-06-06 14:31:31 +0400 )редактироватьglukinho, а можете скинуть формат новый jcon? Все настроил, запросы отправляет (видно по статистике в гугле), но ответ не могу получить... В скриптах не так силен, как хотелось бы... Я так понял, что меняется сама ссылка (сделал) и меняется что-то после $jsonarray = jsondecode($result, true); ...
nyll ( 2014-06-06 16:16:00 +0400 )редактироватьОбновил свой предыдущий ответ.
glukinho ( 2014-06-06 16:43:54 +0400 )редактироватьспасибо тебе, добрый человек! Все работает :)
nyll ( 2014-06-06 17:15:50 +0400 )редактироватьА у меня, блин, как раз перестало почему-то :(
glukinho ( 2014-06-06 17:16:36 +0400 )редактировать