Picobook TTS Offline
|
|
Pin240 | Дата: Суббота, 23.07.2022, 14:19 | Сообщение #1 |
Группа: Пользователи
Сообщений: 104
Статус: Offline
| Всем салют! Не смотря на большое кол-во online TTS как платных, так и бесплатных мне захотелось сделать именно Offline TTS, но с более менее качественным голосом. Так родилась Picobook_TTS_Offline_Console (ссылка на облако майл). Самое сердце программы - модель silero-models от snakers4. Для воплощения своей задачи пришлось пройти по многим доступным репозитариям и статьям. Здесь меня ждало огромное разочарования. 90% скриптов заточены под GPU, но это было пол беды, конкретно под RTX и ни одной под AMD. Были решения и под AMD -однако это являлось очень мудреным "костылем" со всеми вытекающими, ко всему в придачу на Windows это не работало. Попалась статья по directml pytorch, но и здесь я ударился в узконаправленность использования исключительно при DirectX12. Итогом - все что ниже Win8 автоматом отбрасывается + трудности запуска из под wine в Ubutu. Сразу скажу что являюсь новичком в python-е. TTS пилиться добровольно по мере свободного времени и желанию, хотя не откажусь от финансовой поддержки (пишите в лс), для бесплатного не коммерческого использования. Особенности сборки:
1) Только русские буквы (цифры и числа можно добавить через словарь) 2) Использованная модель работает на CPU ~1.4х на Intel Pentium B970 (2 ядра 2.3Гц) 8гб Win7x64 3) Подключен словарь замен для ударений (пока работает кривенько в некоторых моментах из-за моего не знания python-а) 4) На выходе WAV 16 бит 48kHz mono сразу перегоняется в MP3 с разбиением по 25 мин. Чтобы не занимать гигабайты места. На выходе один цельный файл МР3 и он же разбитый на части. 5) Выбор кол-ва используемых ядер CPU 6) Выбор голосов 7) Есть поддержка SSML. Пока использую только тег <s></s> SSML теги для модели
Примеры звучания прикреплены
Сообщение отредактировал Pin240 - Суббота, 23.07.2022, 14:20 |
|
| |
tonio_k | Дата: Суббота, 23.07.2022, 18:01 | Сообщение #2 |
Группа: Пользователи
Сообщений: 139
Статус: Offline
| Замечания 1) при первом запуске консоли сразу требуется нажатие Enter - это лишнее. Из за неё в перспективе нельзя автоматизировать какую либо пакетную обработку - при каждом запуске консоли требуется действия от пользователя. Да и в конце нажатие Enter тоже убрать. Иначе нельзя будет настроить пакетную обработку нескольких текстовых файлов. 2) консоль желательно привязать к некому файлу настроек из которых консоль при запуске автоматом будет брать все настройки (в том числе путь к текстовому файлу) и приступать к записи аудио - что бы не вводить эти данные каждый раз при каждом запуске консоли. Отдельный файл настроек даст возможность использовать вашу консоль в Демагоге для автоматизации процессов записи и создания диалогов управления теми же настройками через интерфейс. 3) добавить возможность "отключить" объединение по-абзацных mp3 файлов в единый большой файл mp3 - пусть маленькие аудиофайлы файлы плодятся. Полезно для 2 моментов: Первый- я их смогу в последующем объеденить в несколько больших по 5, 10, 30 минут (с погрешностью, но все же) - на своё усмотрение. Второй момент- Книга ещё не записалась за ночь полностью, а я уже могу переписать готовые маленькие файлы к себе на плеер и начать слушать хотя бы половину того, что уже записалось. С учётом скорости работы движка эта хотела не лишена смысла.
P.S. понравилось выбор количества ядер. Действительно снижает нагрузку на процессор. Мой старенький ноутбук к утру не сгорит от напряжения. Это радует
|
|
| |
Pin240 | Дата: Суббота, 23.07.2022, 19:31 | Сообщение #3 |
Группа: Пользователи
Сообщений: 104
Статус: Offline
| Цитата tonio_k Цитата при первом запуске консоли сразу требуется нажатие Enter - это лишнее. Это не убрано из за запуска таймера выполнения, вскоре уберу Цитата tonio_k Цитата к некому файлу настроек Эту тему изучаю Цитата tonio_k Цитата добавить возможность "отключить" объединение по-абзацных mp3 Скоро это будет отдельная настройка. Однако файл все равно с начало будет собираться в 1 большой из за особенностей ограничений самой модели. Модель изначально не предусмотрена для пакетной обработки . Однако пока могу сделать вариант без объединения кусков. Готовтесь кусков будет очень много и продолжительностью не более 40 сек это исходит из ограничения в 1000 символов за один абзац генерации.
Сообщение отредактировал Pin240 - Суббота, 23.07.2022, 19:32 |
|
| |
tonio_k | Дата: Суббота, 23.07.2022, 20:54 | Сообщение #4 |
Группа: Пользователи
Сообщений: 139
Статус: Offline
| В в конце аудио принудительно вставляется слово "конец"
Это надо убрать. Вдруг кто то по главам будет озвучивать?
Предлагаю вместо этого в будущем файле настроек добавить строку: "Вставать строку в конце озвучиваемого текста" - тут пользовалатель сам решит - оставить это поле пустым или внести свой вариант: "конец книги" или "конец тома" или что угодно.
|
|
| |
Pin240 | Дата: Суббота, 23.07.2022, 21:20 | Сообщение #5 |
Группа: Пользователи
Сообщений: 104
Статус: Offline
| Цитата tonio_k ( ) "конец" Вставлен чтобы не получилось захвата пустой строки с переводом коретки иначе ошибка синтеза. Сейчас расширяю кол-во настроек.
Сообщение отредактировал Pin240 - Суббота, 23.07.2022, 22:20 |
|
| |
Pin240 | Дата: Воскресенье, 24.07.2022, 19:48 | Сообщение #6 |
Группа: Пользователи
Сообщений: 104
Статус: Offline
| А вот Новые версии(https://cloud.mail.ru/public/7jkJ/Kw7HnWAmG). Решил собирать одним файлом, так как долго рыться и искать нужный. Из минусов долго запускается Теперь будут отдельные ветки для запуска с параметрами Picobook_TTS_Offline_Console_V3.3_CC (CC - CMD Control) и с запросам пользователя Picobook_TTS_Offline_Console_V3.3
Picobook_TTS_Offline_Console_V3.3_CC (CC - CMD Control)
INFO: Python: 3.8.6 INFO: Platform: Windows-7-6.1.7601-SP1 x64 INFO: UPX is available.
Добавлено: - Удаление Book_full.mp3 по умолчанию - Выбор сегментации, после сборки Book_full.mp3, на нужное. - Звуковое уведомлении окончания операции только Win CMD - Гибернация ПК (только Win) Оптимизированно: - Выбор нагрузки на CPU. Теперь вводим нужное нам значение. - Запуск только с параметрами. Почти все параметры есть по умолчанию. Те которые не нужно изменять можно не вводить. Справка вызывает через -h - Программа поумолчанию ищет файл book.txt в случае его отсутсвия запросит ручной ввод.
Пример:
Код Picobook_TTS_Offline_Console_V3.3_CC.exe -C 2 -SM 2 -SG 1 -ST 100 -R 1 -SP 3 -T book1.txt -H 0
Очередность параметров не важна, но пробел важен(-SM 2):Код Picobook_TTS_Offline_Console_V3.3_CC.exe -T book1.txt -R 1 -SM 2 -SG 1 -ST 100 -C 2 -SP 3
Picobook_TTS_Offline_Console_V3.3
INFO: Python: 3.8.6 INFO: Platform: Windows-7-6.1.7601-SP1 x64 INFO: UPX is available.
Дабавлено: - Выбор удаление Book_full.mp3 - Выбор сигментации, после сборки Book_full.mp3, на нужное время. - Звуковое увидомление окнчания операции только Win CMD - Гибернация ПК (только Win)
Оптимизированно: - Выбор нагрузки на CPU. Теперь вводим нужное нам значение.
Донат можно закинуть в https://vk.com/pin_studio
Сообщение отредактировал Pin240 - Воскресенье, 24.07.2022, 20:32 |
|
| |
Pin240 | Дата: Воскресенье, 24.07.2022, 22:15 | Сообщение #7 |
Группа: Пользователи
Сообщений: 104
Статус: Offline
| вылез баг с переменной "SM" в 63 и 154 строках сегодня исправлю
Исправлено и перекомпилировано
Сообщение отредактировал Pin240 - Воскресенье, 24.07.2022, 23:08 |
|
| |
flegont | Дата: Понедельник, 25.07.2022, 15:14 | Сообщение #8 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Вопрос по Picobook_TTS_Offline_Console_V3.3_CC.exe Как понимаю, обращение к словарю с именем dic.txt намертво "зашито" в программе? Между тем, отправляемый на озвучку текст мог быть заранее обработан сторонними средствами: цифры заменены буквами, распознаны омографы и проставлены знаки ударения и т.д. и т.п. dic.txt тогда не нужен, а никак не отключить; если совсем убрать - то возникает ошибка "файл не найден". Вариант: использовать пустой dic.txt, но было бы удобнее: по умолчанию озвучка без словаря, а если надо, то задавать параметром, как-то так: --D имя_файла_словаря А в остальном - работает!
Сообщение отредактировал flegont - Понедельник, 25.07.2022, 15:15 |
|
| |
tonio_k | Дата: Понедельник, 25.07.2022, 15:27 | Сообщение #9 |
Группа: Пользователи
Сообщений: 139
Статус: Offline
| Цитата flegont ( ) Вариант: использовать пустой dic.txt Пустой словарь вызывает ошибку. Для себя - удалил все правила из dic.txt кроме первого и последнего. Тогда, если словарь отработает, то минимально по времени. Содержимое словаря перенёс к остальным словарями в Демагог и перевёл в *.dic формат. Адаптировал все свои словари под этот голосовой движок. Даже добавил словарь орфоэпический - хуже не стало, может даже лучше будет? Осталось дождаться от автора консоли устойчивую (на внесение изменений в параметры) консоль, и можно создать скрипт с интерфейсом и диалгами настроек под Демагога. Одна беда - ну очень долго на старом ноуте аудио пишется. И проблему с паузами не могу победить. STML теги игнорируются. Может какая то чистка скрытная есть, которая ломает эти тэги?
|
|
| |
flegont | Дата: Понедельник, 25.07.2022, 16:47 | Сообщение #10 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Я использовал dic.txt с одной пустой строкой не содержащей ни одного символа. Создал в Блокноте, текстовый курсор так и стоит в начальной позиции. Сохранил в Блокноте в utf8 без bom. Проверил пока на 2 небольших текстах. Запускал bat-файл вида: командная строка_из_примера_разработчика pause
И смотрел в консоли - нет ли сообщений об ошибках. Было сообщение, что словарь - загружен. Хоть и пустой. Далее - логи озвучки и комариный писк, сообщающий о завершении. Все mp3 - сгенерировались нормально, очень приятное звучание, авторы модели - ребята из Silero - молодцы. Рассказ В.Журавлевой "Нахалка" озвучился за 1 мин. Ноут MSI Katana, Win 10, проц Core i7 8 ядер, 16 гб памяти.
Да, увидел еще, что PicoBookTTS не понимает кириллические имена книг - считает, что файл книги не задан и просит ввести с консоли. Пришлось переименовать: Nahalka.txt.
P.S. Разницы в произношении с подключенным dic.txt от разработчика и с пустым - пока не заметил
Сообщение отредактировал flegont - Понедельник, 25.07.2022, 19:18 |
|
| |
Pin240 | Дата: Понедельник, 25.07.2022, 19:35 | Сообщение #11 |
Группа: Пользователи
Сообщений: 104
Статус: Offline
| Цитата flegont ( ) произношении с подключенным dic.txt Так это словарь от яндекса только без иностранных слов и буквЦитата flegont ( ) противный писк А это чтобы было понятно что "алес капут", например я поставил и забыл или уснул . В версии с параметрами возможно сделаю возможность отключения. Не забыть бы...Цитата flegont ( ) с именем dic.txt намертво "зашито" в программе? Пока что да.Цитата flegont ( ) заранее обработан сторонними средствами Модель поддерживает ударения в виде "ледян+ой", но не поймет если спецификации программы вылезит "%" или будет "кАпот"Цитата tonio_k ( ) STML А вы не путаете с SSML? Немного разные вещи, но я сам еще не все пробовал. С примера в колабе автора - работает. Но нужно особенность синтаксиса просмотреть. Может где символы съедает. Сейчас цель наработать аргументы настройки и их отработка.
Цитата tonio_k ( ) диалогами настроек под Демагога. Я буду графический делать в отдельной версии. Да если не трудно поделитесь вашей версией Демогога со словарями и скриптами. Может в будущем получиться их прилепить, хотя для питона где-то есть специальная библиотека и скоро я до нее доберусь ^w^ Цитата tonio_k ( ) ну очень долго Вы еще не знаете как это долго модели на ЦПУ работают. Это модель исключение - вы не найдете такой, которая на старом ноуюте может гнать аудио в ~1.4 раза реальной скорости(то есть она может читать в реальном времени с качеством в 48кГц + еще и запас для буфера). Чаще это всего ~0.2-0.4 в лучшем случае. Про гпу молчу...
Цитата flegont ( ) то задавать параметром, как-то так: --D имя_файла_словаря Я на него просто не повесил обработчик ошибки. На отсутствие book.txt сделал, по факту можно залепить чтобы он искал все *.dic и загружал но отдельный ключ удобней.
Цитата flegont ( ) кириллические имена У меня открывает, но файл должен быть в этом же каталоге tonio_k, Еще раз повторюсь я бы с удовольствием откажусь от внешних словарей по умолчанию если мы с вами как нибудь в месте посидим в дискорде и решим как это все дело совместить. В словаре особенность он ищет хотя бы 1 пару в виде ключ"пробел обязателен"="пробел обязателен"значение
У вы эта неделя у меня занята может на следующей буду пилить код дальше
|
|
| |
Pin240 | Дата: Понедельник, 25.07.2022, 19:39 | Сообщение #12 |
Группа: Пользователи
Сообщений: 104
Статус: Offline
| Цитата flegont ( ) Ноут MSI Katana, Win 10, проц Core i7 8 ядер, 16 гб памяти. Спасибо за инфу о работе на Win10
|
|
| |
tonio_k | Дата: Среда, 27.07.2022, 00:50 | Сообщение #13 |
Группа: Пользователи
Сообщений: 139
Статус: Offline
| Цитата Pin240 ( ) Picobook_TTS_Offline_Console_V3.3_CC (CC - CMD Control) При запуске некий файл не находит.
|
|
| |
tonio_k | Дата: Среда, 27.07.2022, 01:44 | Сообщение #14 |
Группа: Пользователи
Сообщений: 139
Статус: Offline
| Вот я подскочил посредине ночи от пищалки по окончании записи Пищалку лучше по умолчанию отключать!
|
|
| |
flegont | Дата: Среда, 27.07.2022, 12:12 | Сообщение #15 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Не вставляет код как надо, почему-то. Хотел показать рабочий пример от Silero. как скачать себе модель V3 и с помощью нее локально на компе озвучивать текст. На компе нужен Python 3 с инсталлированным в нем PyTorch 1.10+
Сообщение отредактировал flegont - Среда, 27.07.2022, 12:15 |
|
| |