[ ]
  • Страница 1 из 15
  • 1
  • 2
  • 3
  • 14
  • 15
  • »
MyTTS (форум) » Программы, использующие синтез речи в Windows » другие программы » Picobook TTS Offline (Программа на python 3, не использующая SAPI)
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 теги для модели

Примеры звучания прикреплены
Прикрепления: book_2_aridar_4.mp3 (541.8 Kb) · book_2_baya_3.mp3 (532.3 Kb) · book_3_kseniya_.mp3 (490.9 Kb) · book_4_xenia.mp3 (463.7 Kb) · book_4_xenia5.mp3 (470.2 Kb)


Сообщение отредактировал 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 имя_файла_словаря wink
А в остальном - работает!  victory


Сообщение отредактировал 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 от разработчика и с пустым - пока не заметил wink


Сообщение отредактировал 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 пару в виде ключ"пробел обязателен"="пробел обязателен"значение

У вы эта неделя у меня занята может на следующей буду пилить код дальше sad
 
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)

При запуске некий файл не находит.
Прикрепления: 3472984.png (3.6 Kb)
 
tonio_kДата: Среда, 27.07.2022, 01:44 | Сообщение #14
Группа: Пользователи
Сообщений: 139
Статус: Offline
Вот я подскочил посредине ночи от пищалки по окончании записи shok 
Пищалку лучше по умолчанию отключать!
 
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
 
MyTTS (форум) » Программы, использующие синтез речи в Windows » другие программы » Picobook TTS Offline (Программа на python 3, не использующая SAPI)
  • Страница 1 из 15
  • 1
  • 2
  • 3
  • 14
  • 15
  • »
Поиск:

Общение