使用 Google Translate 在 PHP 中进行文字转语音

新手上路,请多包涵

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

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

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

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

原文由 Sankalp Mishra 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 423
2 个回答
  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 中指定语言和文本的长度,即使它对我在不更改此 var 的情况下尝试的所有句子都有效。

  1. 另一个问题是您必须对您的文本进行 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);
    }

?>

原文由 kube 发布,翻译遵循 CC BY-SA 3.0 许可协议

我找到了:

 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 等。

原文由 Tan Nguyen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题