YandexTTS и SpechKit в Облаке ?!

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Аватара пользователя
andrey040670
Сообщения: 458
Зарегистрирован: Пн июл 31, 2017 10:00 pm
Благодарил (а): 161 раз
Поблагодарили: 85 раз

Re: YandexTTS и SpechKit в Облаке ?!

Сообщение andrey040670 » Вт мар 08, 2022 4:35 pm

Приветствую сообщество.
04.03.2022 отвалился Yandex TTS, при чём нет никаких ошибок, такое впечатление, что яндекс не обрабатывает запрос и отсылает пустое значение. В консоле яндекс то же пусто.
Хотелось бы понять на какой стороне косяк, и если есть у кого то, такое поведение модуля.
UPD
Разобрался. Сдох Yandex OAUTH токен, срок действия его 1 год, который уже прошёл, а я про это ограничение забыл.
Ну блин хоть в облаке можно было вывести эту информацию? Ошибок то нет не где. Пришлось лопатить всю документацию. :evil:
Если кто то сталкнётся с такой ситуацией, то теперь вы знаете что делать.))
MJD alfa: Khadas VIM1 Ubuntu 18.04.2 LTS bionic Linux 4.9.40 #2 SMP PREEMPT Tue Oct 30 15:47:54 CST 2018 aarch64 GNU/Linux
MJD alfa: Rpi 3B Debian 11 (bullseye) Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
overflow
Сообщения: 4
Зарегистрирован: Сб июл 23, 2022 1:05 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: YandexTTS и SpechKit в Облаке ?!

Сообщение overflow » Пт окт 21, 2022 3:11 am

Хоть и пользуюсь яндексовыми колонками в доме, но ребенок надумался заняться видеомонтажем, а озвучка понятное дело - вещь еще та. В общем появилась необходимость конвертировать большие тексты в голос.
Поискал было в сети чем бы это все устроить и вспомнил про этот модуль. Оказывается он еще и не совсем рабочий. Пришлось слегка его помучить. Чем и делюсь

В общем, поправил в модуле:
стандартный функционал:
- чтобы он дружил с облаком,
- убрал локальную перекодировку видео из 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);
Archive.zip
(9.32 КБ) 44 скачивания
p.s. Показалось, что там в модуле могут на некоторых локалях быть проблемы с форматом времени. И Яндекс естественно не будет понимать истекли ли ваши ключи или нет. А может я и ошибаюсь. Кстати о ключах - был пост в этой ветке viewtopic.php?f=24&t=5954&start=20#p112009

по идее вас там интересует пункт 3

удачи!
За это сообщение автора overflow поблагодарил:
andrey040670 (Пт окт 21, 2022 9:51 am)
Рейтинг: 1.16%
Ответить