@forumrulez

Бесплатный Speech Api от Google?

Здравствуйте, дело такое, нужно распознать текст средствами Google, но Google Speech сделали платным и это не подходит, попробовал выдернуть api_key из гугл переводчика, вроде получилось но возникает проблема, чтобы не отправлял всегда получаю {"result":[]}

Код нашел на просторах интернета, кто подскажет в чем дело?
<?php
// Используем cURL для формирования HTTP POST-запроса к Google API
// AIzaSyAqk7vE0vQDR3JItUPgFp6bcPqgJz8h8tI
// AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw
//AIzaSyCPYK77NqpUfWoHof_HlhnKaGZAsaMT02Q

/* Если возникает ошибка
URL error number:60
URL error:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Можно либо подсунуть найденный в просторах Интернета давно устаревший сертификат curl-ca-bundle.crt, либо просто отключить проверку
*/

/* Format *.flac
Channels : 2
Sample Rate : 44100
Precision : 32-bit
Sample Encoding: 32-bit Float
*/

$file_to_upload = array('myfile'=>'@'.'send.flac');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/speech-api/v2/recognize?output=json&lang=ru-RU&key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw&client=chromium&maxresults=6&pfilter=2');

// curl_setopt($ch, CURLOPT_CAINFO, 'd:\server\apps\curl-ca-bundle.crt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  // Отключить ошибку "SSL certificate problem, verify that the CA cert is OK"
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);  // Отключить ошибку "SSL: certificate subject name 'hostname.ru' does not match target host name '123.123.123.123'"
curl_setopt($ch, CURLOPT_POST,1);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: audio/l16; rate=16000;'));  // для wav файлов, но по слухам ни у кого не работает
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: audio/x-flac; rate=44100;'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $file_to_upload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);

// показать инфу и ошибки
print_r(curl_getinfo($ch)); 
echo '<br>URL error number:' . curl_errno($ch); 
echo '<br>URL error:' . curl_error($ch);
echo '<br>';

curl_close ($ch);

// Покачать весь ответ гугла
echo '<br>result='.$result;
echo "<br>";

// По не выясненным пока причинам, в версии V2 первый ответ всегда пустой. Берем второй.
$result_arr = split("\n", $result); $result = $result_arr[1];
// Google возвращает JSON, поэтому парсим стандартной функцией. Доступна в PHP 5.2
$json_array = json_decode($result, true);
$voice_cmd = $json_array['result'][0]['alternative'][0]['transcript'];
$confidence = $json_array['result'][0]['alternative'][0]['confidence'];
echo('<br>voice_cmd='.$voice_cmd);
echo('<br>confidence='.$confidence);

?>
  • Вопрос задан
  • 1527 просмотров
Пригласить эксперта
Ответы на вопрос 2
Xardch
@Xardch
С версии PHP 5.5.0, префикс @ устарел и файлы можно отправлять с помощью CURLFile.
php.net/manual/ru/function.curl-setopt.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы