2

我在 PHP 方面非常有经验,但我一直在连接服务器之间遇到问题,例如"post"。我有一个需要发布到 Google 语音识别 API 服务器的 FLAC 音频文件。我也不知道如何“倾听”它的回应。我想要一个这样的脚本,假设存在这种函数:

<?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;

  }

?>

编辑

我按照教程创建了一个使用 Wget --post 发布我的 FLAC 文件的 Shell 脚本。我想这样发布,但是在 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 的回答并为好奇的人烘焙了一个小要点。这是:https ://gist.github.com/chlkbumper/4969389 。不要忘记 FLAC 文件必须是 16k 比特率的 FLAC

4

1 回答 1

1

POST 请求只是一个标准的 HTTP 请求,只是指定了 POST 方法。HTTP 请求和 HTTP 响应的其余部分几乎相同。

顺便说一句,您会以 HTTP 响应的形式获得请求的响应。这绝对是RFC 2616中定义的 normaltiv - 仅与本文档相关,它解释了一切

PHP 中发送 HTTP 请求的一个函数是file_get_contents,它返回请求响应。这是通过HTTP 流包装器完成的,它提供了一些发送 POST 请求所需的选项(默认为 GET)。请参阅HTTP 上下文选项

另一个用于发送 HTTP 请求的流行 PHP 扩展是Curl 绑定

于 2012-12-23T01:24:59.270 回答