2013-09-23 3 views
0
//=======Text to Speech================== 
function tts($sentence) 
{ 
    $fragment = array(); 
    $tmp = explode(" ",$sentence); 
    $tmp_ = ""; 
    $last_word = ""; 
    foreach ($tmp as $value) { 
      $tmp_.= "$value "; 
      $last_word = $value; 
      if (strlen($tmp_) > 100) { 
       $last_tmp_.= ""; 
       array_push($fragment, $last_tmp_); 
       $tmp_ = $last_word." "; 
       $last_tmp_ = "";    
      } 
      $last_tmp_ = $tmp_; 
    } 
    array_push($fragment, $last_tmp_); 
    foreach ($fragment as &$value) 
    { 
      $value = str_replace(" ","+",$value); 
    } 

//  $sentence = str_replace(" ","+",$sentence); 
    $name = 0; 
    foreach($fragment as $value) 
    { 
      $url = "https://translate.google.com/translate_tts?tl=en&q=".$value; 
      if ($name == 0) 
       $fp = fopen("sound/combined.mp3","w"); 
      else 
       $fp = fopen("sound/temp".$name.".mp3","w"); 
      $ch = curl_init($url); 
      curl_setopt($ch, CURLOPT_FILE, $fp); 
      $data = curl_exec($ch); 
      curl_close($ch); 
      fclose($fp); 

      file_get_contents($url) or die("oops\n"); 
      $name++; 
    } 
    $count = 1; 
    while ($count < $name) 
    { 
      file_put_contents('sound/combined.mp3', 
          file_get_contents('sound/combined.mp3') . 
          file_get_contents('sound/temp'.$count.'.mp3')); 
      $count++; 
    } 
    $count = 1; 
    while ($count < $name) 
    { 
      unlink("sound/temp".$count.".mp3"); 
      $count++; 
    } 
} 
//=========IN============= 
if($tts == 'in'){ 
tts($alias.'.'); 
$sound = '<embed src="database/sound/inbeep.mp3" width="0" height="0" ><embed src="database/sound/combined.mp3" width="0" height="0" >'; 
} 

Когда я запускаю код, я перехожу к коду ошибки «oops», что означает, что он не смог создать файл, вчера он работал нормально, и я ничего не изменил внутри кода я не знаю, блокирует ли Google использование API или что-то не так с моим кодом.API-интерфейс для работы с текстом Google не работает на php

+0

lol, это не api, у них есть платный, это царапание, поэтому неудивительно, что они вас останавливают. –

+0

где вы получаете платный? – telexper

+0

https://developers.google.com/translate/ –

ответ

1

Вам необходимо добавить строку пользовательского агента, чтобы вам не сказали, что она прибывает из CURL. Ваш код в цикле должен быть таким:

$url = "https://translate.google.com/translate_tts?tl=en&q=".$value; 
if ($name == 0) 
    $fp = fopen("sound/combined.mp3","w"); 
else 
    $fp = fopen("sound/temp".$name.".mp3","w"); 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36'); 
$data = curl_exec($ch); 
curl_close($ch); 
fclose($fp);