[ ]
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: flegont  
Сборка Demagog для models SILERO от tonio_k (ПЕРЕНЕСЕНО)
notnickДата: Суббота, 11.01.2025, 18:39 | Сообщение #31
Группа: Пользователи
Сообщений: 35
Статус: Offline
Цитата Pin240 ()
api-ms-win-core-path-l1-1-0.dllМожно выдрать из моей сборки. благо компилятор проверяет все зависимости
спасибо, но tonio_k оказался прав - 32-битка открывается без ошибок!
 
flegontДата: Суббота, 11.01.2025, 18:39 | Сообщение #32
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline

Цитата
Цитата notnick () заметно быстрее чем сборка Tonio

Ноутбук MSI Katana, Win 10 64x
Текст: рассказ В. Журавлевой "Нахалка". Знаков (с пробелами): 14186 = 0,35 авторских листов
Параметры Silero TTS: потоков 4; частота 48000; диктор kseniya

Время генерации аудио (ч:мм:сс):

1) Picobook (графический; режим словаря отключен): 0:01:47

2) Сборка от tonio_k (Demagog32x+Python3.7.9): работа словарей: 0:00:09; генерация аудио: 0:01:47

Т.о. скорость обеих сборок в этом эксперименте - одинакова.

P.S. Предполагаю, что иначе и быть не может, ведь обе сборки используют один и тот же прием - вызов интерпретатора Python, как внешней программы. Но, тут нужны дополнительные эксперименты.


Сообщение отредактировал flegont - Четверг, 01.12.2022, 16:57
 
flegontДата: Суббота, 11.01.2025, 18:40 | Сообщение #33
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
Продолжение теста (см. сообщение #112)

То же оборудование и те же настройки, что в предыдущем сообщении.

Текст В.Губарев "Путешествие на утреннюю звезду". Знаков (с пробелами): 148717 = 3,72 авторских листов

Время генерации аудио, мин:

1) Picobook: 18
2) Сборка tonio_k (Demagog32x+Python3.7.9): 15
3) Моя сборка (Demagog-x64-Silero): 14

Текст Р.Кирлинг "Отважные мореплаватели". Знаков (с пробелами): 196267 = 6,01 авторских листов

Время генерации аудио, мин:

1) Picobook: 24
2) Сборка tonio_k (Demagog32x+Python3.7.9): 28
3) Моя сборка (Demagog-x64-Silero): 24

Каких-то существенных различий пока не видно.


Сообщение отредактировал flegont - Пятница, 02.12.2022, 18:55
 
flegontДата: Суббота, 11.01.2025, 18:40 | Сообщение #34
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline

Цитата
https://cloud.mail.ru/public/BoVX/nsMxf3fVa


Покамест не сравнение, а ориентир.
Словарные замены в сборке Tonio_k (и в моей тоже) выполняет Demagog, он же - источник интерфейса, и средство доступа к интерпретатору Python. Посмотрим, как Demagog справится с этим текстом.

Текст: взят по упомянутой ссылке, размер: 11 мб. Знаков (с пробелами): 11862033 = 296,55 авторских листов.

Ноутбук MSI Katana
Загружаем текст в любое окно Demagog, версия 411 x32 из сборки Tonio_k
Словарь расстановки ударений из той же сборки: 95.NEW_Орфоэпия(phoneme).dic 2.9 миллиона правил; в Настройках выбран хеш-алгоритм. Нажимаем кнопочку "Измененнный текст"

В окне 0 - Статистика имеем:

# Текст "Release-that-Witch_Освободите-эту-Ведьму.txt" измененный по "95.NEW_Орфоэпия(phoneme).dic" (0:00:33)

ReleasethatWitch, освобод+Ите эту в+Едьму ф+Айл был сгенерирован про+Ектом ранобехаб орг.
Не для комерческого исп+Ользования, Том 1
глав+А 1. С сег+Одняшнего дня я насл+Едный принц.,Ченг Ян поч+Увствовал, что ктото зв+Ал его. в+Аше выс+Очество, прош+У, пр+Оснитесь… Он отверн+Улся, но голоса, кот+Орые он сл+Ышал, не исч+Езли. на с+Амом д+Еле они, наобор+От, ст+Али д+Аже гр+Омче. зат+Ем он поч+Увствовал, что ктото остор+Ожно

и т.д. и т.п.

Затраты времени на обработку этого большого текста большим словарем  указаны в скобках в заголовочной строке результата
Ноль часов, ноль минут, тридцать три секунды.
А  в сборке это всё происходит автоматически, потом весь текст уже с проставленными ударениями передается питон-скрипту на озвучку. Ну, уж озвучивать 11 мб сборка будет дооооолго... но ведь нас интересовало только время работы словаря. Оно - вполне удовлетворительное.


