[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Куда надо это вставить чтоб заработало?
nikki4
Нужна озвучка текста.
погуглил.. нашел скрипт:
<?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 написал(а):
странно
$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 написал(а):
нашел другой код.. изменил с язык с французского на русский. получилось

<?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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.