Intereting Posts
Убедитесь, что UNIQUE-строка уже существует с помощью findBy в ManyToMany, любом обходном решении или рабочем решении? Как получить массив объектов строки из моего результата в подготовленном запросе mysqli Как скопировать базу данных с одного сервера на другой сервер в PHP? улучшить качество генерируемых изображений PHP GD Выпадающее окно не должно работать в codeigniter Как я могу написать в PHP функцию, которая модифицирует массив? PHP Неустранимая ошибка: Class 'Memcached' не найден в Как передать переменную строки PHP в JS из события Onclick Запустить некоторый скрипт в mysql start Перемещение php-проекта в кодовое средство или обновление существующей структуры Перенаправить исходные файлы .gif на страницу обработчика через .htacces как включить DPRP в учетной записи Sandbox PayPal? Как использовать переменную функции в другой функции того же класса -Codeigniter настройка wampserver после установки, чтобы включить ssl Обрезаемая фатальная ошибка: объект класса mysqli_result не может быть преобразован в строку при регистрации

Подключение к CMU Sphinx с использованием PHP

Я изучаю Распознавание речи и способы, которыми это можно реализовать на веб-сайте. Я нашел много примеров использования его с 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