Распознавание речи используя Google Speech API

Написано: понедельник, 8 июля 2013 г. автор Максим Ярлыки:

Здравствуйте дорогой читатель моего блога!
Если вы читаете этот пост, то вы несомненно заинтересованны в такой потрясающей вещице как  Google Speech API. Собственно как это работает?




    План:


  1. Записать звуковой файл с частотой  от 8000 до 16000 Гц в формате Flac.
  2. Отправить Googl'у звуковой файл.
  3. Получить ответ вида:
  4. {"status":0,"id":"37h03bf4efe17fa76594732d6dokf3-1","hypotheses":[{"utterance":"привет мир","confidence":0.75936891}]}
  5. 0.75936891 - качество распознанного текста, если оно больше 0.5.. то вы получили достоверный ответ.
  6. Вывод распознанного текста.
Приступим:
  • Для записи flac файла с нужной частотой  воспользуемся Rex.exe
      Старт записи:
shell_exec('rec.exe -q -c 1 -r 16000 record.flac');
      Остановка: (как вариант убить процесс)
shell_exec("TASKKILL /F /IM rec.exe");
       
        А теперь 'мозг'-главный механизм нашего распознования.
$file = file_get_contents(getFileName("Путь до flac файла"));
$socket = fsockopen('www.google.com', 80, $errno, $errstr, 30);
fwrite($socket, "POST /speech-api/v1/recognize?xjerr=1&client=chromium&lang=ru-RU HTTP/1.1\r\n");
fwrite($socket, "Host: www.google.com\r\n");
fwrite($socket,"Content-Type: audio/x-flac; rate=16000\r\n");
fwrite($socket,"Content-length:".strlen($file)."\r\n");
fwrite($socket,"Connection:Close\r\n");
fwrite($socket,"\r\n");
fwrite($socket,"$file\r\n");
fwrite($socket,"\r\n");
for ($i = 1; $i <= 13; $i++)
{
        $s = fgets($socket,512);
        $r[] = $s;
}
$res = json_decode($r[12])->hypotheses[0]->utterance;
$res= iconv("utf-8", "windows-1251", $res); 
echo $res;





Копирование материала только при указании ссылки на ресурс 

1 коммент. :

  1. Анонимный пишет:

    Спасибо за ценную информацию!
    Не подскажите, сколько примерно минут аудио может быть в одном файле: 1, 5, 10 мин? Есть ли ограничения на объем файла и к-во запросов?