使用PHP连接到CMU Sphinx

时间:2014-09-04 13:26:46

标签: php voice-recognition cmusphinx

我一直在研究语音识别以及将其实施到网站中的方法。我发现了很多关于在Python中使用它的例子,甚至还有一个使用Node.js的例子,但我希望能够使用PHP。

有什么办法可以在Linux服务器上使用PHP来处理我的输入来访问CMUSphinx吗?

由于

2 个答案:

答案 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