Intereting Posts
Как загрузить ответ запроса ajax (jquery) постепенно, не дожидаясь его завершения? Apache не будет устанавливать заголовки для скрипта PHP Объединение нескольких смежных прямоугольников в один многоугольник Почему в ячейке используется левая и верхняя набивка с использованием TCPDF в php? Постоянный локальный доменный сокет в php php Извлеките массив родительского уровня из набора массивов и узлов объединения Почему («00e0» == «00e1») оценивается как истина? PHP день недели числовой текст дня недели Лучший способ полностью уничтожить сеанс – даже если браузер не закрыт Как должен выглядеть HTTP Post для сохранения модели и связанных с ней данных модели? Почему функция PHP без параметров требует скобок? Объединение моделей вместе Php не обновится, чтобы показать новый контент sql Использование mod-Rewrite с 5 страницами (подменю подстановки) Предел символов регулярного выражения

Перевод текста в речь на PHP с помощью Google Translate

Я пытаюсь преобразовать слова в речь .

До сих пор я пробовал это:

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

Я получаю созданный привет и аудиоплеер на выходе. Но файл не воспроизводится и не создается в папке?

  1. Существует проблема с 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.

  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); } ?> 

Улучшенная версия:

 // ~~~ 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 и т. Д.