Хоть и пользуюсь яндексовыми колонками в доме, но ребенок надумался заняться видеомонтажем, а озвучка понятное дело - вещь еще та. В общем появилась необходимость конвертировать большие тексты в голос.
Поискал было в сети чем бы это все устроить и вспомнил про этот модуль. Оказывается он еще и не совсем рабочий. Пришлось слегка его помучить. Чем и делюсь
В общем, поправил в модуле:
стандартный функционал:
- чтобы он дружил с облаком,
- убрал локальную перекодировку видео из ogg в mp3 ( раньше чтоли Яндекс не отдавал сразу mp3 ? ). Забираем mp3 сразу из облака
- поправил шаблон страницы настроек - убрал все недействительные на сегодня голоса.
- люди с виндовыми серверами извиняйте - выбросил вашу часть, но она кажется касалась только пользования ffmpeg для перекодировки, которой там уже нет.
дополнительный функционал
- Дописал функцию, чтобы можно было отдельно получать mp3 файлы для своих нужд с озвучкой длинных текстов, которые можно подсовывать ему через сценарии.
Кстати, пока тестил, занятно потроллил Алису которая у меня в колонках управляет голосом в приборами в доме
Получаются занимательные беседы у них, когда подкидываешь дров из сети в виде диалогов из разных книжек подменяя в текстах имена на Алису и чередуя мужские и женские голоса ))
В общем, дополнительно появилась функция
ya_speech2, которую можно юзать таким же способом, как и стандартную
ya_speech в своих сценариях.
примерно так:
Код: Выделить всё
include(DIR_MODULES.'yandex_tts/yandex_tts.class.php');
$yandex_tts = new yandex_tts();
$result_file = $yandex_tts->ya_speech2($text,"ru-RU",$voice,$mood);
файлы складываются все в ту же папку, как и в оригинале
Код: Выделить всё
/var/www/html/cms/cached/voice/ddc6baf9c03b39f6e2d7325dab10cdaf_yandex.mp3
У меня озвученные файлы отправляются сразу в телегу. Стандартным образом
Код: Выделить всё
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendFileToUser(123454321,$result_file);
Как установить:
заходим в папку modules/yandex_tts/ и заменяем файл yandex_tts.class.php на прикреплённый к посту. Старый естественно сохраняем на всякий случай.
Заходим в папку templates/yandex_tts/ и заменяем там файл action_admin.html .
Этот файл отвечает за страницу настроек модуля.
Обратите внимание, когда выбираете эмоциональную окраску голоса на странице настроек . Там я сделал пометки в дропдаунах какому голосу они не подходят.
Не все голоса имеют одинаковый набор вариантов эмоций. Если в разделе настроек выберете голос в котором нет одной из эмоций и укажете такую эмоцию - получите ошибку.
Например два голоса filipp и madirus вовсе не имеют этих настроек поэтому им их и не надо передавать.
Для них в сценариях передаем так :
Код: Выделить всё
$voice = "filipp";
$result_file = $yandex_tts->ya_speech2($text,"ru-RU",$voice);
а для для других например:
Код: Выделить всё
$voice = "alena";
$mood = "good"; //это не подойдет например для голоса omazh
$result_file = $yandex_tts->ya_speech2($text,"ru-RU",$voice,$mood);
p.s. Показалось, что там в модуле могут на некоторых локалях быть проблемы с форматом времени. И Яндекс естественно не будет понимать истекли ли ваши ключи или нет. А может я и ошибаюсь. Кстати о ключах - был пост в этой ветке
viewtopic.php?f=24&t=5954&start=20#p112009
по идее вас там интересует пункт 3
удачи!