我在PHP很有经验,但我总是有麻烦的服务器之间的连接,如"post"。我有一个FLAC音频文件,我需要post到谷歌的语音识别API服务器。我也不知道如何"倾听"它的反应。我想要一个这样的脚本,假设这种函数存在:
<?php
$fileId = $_GET['fileId'];
$filepath = $fileId . ".flac";
recognize($filepath);
function recognize($pathToFile) {
//It's the following function that I'm looking for
$response = $pathToFile->post("http://www.google.com/speech-api/v1/.....&client=chromium");
//The $response would be the short JSON that Google feed back.
echo $response;
}
?>
编辑
我已经按照教程创建了一个Shell脚本,使用Wget——post来发布我的FLAC文件。我想张贴这样的,但在PHP。同样,在命令的末尾,有这个> answer.ret
行,因此Google的答案将被写入这个文件。我想知道在PHP中是否有替代方法。下面是命令行:
wget -q -U "Mozilla/5.0" --post-file audio1.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=fr-fr&client=chromium" > trancription1.ret
编辑2
我想出了如何做到这一点,用@hakre的答案,并为好奇的人烤了一点Gist。网址是:https://gist.github.com/chlkbumper/4969389。不要忘记FLAC文件必须是16k比特率的FLAC
POST请求只是一个标准的HTTP请求,只是指定了POST方法。HTTP请求和HTTP响应的其余部分基本相同。
您以HTTP响应的形式获得请求的响应。它绝对是在RFC 2616中规范定义的-只是与本文档相关,它解释了所有。
PHP中发送HTTP请求的函数是file_get_contents
,它返回请求的响应。这是通过HTTP流包装器完成的,该包装器提供了发送POST请求所需的一些选项(默认是GET)。参见HTTP上下文选项。
发送HTTP请求的另一个流行的PHP扩展是Curl绑定