Я пытаюсь преобразовать слова в речь .
До сих пор я пробовал это:
<?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>
Я получаю созданный привет и аудиоплеер на выходе. Но файл не воспроизводится и не создается в папке?
Существует проблема с URL-адресом, к которому вы пытаетесь получить доступ. Это сломано ! Сначала вы должны были попробовать. Новый URL-адрес, который я нашел на консоли FF:
http://translate.google.com/translate_tts?ie=UTF-8&q=Hello&tl=en&total=1&idx=0&textlen=5&prev=input
Для одного слова Hello . И вы видите, что вам нужно указать язык и длину текста в textlen , хотя он действительно работал для всех предложений, которые я пробовал, не меняя этот var.
Другая проблема заключается в том, что вы должны 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); } ?>
Улучшенная версия:
// ~~~ 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>"; }
.// ~~~ 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>"; }
Вы не можете использовать эту услугу бесплатно.
Есть ли бесплатная квота? Нет, API Google Translate доступен только в качестве платной услуги. Дополнительную информацию см. В разделе «Цены и поддержка». Однако мы предлагаем гаджет Google Translator Google Translator, который будет транслировать ваш сайт бесплатно.
Проверка перевода API FAQ
Более подробную информацию об этом неофициальном способе использования вы можете найти на Techcrunch
Ваш файл не создается, потому что вы забыли его создать, используйте нижеприведенный код для создания файла.
$file = "audio/".$file.".mp3"; $ourFileHandle = fopen($file, 'w') or die("can't open file");
Вы также можете использовать простой код ниже. Просто повторите код, чтобы получить результат. В этом коде нет необходимости сохранять файл или получать разрешения.
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>";
Я нашел это:
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 и т. Д.