我正在使用谷歌文本语音API,但由于某些原因,当我通过php或命令行连接到它时,它真的很慢。
我这样做:
$this->mp3data = file_get_contents("http://translate.google.com/translate_tts?tl=en&q={$text}");
其中$ text只是一个urlencoded字符串。
我也尝试过在命令行上使用wget:
wget http://translate.google.com/translate_tts?tl=en&q=test
无论哪种方式大约需要20秒或更长时间。通过php,它最终会获取内容并将其添加到我想要的服务器上的新文件中。通过wget,它可以连接出来。
但是,如果我只是在浏览器中访问该网址,那几乎是即时的。
有人能否解释为何会出现这种情况?
感谢。
答案 0 :(得分:1)
这是由于谷歌如何分析机器人。您需要欺骗User-Agent标头以伪装成计算机。
有关如何解决这个问题的一些信息将在这里:
答案 1 :(得分:0)
现在管理好了解决这个问题,这就是我最终做的事情,现在它只需要几秒钟:
$header=array("Content-Type: audio/mpeg");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$this->mp3data = curl_exec($ch);
curl_close($ch);