Сообщение отредактировал flegont - Пятница, 02.12.2022, 21:17
 
tonio_kДата: Суббота, 11.01.2025, 18:40 | Сообщение #35
Группа: Пользователи
Сообщений: 178
Статус: Offline
Цитата Pin240 ()
Вот бы попытаться перенести ваш способ на питон
я пробовал на lua через ассоциативные таблицы создавать словарные замены. Работает относительно быстро, но проблема в регистре - lua регистрозависим. Отсюда двойная работа с текстом: нужно делать зеркало текста в нижнем регистре, и замены делать по зеркалу, вставляя замены в оригинале. В итоге, модуль функции работы словаря на Lua в моём исполнении
интересна но ощутимо медленнее чем исполнение в Демагоге. Поэтому, как интересное решение - да, как полезное - нет (ну может, в неких частных случаях)
 
flegontДата: Суббота, 11.01.2025, 18:40 | Сообщение #36
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
Я делал хеш- алгоритм, как и всего Демагога на Дельфи.
И не уверен, что на интерпретируемых языках, типа питона, луа и т.п. это возможно повторить.
Питон медленнее в 50..100 раз.

Но сам принцип ХА прост.
Пусть словарь - это текстовый файл, состоящий из строе - правил вида:
слово=замена
И количество строк в словаре N

Создаем массив строк h, первоначально они все пустые, размер h пусть будет 3*N
Точнее, ближайшее к этому простое число! Пусть это будет M
Пробегаем в цикле по словарю, и для каждого правила считаем хеш -это будет z - целое число от 0 до M-1
Я использую PJWhash - хеш-функцию Вайнбергера для строк.
Если h [z]пусто, то h [z]= 'слово=значение'
Иначе проверяем, свободно ли h[z+1] и т.д.
Когда цикл по словарю закончен, хеш таблица - заполнена.

Замены в тексте по словарю.
Превращаем текст в массив слов w, по разделителям: пробел, перевод строки, табуляция.
В цикле по w вычисляем хеш очередного слова w, пусть это будет некое число.
Проверяем h[z]. Если пусто, то для этого слова нет правила в хеш-таблице, переходим к следующему слову.
Если не пусто, проверяем, совпадает ли 1е слово в правиле h [z]cо словом w

Если да, то правило для этого слова найдено, производим замену по этому правилу.
Иначе проверяем правило h[z+1] и т.д.
Когда цикл по массиву слов закончен - все замены сделаны. Слепляем массив слов обратно в единый текст.

Тут я опускаю детали: символы перевода строки надо тоже запоминать в массиве слов, как особые "слова", чтобы при конкатенации массива слов восстановить по ним переводы строк т.е деление текста на абзацы. Кроме того, слова в тексте м.б. окружены скобками, кавычками и др.знаками препинания, при составлении х-т и при проверке слов по х-т надо этот мусор как-то игнорировать. А еще: учитывать при заменах регистр букв или нет.

Но общий принцип понятен.

На оф.сайте Демагога есть глава "3. Нормальные герои или повесть об алгоритме словарныз замен". Там рассказ и о моих попытках научить ХА понимать правила со звездочками. Хотя тут уже быстродействие сильно падает.

Изначально хеш-алгоритм, входящий в состав Демагога, я сделал доступным встроенному интерпретатору Lua. Lua просто вызывает соответствующую функцию Дельфи. А с недавних пор, в Демагог64 открыл доступ этой же функции интерпретатору Python.  Вот и весь секрет. Это не луа и не питон - быстрые. Это дельфи - быстрый, на котором написан Демагог.


Сообщение отредактировал flegont - Суббота, 03.12.2022, 10:30
 
flegontДата: Суббота, 11.01.2025, 18:40 | Сообщение #37
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
Ну, тут зависит от того, как к проблеме подойти, знатоки C++ говорят, что всегда могут написать прогу, аналогичную к-либо дельфийской и будет работать в полтора раза быстрее. Не знаю, не видел  smile 
Зато о питоне за сегодняшний вечер мое мнение заметно улучшилось.
Подробности завтра, а предварительный результат показан ниже.

Ноут: MSI Katana
Текст: Release-that-Witch_Освободите-эту-Ведьму.txt
Словарь ударений: 95.NEW_Орфоэпия(phoneme).dic
Прога: тестовый питон-скрипт из 67 строк

