我一直在研究语音识别以及将其实施到网站中的方法。我发现了很多关于在Python中使用它的例子,甚至还有一个使用Node.js的例子,但我希望能够使用PHP。
有什么办法可以在Linux服务器上使用PHP来处理我的输入来访问CMUSphinx吗?
由于
答案 0 :(得分:1)
可以使用星号作为音频捕获和处理引擎。见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允许Web服务访问识别处理守护程序,即:将sphinx作为守护程序运行(其java!)然后您可以执行socket打开,如上所述将.wav输入其中直接基本上使用上面代码的修改,而不是调用星号服务器来检索然后记录音频,你会使用其他可能html5等来录制音频。
另一件需要考虑的事情是chrome和html5内置语音识别
答案 1 :(得分:0)
此类系统的体系结构取决于您要处理的音频类型。如果音频很长,您可以将其存储到临时文件中并调用pocketsphinx_continuous作为外部工具来处理它:
http://php.net/manual/en/function.shell-exec.php
您致电pocketsphinx_continuous -infile file.wav > decode-result.txt
,然后会显示结果。这种方法的问题在于解码初始化需要时间,因此您无法将该方法用于短文件。
如果您想处理短样本或想要以流模式处理音频,则需要某种服务器来加载模型并等待请求。关于如何通过简单的手工服务器监听TCP端口,使用简单的协议和接受数据到更复杂的解决方案(如http://unimrcp.org