Demagog TTS
|
|
flegont | Дата: Четверг, 22.07.2021, 01:25 | Сообщение #1 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Начало темы здесь (ссылка на архивную копию форума mytts.info)
(44,0 Mb) архивная копия начала текущей ветки с форума mytts.info - для офлайн просмотра и поиска по всем страницам
Скачать Demagog.zip
Домашняя страница
|
|
| |
BETER | Дата: Пятница, 28.10.2022, 15:31 | Сообщение #46 |
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Цитата flegont ( ) Технология "развертки цикла" в последовательность вызовов model.save_wav, Можно попробовать отправлять по фрагментам, пока не закончит - новый не отправлять. Если и так виснит, то можно после сохранения файла убивать процесс model.save_wav
|
|
| |
flegont | Дата: Пятница, 28.10.2022, 19:25 | Сообщение #47 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Помог перенос 2 строчек внутрь цикла по фрагментам: ... device = torch.device('cuda') for i in range(m, n): ... model = torch.package.PackageImporter(local_file).load_pickle("tts_models", "model") model.to(device) audio_paths = model.save_wav(ssml_text=a, speaker = speaker, sample_rate=rate, put_accent=put_accent, put_yo=put_yo) WaitUntilAccess(audio_paths, time_to_wait) ...
Т.е. при работе с cuda перед озвучкой очередного фрагмента надо заново инициализировать модель. Уж не знаю, почему. А это - довольно длительно и убивает весь выигрыш от использования видеокарты. Озвучка рассказа В. Журавлевой "Нахалка":
CPU: 1 мин 22 сек CUDA: 1 мин 42 сек
Ситуация в точности совпала с описанной на Хабре в одном из комментариев к статье о голосах Silero: Почему на видеокарте получается даже дольше?! Ответ: Ой, не знаю, честно говоря, мы на видеокартах публичные модели не тестировали... Что ж... Отрицательный результат - тоже результат (с)
|
|
| |
flegont | Дата: Суббота, 29.10.2022, 22:25 | Сообщение #48 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Цитата tonio_k: протестируйте у себя на вашем мощном ПК, есть ли вообще опережение скорости создания аудио перед длиной воспроизведения аудио плюс! время на работу словарей для каждого абзаца Ноутбук MSI Katana 11th Gen Intel® Core i7-11800H @ 2.30GHz, RAM 16Gb Windows 10 Home 64 bit Текст "Нахалка.txt" Словари: 01_numbers.rex; 09_Орфоэпия.dic Выполнялся скрипт Text to Aloud.py с вставками для замера времени и подсчета средних значений (сек) на 1 фрагмент
# Python>TAtimetest.py
применение словарей 9.27338373093378 создание аудио 0.9043059576125372 чтение вслух 49.06066167922247
Замечание. Вместо функции model.save_audio() в этом скрипте используется model.apply_tts() - созданное аудио не записывается в файл, а запоминается в переменной, которая потом читается вслух.
|
|
| |
flegont | Дата: Воскресенье, 30.10.2022, 11:37 | Сообщение #49 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Тот же тест на слабом ноуте Acer Travel Mate B1 Intel ® Celeron ® N4120 CPU @ 1.10GHz, RAM 4Gb Замер среднего времени: секунд / 1 фрагмент читаемого текста
# Python>TAtimetest.py
применение словарей 33.095999218168714 создание аудио 8.893268403552828 чтение вслух 50.99063183012463
|
|
| |
flegont | Дата: Понедельник, 07.11.2022, 14:58 | Сообщение #50 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Попробовал погонять свою сборку Demagog-x64-Silero от 03.11.22 на английских текстах.
Выявилась интересная подробность, на русскоязычных текстах такого не наблюдалось. Если озвучиваемый фрагмент текста, вместе с добавленными в него тегами ssml, был заведомо меньше 1000 символов, то всё равно временами возникала ошибка. Всегда одного вида, например:
Text may be too long. Tensor a 5016 is large then tensor b 5000 ...
Тензор с именем "a" всегда получался чуть больше 5000, а тензор "b" - ровно 5000. Как будто модели не хватало зарезервированного места для неких промежуточных данных. Я вставил в скрипт команду для печати каждого озвучиваемого фрагмента в окне Статистики, и смотрел: есть ли особенности во фрагментах, приводящих к ошибке?
1) В таких фрагментах было много сокращений, содержащих точки. Тут как бы всё понятно - лишние точки в середине предложения. Английские / американские тексты вообще пестрят подобными сокращениями: Mr. Mrs. Ms. Prof. M.D. Ph.D. Sc.D. и т.д. Что такое S.C. в первом абзаце рассказа O.Henry "Jeff Peters as a Personal Magnet"? Это штат Южная Каролина - кто бы мог подумать?
После раскрытия всех сокращений в тексте с помощью соответствующего словарика, рассказ О.Генри озвучился успешно. Настала пора попробовать на целой книжке, уже другого автора. Сперва все шло хорошо, потом... блымс! см. выше. Что ж такого на этот раз?!
2) Сбойный фрагмент на экране выглядел странно - обилие кавычек " будто таракан наследил. Вот оно что! Прямая речь в английском выделяется на письме кавычками. Весь фрагмент представлял из себя оживленный диалог главных героев. Тогда я применил ко всей книжке dic-словарик из одного правила: *"*= и запустил озвучку заново. Вот теперь всё прошло без запинки.
Donald Westlake "The Hot Rock". 8,62 авторских листов Время озвучки: 30 мин. 40 сек.
Вывод: для моделей Silero в тексте желательно оставлять только Cyr / Lat символы и существенные знаки препинания: . ! ? , ; : - – влияющие на произношение. При этом знаки . ! ? уместны лишь в конце предложения. Кавычки, скобки и прочий мусор следует безжалостно удалять.
|
|
| |
dlr56686681 | Дата: Четверг, 17.11.2022, 21:38 | Сообщение #51 |
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Цитата flegont554Попробовал погонять свою сборку Demagog-x64-Silero от 03.11.22 на английских текстахПопробовал часик послушать и так и не смог привыкнуть. До этого слушал Edge TTS Michele
|
|
| |
flegont | Дата: Пятница, 18.11.2022, 10:21 | Сообщение #52 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Цитата так и не смог привыкнуть Ну, дикторы в публичных моделях Silero TTS - уж какие есть, английских аж 118 штук Так понимаю, что нанимать профессиональных чтецов для обучения моделей, ребятам из Silero - покамест не по карману.
А привычка, да - великое дело, тут ничего не скажешь.
|
|
| |
Pin240 | Дата: Вторник, 22.11.2022, 21:40 | Сообщение #53 |
Группа: Пользователи
Сообщений: 104
Статус: Offline
| Цитата flegont ( ) Вывод: для моделей Silero в тексте желательно оставлять только Cyr / Lat символы и существенные знаки препинания: . ! ? , ; : - – влияющие на произношение. При этом знаки . ! ? уместны лишь в конце предложения. Кавычки, скобки и прочий мусор следует безжалостно удалять. Я когда свою обертку делал Сразу все лишние символы в топку отправил. Были моменты когда были тексты без знаков препинания, с переводом строк- как итог получал слишком много символов на входе но это тоже уже подправил
|
|
| |
flegont | Дата: Среда, 23.11.2022, 11:43 | Сообщение #54 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| # Получить информацию об алфавите модели
import torch
local_file = 'model.pt' # модель Silero для некоторого языка
model = torch.package.PackageImporter(local_file).load_pickle("tts_models", "model")
print(model.symbols)
Результаты, для Russian и English:
_~|!+,-.:;?абвгдежзийклмнопрстуфхцчшщъыьэюяё–…
_~| !"',-.:;?abcdefghijklmnopqrstuvwxyz
Всё, что не входит в этот перечень - надо удалять.
А для английского оказалось, что и разрешенный символ " надо убирать. Прямая речь в английском закавычивается, и при том может состоять из нескольких предложений, типа: "Sentence one. Sentence two. Sentence three. Sentence four." Вот на таких вывертах и возникает ошибка Perhaps text too long, хотя он <1000 символов, включая теги ssml. А некоторые английские авторы помечают прямую речь знаком " только в начале, типа: "Oh, my God! I say
Дескать, и так всё понятно А как на это отреагирует модель... Так что двойную кавычку - долой!
|
|
| |
tonio_k | Дата: Среда, 23.11.2022, 16:50 | Сообщение #55 |
Группа: Пользователи
Сообщений: 139
Статус: Offline
| Можно в скрипт добавить (через регулярные выражения) проверку текста на недопустимые символы на этапе, когда уже все словари отработали. С выводом сообщения: В тексте найдены недопустимые символы: список символов которые могут привести к ошибке записи в аудио. Очистить текст от символов? Да/Нет. Если нет, то прервать записи и пусть эти символы в log.txt сохраняться и откроются в окне 0-статистика что бы их изучить можно было.
|
|
| |
flegont | Дата: Среда, 23.11.2022, 17:04 | Сообщение #56 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Согласен, такая опция будет полезна. Подумаю над реализацией.
|
|
| |
tonio_k | Дата: Среда, 23.11.2022, 17:15 | Сообщение #57 |
Группа: Пользователи
Сообщений: 139
Статус: Offline
| Дополнение. Лучше не символы выводить, а символы в составе слова (если он не отдельно стоящий) для удобного поиска. Примерно в таком виде: Сло́во [о́] Де́лô [е́ô]
|
|
| |
flegont | Дата: Среда, 23.11.2022, 22:08 | Сообщение #58 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| "Правка - Найти / Заменить - Шаблон REX - Подсчитать"
# Подсчет совпадений в "Efremov_Tais-Afinskaya.MFWeIg.281283.fb2"
[^_~|!+,-.:;?а-яё–…\s]+ - 1039
# Подсчет совпадений в "Pereslegin_S._Vtoraya_Mirovaya_Voyina_M.fb2"
[^_~|!+,-.:;?а-яё–…\s]+ - 8670
В книжке средних размеров недопустимых символов > 1000, а в толстой книжке > 8000 Выдавать их список на просмотр - нерационально, избыточная информация. Проще одним махом удалить все недопустимые и сообщить количество удаленных.
P.S. В список разрешенных символов надо включать пробел. В английской модели пробел стоит на 4 месте в model.symbols, а в русской - в конце, и его не видно при print(model.symbols)
|
|
| |
tonio_k | Дата: Четверг, 24.11.2022, 07:36 | Сообщение #59 |
Группа: Пользователи
Сообщений: 139
Статус: Offline
| Цитата flegont ( ) В книжке средних размеров недопустимых символов > 1000, а в толстой книжке > 8000 Это после применения словарей?
Тут надо уточнить: 1) символы просто недопустимые, или реально приводят к ошибке записи в аудио? 2) если приводят к ошибке, то лучше все же предупредить, чем крах получить. 3) принудительно удалить "ВСЕ недопустимые символы", мне кажется, это должен быть контролируемый процес. Удаление символов внутри слова ломает слово. Значит надо это слово в словари пользователю вносить. Если делать проверку на символы ПЕРЕД словарями, то она может быть не эффективна, т.к. замена этого символа может оказаться в пользовательском словаре.
Сообщение отредактировал tonio_k - Четверг, 24.11.2022, 07:50 |
|
| |
flegont | Дата: Четверг, 24.11.2022, 09:15 | Сообщение #60 |
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
| Пока я знаю только 2 символа, которые у меня приводили к ошибке записи аудио. 1. " - только для английских голосов 2. символ с кодом 2 - образовался в большом количестве после copy/paste из pdf-файла, открытого в браузере, в окно Демагога. На экране ничем не отличался от пробела и разрывал слова там, где в pdf были переносы слов.
Оба символа были удалены через Найти / Заменить - Заменить все.
В общем, да, я согласен: процесс должен быть контролируемым, ведь символ 2 я нашел чисто случайно, а так бы неизвестно, сколько времени возился бы. Но пользователя надо предупредить, что выполняется экстраординарная проверка, чтоб был готов к обилию инфы в окне Статистики. Т.о. эта проверка должна быть не автоматической, а по требованию пользователя. Так сказать, тотальный обыск текста
P.S. Хотелось бы знать, почему модели в основном сами игнорируют символы вне своего алфавита, типа скобок разного вида, но вдруг сбиваются на служебных символах, типа #2, в то время, как служебные #13#10 (возврат каретки, перевод строки) воспринимают нормально.
|
|
| |