Я изучаю Распознавание речи и способы, которыми это можно реализовать на веб-сайте. Я нашел много примеров использования его с Python и даже с Node.js, но я хочу иметь возможность использовать PHP с этим.
Есть ли способ получить доступ к CMUSphinx на сервере Linux с помощью PHP для обработки моих входов?
благодаря
Можно сделать, но использовать звездочки в качестве механизма захвата и обработки звука. См. http://www.voip-info.org/wiki/view/Sphinx
Пример кода ниже после того, как ваш сервер настроен
function sphinx($filename='', $timeout=3000, $service_port = 1069, $address = '127.0.0.1'){ /* if a recording has not been passed in we create one */ if ($filename=="") { $filename = "/var/lib/asterisk/sounds/sphinx_".$this->request['agi_uniqueid']; $extension = "wav"; $this->stream_file('beep', 3000, 5); $this->record_file($filename, $extension, '0',$timeout); $filename=$filename.'.'.$extension; } /* Create a TCP/IP socket. */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket < 0) { return false; } $result = socket_connect($socket, $address, $service_port); if ($result < 0) { return false; } //open the file and read in data $handle = fopen($filename, "rb"); $data = fread($handle, filesize($filename)); socket_write($socket, filesize($filename)."\n"); socket_write($socket, $data); $response = socket_read($socket, 2048); socket_close($socket); unlink($filename); return $response; }
Еще одна мысль после просмотра веб-сайта заключается в том, что sphinx 4 разрешает доступ к веб-сервису для демона обработки распознавания, т. Е. Запускает sphinx в качестве демона (его java!), После чего вы можете сделать сокет, как показано выше, для подачи WAV в него напрямую в основном используя модификация вышеприведенного кода, поэтому вместо вызова сервера звездочек, чтобы извлечь, затем записать аудио, вы будете использовать что-то еще, возможно, html5 и т. д. для записи звука.
Еще одна вещь, которую следует учитывать, – это то, что хром и html5 имеют встроенное распознавание речи
Архитектура такой системы зависит от типа звука, который вы хотите обработать. Если звук длинный, вы можете просто сохранить его во временный файл и вызвать pocketsphinx_continuous в качестве внешнего инструмента для его обработки:
http://php.net/manual/en/function.shell-exec.php
Вы вызываете pocketsphinx_continuous -infile file.wav > decode-result.txt
и это дает вам результат для отображения. Проблема с этим подходом заключается в том, что инициализация декодирования требует времени, поэтому вы не сможете использовать этот подход для коротких файлов.
Если вы хотите обработать короткие образцы или хотите обрабатывать аудио в потоковом режиме, вам нужен какой-то сервер для загрузки моделей и ожидания запросов. Существуют различные варианты того, как реализовать его с простого ручного сервера, прослушивающего TCP-порт, с помощью простого протокола и принятия данных для более сложных решений, таких как http://unimrcp.org