文本到语音的PHP与谷歌翻译(Text-to-speech in PHP with Google T

2019-08-16 18:38发布

我想的话转换成语音 ..

直到如今我已经试过这样:

<?php
 $text = "Hello this is a test for voice api of google";

// Name of the MP3 file generated using the MD5 hash
   $file  = md5($text);

// Save the MP3 file in this folder with the .mp3 extension 
   $file = "audio/" . $file .".mp3";
   if($file) {
     echo "created";
   } else {
     echo "not created";
   }

// If the MP3 file exists, do not create a new request
   if (!file_exists($file)) {
     $mp3 = file_get_contents(
        'http://translate.google.com/translate_tts?q=' . $text);
     echo "hello";
     file_put_contents($file, $mp3);
   } else {
     echo "hii";
   }
?>

在我的HTML文件:

<audio controls="controls" autoplay="autoplay">
  <source src="<?php echo $file; ?>" type="audio/mp3" />
</audio>

我正在创建打招呼,在输出的音频播放器。 但是,没有文件播放,并没有被创建的文件夹中?

Answer 1:

  1. 没有与您尝试访问的网址有问题。 它被打破 ! 你应该首先尝试。 新的URL,我的FF控制台上发现的是:

    http://translate.google.com/translate_tts?ie=UTF-8&q=Hello&tl=en&total=1&idx=0&textlen=5&prev=input

    对于单个单词你好 。 你可以看到,你必须指定语言,并在在textlen文本的长度,即使它没有工作,我才试图在不改变该变种的句子。

  2. 另一个问题是,你必须来urlencode()你的文字,或者你将有口音和标点符号的错误。 所以下载的MP3行变成了:

     // Language of the sentence $lang = "fr"; $mp3 = file_get_contents( 'http://translate.google.com/translate_tts?ie=UTF-8&q='. urlencode($text) .'&tl='. $lang .'&total=1&idx=0&textlen=5&prev=input'); 

因此,完整的代码如下所示:

<?php

    $text = "Bonjour, comment allez vous ?";
    // Yes French is a beautiful language.
    $lang = "fr";

    // MP3 filename generated using MD5 hash
    // Added things to prevent bug if you want same sentence in two different languages
    $file = md5($lang."?".urlencode($text));

    // Save MP3 file in folder with .mp3 extension 
    $file = "audio/" . $file . ".mp3";


    // Check folder exists, if not create it, else verify CHMOD
    if (!is_dir("audio/"))
        mkdir("audio/");
    else
        if (substr(sprintf('%o', fileperms('audio/')), -4) != "0777")
            chmod("audio/", 0777);


    // If MP3 file exists do not create new request
    if (!file_exists($file))
    {
        // Download content
        $mp3 = file_get_contents(
        'http://translate.google.com/translate_tts?ie=UTF-8&q='. urlencode($text) .'&tl='. $lang .'&total=1&idx=0&textlen=5&prev=input');
        file_put_contents($file, $mp3);
    }

?>


Answer 2:

我找到了:

https://translate.google.com.vn/translate_tts?ie=UTF-8&client=tw-ob&q=ANYTHING_TEXT&tl=YOUR_LANGUAGE_CODE

重要提示: client=tw-ob

YOUR_LANGUAGE_CODE能恩,美国,英国,VI等。



Answer 3:

一种改进版本:

// ~~~ Credits to kube ~~~

    $text = "Hello this is a test for voice api of google";
    $text = urlencode($text);
    $lang = urldecode("en");
    $file  = "audio/" . md5($text) .".mp3";
       if (!file_exists($file) || filesize($file) == 0) {
         $mp3 = file_get_contents('http://translate.google.com/translate_tts?ie=UTF-8&q='.$text.'&tl='.$lang.'&total=2&idx=0&textlen='.strlen($text).'&prev=input');
         if(file_put_contents($file, $mp3)){
            echo "Saved<br>";
         }else{
            echo "Wasn't able to save it !<br>";
         }
       } else {
         echo "Already exist<br>";
       }


Answer 4:

您不能免费使用这项服务。

有没有免费配额? 不,谷歌翻译API仅作为一种有偿服务。 请参阅定价和支持更多的细节。 但是,我们提供的谷歌网站翻译小工具,这将不收费您的网站翻译。

检查翻译API常见问题解答

有关使用这个非官方的方式,你可以找到更多信息TechCrunch的



Answer 5:

您还可以使用下面的简单代码。 只不过是回应代码即可获得结果。 在这段代码,就没有必要保存一个文件或得到许可的问题。

 echo "<iframe hidden src='http://translate.google.com/translate_tts?ie=UTF-8&q=Welcome%20back%20".$jvm['firstname']."&tl=en&total=2&idx=0&textlen=5&prev=input'></iframe>";


Answer 6:

您的文件也没有创造,因为你忘了创建它,使用下面的代码来创建该文件。

$file = "audio/".$file.".mp3";
$ourFileHandle = fopen($file, 'w') or die("can't open file");


文章来源: Text-to-speech in PHP with Google Translate