首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP连接到CMU狮身人面像

使用PHP连接到CMU狮身人面像
EN

Stack Overflow用户
提问于 2014-09-04 13:26:46
回答 2查看 3K关注 0票数 3

我一直在研究语音识别和如何在一个网站上实现这一点。我已经找到了许多与Python一起使用它的例子,甚至还有一个与Node.js一起使用它的例子,但是我希望能够在这里使用PHP。

是否有任何方法可以使用CMUSphinx访问Linux服务器上的来处理输入?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-04 14:19:47

可以做,但要使用星号作为音频捕获和处理引擎。请参阅http://www.voip-info.org/wiki/view/Sphinx

在您的服务器配置好之后,下面的示例代码

代码语言:javascript
运行
复制
    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服务访问识别处理守护进程,即:将斯芬克斯作为守护进程运行(它的java!)然后,您可以像上面这样打开套接字,直接将一个.wav输入到它中,主要是使用上面的代码修改,所以,而不是调用星号服务器来检索,然后记录音频,您可以使用其他的东西,比如html5等等来记录音频。

另一件需要考虑的事情是,chrome和html5已经内置在语音识别中了。

票数 1
EN

Stack Overflow用户

发布于 2014-09-05 05:55:07

这种系统的体系结构取决于您要处理的音频类型。如果音频很长,您只需将其存储到临时文件中,并调用pocketsphinx_continuous作为外部工具来处理:

http://php.net/manual/en/function.shell-exec.php

您可以调用pocketsphinx_continuous -infile file.wav > decode-result.txt,这样就可以显示结果。这种方法的问题是解码初始化需要时间,所以您将无法将该方法用于短文件。

如果您想要处理短示例或想要以流模式处理音频,您需要某种服务器来加载模型并等待请求。关于如何实现它,有不同的变体,从简单的手工制作的服务器,通过简单的协议监听TCP端口,接受数据,再到更复杂的解决方案,比如http://unimrcp.org

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25666760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档