从PHP发布FLAC到谷歌语音识别API


speech to text - Posting FLAC to Google Voice Recognition API from PHP

我在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绑定