我在PHP CLI中使用谷歌语音识别api为我的覆盆子pi制作了一个程序,我想优化它,在我们讲话的同时发送数据(现在它记录了我们所说的感谢sox,然后发送它)。
所以我想在使用套接字时将音频文件发布到谷歌,但我必须在发送之前通过Content-Lenght给出长度。
是否可以这样做?不给长度/给出更大的最大长度?谢谢。这是我的代码:
<?php
header('Content-Type: text/html');
$name = 'www.google.com';
$dir = '/speech-api/v1/recognize?xjerr=1&client=chromium&lang=fr-FR&maxresults=10&pfilter=0';
$data = file_get_contents("/smart/voix.flac") ;
$envoi = "POST ".$dir." HTTP/1.1\r\n";
$envoi .= "Host: ".$name."\r\n";
$envoi .= "Connection: Close\r\n";
$envoi .= "Content-Type:audio/x-flac;rate=44100\r\n";
$envoi .= "Content-Length: 100\r\n\r\n";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($socket < 0){
die('FATAL ERROR: socket_create() : " '.socket_strerror($socket).' "');
}
if (socket_connect($socket,gethostbyname($name),80) < 0){
die('FATAL ERROR: socket_connect()');
}
if(($int = socket_write($socket, $envoi, strlen($envoi))) === false){ //I send the first part
die('FATAL ERROR: socket_write() failed, '.$int.' characters written');
}
if(($int = socket_write($socket, $data."\r\n", strlen($data."\r\n"))) === false){//then the file
die('FATAL ERROR: socket_write() failed, '.$int.' characters written');
}
$reception = '';
while($buff = socket_read($socket, 2000)){
$reception.=$buff;
}
echo $reception;
socket_close($socket);
?>
答案 0 :(得分:0)
你已经在做了:
$data = file_get_contents("/smart/voix.flac") ;
所以那时你必须有一个set文件。所以只是:
$filesize = filesize("/smart/voix.flac");
并将其用于Content-Length。