1

Google Text to Speech 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 を介して、接続のタイムアウトが発生します。

ただし、ブラウザでその URL にアクセスするだけなら、ほとんど瞬時に完了します。

なぜこれが起こっているのか、誰かが光を当てることができますか?

ありがとう。

4

2 に答える 2

1

これは、Google がロボットを解析する方法によるものです。コンピューターになりすますには、User-Agent ヘッダーをスプーフィングする必要があります。

これを行う方法に関する情報は次のとおりです。

https://duckduckgo.com/?q=php%20curl%20spoof%20user%20agent

于 2013-08-01T20:58:15.273 に答える
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); 
于 2013-08-02T17:01:58.803 に答える