# Python>Test HA.txt

Время, сек 9.2

ReleasethatWitch, Освободите эту Ведьму Файл был сгенерирован про+Ектом ранобехаб орг. Не для комерческого исп+Ользования, Том 1 Глава 1. С сег+Одняшнего дня я насл+Едный принц.,Ченг Ян поч+Увствовал, что ктото зв+Ал его. Ваше Высочество, прош+У, пр+Оснитесь… Он отверн+Улся, но голоса, кот+Орые он сл+Ышал, не исч+Езли. На самом д+Еле они, наобор+От, ст+Али д+Аже гр+Омче. Затем он поч+Увствовал, что ктото остор+Ожно д+Ёргает его за рук+Ав. Ваше Высочество, мой насл+Едный пр+Инц! Ченг Ян р+Езко откр+Ыл глаза. Хорошо знак+Омая ему обстан+Овка исч+Езла, раб+Очего стола нигд+Е не б+Ыло, и прив+Ычные перегор+Одки, спл+Ошь ус+Еянные почт+Овыми адресами пропали. Их замен+Ил стр+Анный пейз+Аж, кр+Углая общ+Ественная пл+Ощадь, кот+Орая со вс+Ех сторон был+А окружен+А маленькими кирп+Ичными д+Омиками, и в+Иселица, кот+Орая был+А устан+Овлена в самом ц+Ентре пл+Ощади. Сам он сид+Ел за стол+Ом по друг+Ую сторону от в+Иселицы. Вместо уд+Обного 
...
(и т.д и т.п.)
...
валась она. Я верн+Улся, Роланд улыбн+Улся, вход+Я в дом. Путь перед ним простир+Ался вперёд. Независимо от того, как+Ое б+Удущее их ожид+Ает, это был+А соверш+Енно н+Овая стран+Ица. Конец.,
 
flegontДата: Суббота, 11.01.2025, 18:40 | Сообщение #38
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
Тест на питоне алгоритма из сообщения #126
Использован тот факт, что в питоне нет надобности конструировать хеш-таблицу, она там есть и называется "тип данных - словарь".
Остается только заполнить его, в соответствии с тектовым файлом словаря *.dic
Подразумевается, что текстовый файл словаря содержит правила, вида слово=замена причем слово - в нижнем регистре; кодировка файлов словаря и текста для правки словарем - ANSI.

# Python>TestHashAlgorithm.py

10%
20%
30%
40%
50%
60%
70%
80%
90%
100% Время, сек: 4.4 

ReleasethatWitch, освобод+Ите эту в+Едьму ф+Айл был сгенерирован про+Ектом ранобехаб орг. 
 Не для комерческого исп+Ользования, Том 1 
 глав+А 1. С сег+Одняшнего дня я насл+Едный принц.,Ченг Ян поч+Увствовал, что ктото зв+Ал его. в+Аше выс+Очество, прош+У, пр+Оснитесь… Он отверн+Улся, но голоса, кот+Орые он сл+Ышал, не исч+Езли. На самом д+Еле они, наобор+От, ст+Али д+Аже гр+Омче. зат+Ем он поч+Увствовал, что ктото остор+Ожно д+Ёргает его за рук+Ав. в+Аше выс+Очество, мой насл+Едный пр+Инц! Ченг Ян р+Езко откр+Ыл глаза. хорош+О знак+Омая ему обстан+Овка исч+Езла, раб+Очего стола нигд+Е не б+Ыло, и прив+Ычные перегор+Одки, спл+Ошь ус+Еянные почт+Овыми адресами пропали. Их замен+Ил стр+Анный
...
...
пож+Аловать дом+Ой, м+Ягко поздор+Овалась она. Я верн+Улся, Роланд улыбн+Улся, вход+Я в дом. п+Уть перед ним простир+Ался вперёд. незав+Исимо от того, как+Ое б+Удущее их ожид+Ает, это был+А соверш+Енно н+Овая стран+Ица. кон+Ец.,
 
tonio_kДата: Суббота, 11.01.2025, 18:41 | Сообщение #39
Группа: Пользователи
Сообщений: 178
Статус: Offline
Красивый код  получился! Даже я (не зная питон) смог его прочитать что он делает  . Первый шаг к созданию полноценного модуля словарных замен на питоне сделан. Осталась самое малое - увеличить его раза эдак в 10 что бы он и звёздочки поддерживал и чувствительность к регистру регулировалась. К стати, как этот скрипт с чувствительностью регистра сейчас? Он ведь ищет с учётом регистра?(Не могу пока тестировать скрипт ПК далеко)
И ещё, меня беспокоит перспектива. Помню, на lua простая замена у меня тоже очень быстро отрабатывала, даже быстрее штатной string.gsub(). Но когда добавил регулировку чувствительности к регистру, попытался поддержку звёзд добавить, то тормоза полезли в геометрической прогрессии с каждым добавлением и дальше искать уже не хотелось. Возможно, криво написал, но все же...


