погуглил.. нашел скрипт:
<?php
// FileName: tts.php
/*
* A PHP Class that converts Text into Speech using Google's Text to Speech API
*
* Author:
* Abu Ashraf Masnun
* http://masnun.com
*
*/
class TextToSpeech {
public $mp3data;
function __construct($text="") {
$text = trim($text);
if(!empty($text)) {
$text = urlencode($text);
$this->mp3data = file_get_contents("http://translate.google.com/translate_tts?q={$text}");
}
}
function setText($text) {
$text = trim($text);
if(!empty($text)) {
$text = urlencode($text);
$this->mp3data = file_get_contents("http://translate.google.com/translate_tts?q={$text}");
return $mp3data;
} else { return false; }
}
function saveToFile($filename) {
$filename = trim($filename);
if(!empty($filename)) {
return file_put_contents($filename,$this->mp3data);
} else { return false; }
}
}
?>
And here’s demo :
<?php
require "tts.php";
$tts = new TextToSpeech();
$tts->setText("Hello World!");
$tts->saveToFile("masnun.mp3");
?>
скрипт работает, но только с английским языком..иначе начнет читать символы всякие. Там уже задали этот вопрос, дали подсказку
utf8_encode($text);
но куда это нужно добавить? пробовал всякие варианты.. то ошибка, то не работает и выдает символы, а не слова
Спустя 8 минут, 47 секунд (17.03.2012 - 13:03) nugle написал(а):
так попробуй
And here’s demo :
<?php
require "tts.php";
$tts = new TextToSpeech();
$text = "Hello World!";
$text = utf8_encode($text);
$tts->setText($text);
$tts->saveToFile("masnun.mp3");
?>
Спустя 7 минут, 31 секунда (17.03.2012 - 13:10) nikki4 написал(а):
так тоже выдает набор символов.. а не текст
Спустя 32 минуты, 49 секунд (17.03.2012 - 13:43) Visman написал(а):
Что-то болтает, но качество отвратительное
Если просто ссылку открыть
то качество очень хорошее
<?php
$text = "Мама мыла раму";
$uagent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.872.0 Safari/535.2";
$text = urlencode($text);
$url= "http://translate.google.com/translate_tts?tl=ru&q=$text";
$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
$content = curl_exec( $ch );
curl_close( $ch );
$file = fopen("current.mp3","wt") or die("err");
fputs($file,$content);
fclose($file);
?>
Если просто ссылку открыть
http://translate.google.com/translate_tts?tl=RU&q=%EC%E0%EC%E0%20%EC%FB%EB%E0%20%F0%E0%EC%F3
то качество очень хорошее
Спустя 2 часа, 26 минут, 32 секунды (17.03.2012 - 16:10) nikki4 написал(а):
странно
эхо выдает
и если в браузер вставить, то нормально.
а если открыть воспроизведенный файл, то возникнет ошибка..
попробовал с помощью функции сделать.
но почему-то результат тот же.. если вручную в браузер вставить нормально, а если воспроизводить мп3 скачанный, то ошибка при открытии
$this->mp3data = file_get_contents("http://translate.google.com/translate_tts?q={$text}&tl=ru");
echo "http://translate.google.com/translate_tts?q={$text}&tl=ru";
эхо выдает
http://translate.google.com/translate_tts?q=%D1%82%D0%B5%D0%BA%D1%81%D1%82&tl=ru
и если в браузер вставить, то нормально.
а если открыть воспроизведенный файл, то возникнет ошибка..
попробовал с помощью функции сделать.
<?php
function mb_rawurlencode($url){
$encoded='';
$length=mb_strlen($url);
for($i=0;$i<$length;$i++){
$encoded.='%'.wordwrap(bin2hex(mb_substr($url,$i,1)),2,'%',true);
}
return $encoded;
}
?>
Example:
<?php
echo 'http://example.com/',
mb_rawurlencode('你好');
?>
но почему-то результат тот же.. если вручную в браузер вставить нормально, а если воспроизводить мп3 скачанный, то ошибка при открытии
Спустя 1 час, 10 минут, 26 секунд (17.03.2012 - 17:20) nikki4 написал(а):
нашел другой код.. изменил с язык с французского на русский. получилось
но при воспроизведении там тишина.. попробовал написать
но он начал читать: буквально то, что выше..
пс: вопрос решен
http://phpforum.ru/index.php?act=ST&f=125&...=0#entry1775267
<?php
$transtext = "слово"; // ISO-8859-1 string to be encoded in UTF-8 было t\xe9l\xe9phone
$base_url = 'http://translate.google.com/translate_tts?';
$qs = http_build_query(array(
'tl' => 'ru',//было fr
'ie' => 'UTF-8',
'q' => utf8_encode($transtext)
));
$contents = file_get_contents($base_url . $qs);
file_put_contents('slovo.mp3',$contents);//Добавил
?>
но при воспроизведении там тишина.. попробовал написать
$transtext = "%D1%82%D0%B5%D0%BA%D1%81%D1%82";
но он начал читать: буквально то, что выше..
пс: вопрос решен
http://phpforum.ru/index.php?act=ST&f=125&...=0#entry1775267