12

我正在尝试将单词转换为语音..

直到现在我已经尝试过这个:

<?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>

我正在输出中创建你好和音频播放器。但是没有播放文件,也没有在文件夹中创建文件?

4

6 回答 6

11
  1. 您尝试访问的网址有问题。它被打破 !你应该先尝试。我在 FF 控制台上找到的新 URL 是:

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

    对于单个词Hello。而且您看到您必须在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);
    }

?>
于 2013-02-07T00:59:44.283 回答
5

我找到了:

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可以是 en、us、uk、vi 等。

于 2017-10-14T03:43:00.893 回答
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>";
       }
于 2013-02-07T08:54:36.170 回答
2

您不能免费使用此服务。

有免费配额吗? 不可以,Google Translate API 仅作为付费服务提供。有关详细信息,请参阅定价和支持。但是,我们确实提供了 Google 网站翻译小工具,它可以免费翻译您的网站。

检查翻译 API 常见问题

有关这种非官方使用方式的更多信息,您可以在Techcrunch上找到

于 2014-05-10T19:19:26.350 回答
1

您也可以使用下面的简单代码。只需回显代码即可获得结果。在此代码中,无需保存文件或获取权限问题。

 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>";
于 2015-10-01T09:51:38.723 回答
0

您的文件未创建,因为您忘记创建它,请使用以下代码创建文件。

$file = "audio/".$file.".mp3";
$ourFileHandle = fopen($file, 'w') or die("can't open file");
于 2013-02-06T07:58:47.853 回答