Сообщение отредактировал tonio_k - Вторник, 06.12.2022, 12:49
 
flegontДата: Суббота, 11.01.2025, 18:41 | Сообщение #40
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
str.casefold() приводит к нижнему регистру проверяемое слово, а словарь изначально в нижнем регистре по левым частям правил. Так что, замены в тексте от регистра не зависят. По крайней мере, мне так кажется  smile

Теперь надо обобщить на:
1. Правила, содержащие слева более одного слОва
2. Правила, у которых в левой части словА содержат звездочки справа/слева/с обеих сторон
3. Возможность включать зависимость замен от регистра

Правила с отдельно стоящми * полагаю, поддерживать не надо. Они - самая тормозная часть хеш-алгоритма. Если уж на дельфи тормозит, то на питоне или луа и подавно.


Сообщение отредактировал flegont - Вторник, 06.12.2022, 14:18
 
flegontДата: Суббота, 11.01.2025, 18:41 | Сообщение #41
V.I.P.
Группа: Модераторы
Сообщений: 141
Статус: Offline
95.NEW_Орфоэпия(phoneme).dic - это словарь из сборки tonio_k, на нее в этой ветке есть ссылка на скачивание, выше, на стр.4 если правильно помню. В ней содержится самый большой словарь ударений русского языка, какой я когда-либо видел  ok

Я основываю свои наработки на таком формате словарей *.dic:

# пример
$СССР=Сов+етский Со+юз
сама=сам+а
у окна=у окн+а
туник*=тун+ик
*ой волны=ой волн+ы
*чертя*=черт+я

# строка комментария; $ учитывать регистр; * отсутствие границы слова со стороны звездочки
Хеш-алгоритм сказочно быстро работает на правилах вида слово=замена.
Поэтому гиганский словарь ударений так стремительно срабатывает.

На словосочетаниях (без звездочек) - ХА уже несколько медленнее, на правилах со звездочками - еще медленнее.
Вариант со словосочетаниями - на питоне хочу сделать его иначе, чем в Демагоге.
Есть надежда ускорить работу ХА в этом случае.
Посмотрим, оправдается ли она  wink


Сообщение отредактировал flegont - Среда, 07.12.2022, 22:05
 
tonio_kДата: Суббота, 11.01.2025, 18:41 | Сообщение #42
Группа: Пользователи
Сообщений: 178
Статус: Offline
Сборка Demagog для models silero от tonio_k от 2022-12-16

Сборка полностью портабельная - скачал и сразу можно озвучивать книги

 (219kb) Пошаговая инструкция PDF

 Скачать (312Mb)

Внимание! При распаковке размер папки Demagog занимает 1,2 Gb!

Google Диск

Изменения:



Сообщение отредактировал tonio_k - Пятница, 16.12.2022, 23:39
 
notnickДата: Суббота, 11.01.2025, 18:41 | Сообщение #43
Группа: Пользователи
Сообщений: 35
Статус: Offline
tonio_k, замена для экспорта в wav работает так же?
 
tonio_kДата: Суббота, 11.01.2025, 18:41 | Сообщение #44
Группа: Пользователи
Сообщений: 178
Статус: Offline
Попробуйте, должно работать. Перепишите поверх сборки
 
tonio_kДата: Суббота, 11.01.2025, 18:42 | Сообщение #45
Группа: Пользователи
Сообщений: 178
Статус: Offline
Цитата notnick ()
для экспорта в wav

сделал для записи в аудио wav отдельные скрипты:
40_WAV - ОКНО - ОБРАБОТКА И ЗАПИСЬ КНИГИ В ТЕКУЩЕМ ОКНЕ.lua
41_WAV - ПАКЕТНАЯ ОБРАБОТКА И ЗАПИСЬ КНИГ В ПАПКЕ TEMP.lua

если будет следующая сборка, то они будут в комплекте с таким же наименованием

Принцип тот же. Не смотря на настройки mp3 выгружаться будут только wav

Или склеивать wav тоже нужно?
Прикрепления: 3869053.zip (12.5 Kb)


Сообщение отредактировал tonio_k - Понедельник, 19.12.2022, 00:37
 
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Общение