Demagog TTS
Модератор: flegont
- tonio_k
- V.I.P.
Demagog TTS
Поиск. Все подходящие.
критерий поиска:сам текст:
Результат в окне Статистка выводится вперемешку - без сохранения порядка строк, который был в оригинале. Можно как то сделать "последовательный" вывод строк сверху вниз.
критерий поиска:
Код: Выделить всё
@^[^\=]*\=[^\=]*вОрон\b[^\=]*$
► Показать
- flegont
- V.I.P.
Demagog TTS
"Все подходящие" выводятся в окно Статистики в алфавитном порядке, с игнорирование дубликатов. Если какое-то подходящее слово встречается в тексте 100500 раз, то нет смысла выдавать его столько же раз в Статистику. А алфавитный порядок - это необходимое условие, чтобы программа могла исключать дубликаты.
- balaamster
- Обыватель
Demagog TTS
Эта цитата натолкнула меня на идею: "А что, если сделать синтезированную речь с посторонним фоном или музыкальной подложкой (типа 'Модель для сборки')?"
Начал изучать возможности FFmpeg. И, конечно же, он позволил реализовать задуманное.
У FFmpeg есть замечательный обработчик "-filter_complex", который позволяет на вход отдельных фильтров подавать сразу несколько потоков (аудио или видео, в зависимости от фильтра)
У фильтров общий вид такой:
► Показать
Код: Выделить всё
-loglevel -8 -y -i %1 -i C:\temp\fon.mp3 -filter_complex "[0]aecho=0.8:0.6:20|40:0.2|0.2[b];[b][1]amix=inputs=2:duration=first:weights=1 0.3" -b:a 128k %2
► Показать
- flegont
- V.I.P.
Demagog TTS
ААААААА!!!!!! Вот это да! Прекрасный пример Custom encoder. Я даже не подозревал, что такое возможно
- tonio_k
- V.I.P.
Demagog TTS
balaamster, отличная находка! Я сам противник посторонних фоновых мелодий. Но знаю, насколько для других это оживляет произведение. И книги я записываю не только для себя.
Поэтому возникли такие перспективные идеи:
Я так понял, мелодия одна на всё произведение. Есть мысль разнообразить репертуар путем добавления в FilterAndAudioToAll(folder, mask, diclist, remsource) счетчик времени или (правильнее счетчик файлов), который будет через каждый, например, третий файл менять содержимое C:\temp\fon.mp3 - путем копирования с переименованием в fon.mp3 из заранее подготовленной папки с подборкой mp3 файлов фоновых мелодий. - Тут еще надо реализовать эту подстановку "по кругу"
Отправлено спустя 2 часа 16 минут 22 секунды:
Как отловить fnd, если в диалоговом содержимое строки fnd вручную удалили через Ctrl+A, Del ?
так ошибку дает:
Поэтому возникли такие перспективные идеи:
Я так понял, мелодия одна на всё произведение. Есть мысль разнообразить репертуар путем добавления в FilterAndAudioToAll(folder, mask, diclist, remsource) счетчик времени или (правильнее счетчик файлов), который будет через каждый, например, третий файл менять содержимое C:\temp\fon.mp3 - путем копирования с переименованием в fon.mp3 из заранее подготовленной папки с подборкой mp3 файлов фоновых мелодий. - Тут еще надо реализовать эту подстановку "по кругу"
Тут нужно что то придумать, что бы при каждом накладывании C:\temp\fon.mp3 было затухание фоновой мелодии к концу каждого аудио файла книги - что бы избежать резких переходов между файлами.balaamster писал(а): ↑28 ноя 2018 21:32Настройка принимает такой видКод: Выделить всё
-loglevel -8 -y -i %1 -i C:\temp\fon.mp3 -filter_complex "[0]aecho=0.8:0.6:20|40:0.2|0.2[b];[b][1]amix=inputs=2:duration=first:weights=1 0.3" -b:a 128k %2
Отправлено спустя 2 часа 16 минут 22 секунды:
Как отловить fnd, если в диалоговом содержимое строки fnd вручную удалили через Ctrl+A, Del ?
Код: Выделить всё
fnd = Input(header,{askname..'='..fnd})
if not fnd then goto HALT end
fnd = fnd[1]
Код: Выделить всё
if fnd = '' then goto HALT end
- flegont
- V.I.P.
Demagog TTS
Код: Выделить всё
...
fnd = fnd[1] -- присваивание это знак равенства
if fnd == '' then goto HALT end -- сравнение на равенство это двойной знак равенства
- tonio_k
- V.I.P.
Demagog TTS
не хочет ловить. Вот пример скрипта по поиску в словаре rex.
При первом запускаем выходит окно с шаблоном текста ^(.)*=(.)*шаблОн(.)*$ встаю на него курсором - выделяю всю строку. Нажимаю Del и Оk. - надеюсь, что if fnd == '' then поймает пустое значение и даст команду сохранить файл со строкой fnd = defname и прервет выполнение скрипта (goto HALT). Но по факту if fnd == '' then этот момент не отлавливает - скрипт продолжает работать дальше
Отправлено спустя 17 минут 5 секунд:
Еще момент. fnd = Input(header,{askname..'='..fnd}) если нажать "Отмена" то скрипт прерывается, однако если нажать крестик (закрыть окно) то скрипт работает дальше. Крестик тоже как то бы отлавливать
► Показать
Отправлено спустя 17 минут 5 секунд:
Еще момент. fnd = Input(header,{askname..'='..fnd}) если нажать "Отмена" то скрипт прерывается, однако если нажать крестик (закрыть окно) то скрипт работает дальше. Крестик тоже как то бы отлавливать
- flegont
- V.I.P.
Demagog TTS
1) Глюк No 1 в функции Input(). Если в форме ввода только одна строка и эта строка ничем не заполнена, то вместо правильного результата {''} - массив из одного элемента, равного пустой строке, возвращается пустой массив без элементов {}
В следующей версии исправлю.
Как его обойти сейчас?
Вместо fnd = fnd[1] написать if #fnd == 0 then fnd = '' else fnd = fnd[1] end
2) Глюк No 2 в функции Input(). Не понимает, что закрытие формы ввода крестиком - это то же самое, что отказ от выбора кнопкой "Отменить".
Аналогично - исправлю в следующей версии.
В следующей версии исправлю.
Как его обойти сейчас?
Вместо fnd = fnd[1] написать if #fnd == 0 then fnd = '' else fnd = fnd[1] end
2) Глюк No 2 в функции Input(). Не понимает, что закрытие формы ввода крестиком - это то же самое, что отказ от выбора кнопкой "Отменить".
Аналогично - исправлю в следующей версии.
- tonio_k
- V.I.P.
Demagog TTS
Правило:
стоящего_ в_ *_ шагах_=стоЯщего в_ шагах
Текст:
стоящего_ в_ пяти_ шагах_ от_ противника_
почему на выходе склеивает пяти_ шагах
стоЯщего в_ пятишагах от_ противника_
Отправлено спустя 34 минуты 22 секунды:
все, сам понял! Должно быть так:
стоящего_ в_ *_ шагах_=стоЯщего в_ _ шагах
стоящего_ в_ *_ шагах_=стоЯщего в_ шагах
Текст:
стоящего_ в_ пяти_ шагах_ от_ противника_
почему на выходе склеивает пяти_ шагах
стоЯщего в_ пятишагах от_ противника_
Отправлено спустя 34 минуты 22 секунды:
все, сам понял! Должно быть так:
стоящего_ в_ *_ шагах_=стоЯщего в_ _ шагах
- balaamster
- Обыватель
Demagog TTS
Благодаря подсказке:tonio_k писал(а): ↑29 ноя 2018 00:53Есть мысль разнообразить репертуар путем добавления в FilterAndAudioToAll(folder, mask, diclist, remsource) счетчик времени или (правильнее счетчик файлов), который будет через каждый, например, третий файл менять содержимое C:\temp\fon.mp3 - путем копирования с переименованием в fon.mp3 из заранее подготовленной папки с подборкой mp3 файлов фоновых мелодий. - Тут еще надо реализовать эту подстановку "по кругу"
Реализовал такую версию FilterAndAudioToAllMod - работает аналогично FilterAndAudioToAll, но с дополнением.balabolka писал(а): ↑28 ноя 2018 23:39Зациклить фоновый файл можно и таким способом:
Код: Выделить всё
ffmpeg -i speech.wav -filter_complex "amovie=background.wav:loop=100[s];[0][s]amix=duration=shortest" output.wav
► Показать
Этот файл копируется в файл fon.mp3, в папке Demagog (передать фильтру абсолютные и относительные пути у меня не получилось) и подмешивается к речи.
Фильтр, подсказанный balabolka, создаёт зацикленный фон. Даже если речевой файл длиннее фона, отрывка без заполнения не останется.
Параметры для CustomEncoder
Код: Выделить всё
-loglevel -8 -y -i %1 -filter_complex "amovie=fon.mp3:loop=10[s];[0]aecho=0.8:0.6:20|40:0.2|0.2[b];[s]afade=t=in:ss=0:d=15[s];[b][s]amix=inputs=2:duration=first:weights=1 0.3" -ac 1 -b:a 64k %2
Плавное нарастание громкости в начале реализуется легко. Затухание можно будет реализовать только в скрипте с перекодировкой и использованием внешней утилиты mp3info, 66kb для определения длительности mp3-файла.
Так как речевой трек будет иметь разную длительность, то время (в секундах), с которого нужно начинать затухание нужно подбирать для каждого фрагмента отдельно и передавать его конвертеру.
Или можно определиться со средним временем звучания фрагмента и задать время начала затухания жёстко в строке настройки (самый последний короткий фрагмент останется без затухания)
Пример:
Код: Выделить всё
-loglevel -8 -y -i %1 -filter_complex "amovie=fon.mp3:loop=10[s];[0]aecho=0.8:0.6:20|40:0.2|0.2[b];[s]afade=t=in:ss=0:d=15[s];[s]afade=t=out:st=585:d=15[s];[b][s]amix=inputs=2:duration=first:weights=1 0.3" -ac 1 -b:a 64k %2
afade=t=out:st=585:d=15
st=585 - начало затухания с 585-й секунды, d=15 - длительность затухания 15 секунд. (рассчитано для файла длительностью 10 минут)
- flegont
- V.I.P.
- tonio_k
- V.I.P.
Demagog TTS
Пытаюсь повесить на комбинацию Ctrl+Shift+9 скрипт CtrlQuit.lua - экстренное прерывание работы демагога
► Показать
- flegont
- V.I.P.
Demagog TTS
_Tests_\CtrlQuit.lua
Иначе скрипт ищется в корневой папке Демагога. И вообще, скрипты по горячим клавишам к конкретному месту не привязаны, и могут находиться в любом месте на компьютере. В таком случае - указывать полный путь вместе с диском.
P.S. А у меня аналогичный скрипт называется HaltDemagog.lua
Иначе скрипт ищется в корневой папке Демагога. И вообще, скрипты по горячим клавишам к конкретному месту не привязаны, и могут находиться в любом месте на компьютере. В таком случае - указывать полный путь вместе с диском.
P.S. А у меня аналогичный скрипт называется HaltDemagog.lua
Код: Выделить всё
-- Экстренное прерывание программы
--(в случае мертвого цикла - не поможет)
os.exit()
- tonio_k
- V.I.P.
Demagog TTS
Единственный момент.
Горячие клавиши вполне себе работают при открытых словарях dic, rex - что немного выбивается из принятой в Демагоге традиционной защиты словарей от несанкционированных изменений.
С другой стороны, оооочень нужна возможность вызвать os.exit() при любом активном окне.
Если все же решите "включить защиту", то может стоит os.exit() - жестко вшить либо в саму программу Демагог - подарить ей горячую клавишу, либо повесить ее "навсегда" к комбинации, например Ctrl+Shift+0 или Ctrl+Shift+9 и запретить редактирование этой клавиши. - главное что бы она срабатывала при любых открытых окнах (в т.ч. со словарями)
Горячие клавиши вполне себе работают при открытых словарях dic, rex - что немного выбивается из принятой в Демагоге традиционной защиты словарей от несанкционированных изменений.
С другой стороны, оооочень нужна возможность вызвать os.exit() при любом активном окне.
Если все же решите "включить защиту", то может стоит os.exit() - жестко вшить либо в саму программу Демагог - подарить ей горячую клавишу, либо повесить ее "навсегда" к комбинации, например Ctrl+Shift+0 или Ctrl+Shift+9 и запретить редактирование этой клавиши. - главное что бы она срабатывала при любых открытых окнах (в т.ч. со словарями)
- flegont
- V.I.P.
Demagog TTS
1) Защиту не планирую. Назначение скриптов на горячие клавиши - полностью прерогатива пользователя. Под его ответственность
2) Клавиша Shift+Ctrl+0 - весьма красива своей некоторой уникальностью. Наверное, поэтому Майрософт, начиная с Windows Vista зарезервировала ее для нужд операционной системы. Так что, увы...
2) Клавиша Shift+Ctrl+0 - весьма красива своей некоторой уникальностью. Наверное, поэтому Майрософт, начиная с Windows Vista зарезервировала ее для нужд операционной системы. Так что, увы...
- tonio_k
- V.I.P.
Demagog TTS
flegont, Небольшое замечание. Формат - Фоновая картинка.
После выбора нового рисунка фон окна сразу не меняется. Нужно щелкнуть любое другое окно-вкладку. Только тогда изменения срабатывают.
После выбора нового рисунка фон окна сразу не меняется. Нужно щелкнуть любое другое окно-вкладку. Только тогда изменения срабатывают.
- flegont
- V.I.P.
Demagog TTS
Спасибо за сообщение.
На 10-ке у меня фон.картинка обновляется нормально - сразу; (похоже, 10-ка шибко умная ) , а на XP - возникает указанный глюк. Подумаю над этим.
На 10-ке у меня фон.картинка обновляется нормально - сразу; (похоже, 10-ка шибко умная ) , а на XP - возникает указанный глюк. Подумаю над этим.
- tonio_k
- V.I.P.
Demagog TTS
flegont,
Сервис – Чтение - Читать текст последовательными блоками с количеством символов.
хотел поднять вопрос на счет пауз в озвучке текста с экрана Демагога возникающих в результате затрат времени на обработку текста словарями.
Если все словари отключить, то чтение текста начинается практически мгновенно... (ну или с небольшой заминкой самого голосового движка) и между блоками паузы не заметны.
По идее, указание размера блока - это то же что и разбиение на сериалы.
Может немного поменять алгоритм?
Такие варианты:
1)
Запускаем чтение вслух содержимое окна.
На основании настроек создается первый файл сериала и он отправляется на озвучку голосовому движку - начинается чтение в слух (при этом на экран сам файл сериала не выводится – все выглядит так будто читается текущее окно). Т.е. первый запуск в любом случае предпологает паузу на обработку словарями – тут ничего не поделаешь.
С момента начала чтения голосом первого файла сериала запускается таймер который приостанавливает обработку словарями следующий файл сериала примерно на минуту меньше чем среднее время на прочтение соответствующего размера блока (или несколько минут в зависимости от размера блока и времени необходимого на его обработку). Или пользователь сам устанавливает необходимую ему паузу которую выяснит для себя экспериментальным путем.
При завершении чтения первого файла сериала Демагог кидает голосовому движку следующий уже обработанный следующий файл сериала и запускает таймер.
Получается что сериал создается не на всю книгу, а на текущий блок. Следующий блок начинает обрабатываться словарем в процессе чтения за некоторое время до его окончания.
2)
А можно вообще сделать по принципу шаг+1
Т.е. в начале обработать первый файл словарями, кидаем его на чтение голосовому движку.
Начинается чтение первого фала сериала и сразу параллельно запустить обработку второго файла сериала словарями.
Как только Заканчивается чтение первого файла, сразу кидается на чтение подготовленный второй файл голосовому движку. Начинается чтение и сразу параллельно запустить обработку третьего файла сериала
И т.д. до конца текста или нажатия кнопки стоп.
Немного (скорее пиково) будет возрастать нагрузка на ЦП при одновременном чтении и обработки текста словарями, но зато практически не будет пауз между блоками при чтении вслух с экрана.
Сервис – Чтение - Читать текст последовательными блоками с количеством символов.
хотел поднять вопрос на счет пауз в озвучке текста с экрана Демагога возникающих в результате затрат времени на обработку текста словарями.
Если все словари отключить, то чтение текста начинается практически мгновенно... (ну или с небольшой заминкой самого голосового движка) и между блоками паузы не заметны.
По идее, указание размера блока - это то же что и разбиение на сериалы.
Может немного поменять алгоритм?
Такие варианты:
1)
Запускаем чтение вслух содержимое окна.
На основании настроек создается первый файл сериала и он отправляется на озвучку голосовому движку - начинается чтение в слух (при этом на экран сам файл сериала не выводится – все выглядит так будто читается текущее окно). Т.е. первый запуск в любом случае предпологает паузу на обработку словарями – тут ничего не поделаешь.
С момента начала чтения голосом первого файла сериала запускается таймер который приостанавливает обработку словарями следующий файл сериала примерно на минуту меньше чем среднее время на прочтение соответствующего размера блока (или несколько минут в зависимости от размера блока и времени необходимого на его обработку). Или пользователь сам устанавливает необходимую ему паузу которую выяснит для себя экспериментальным путем.
При завершении чтения первого файла сериала Демагог кидает голосовому движку следующий уже обработанный следующий файл сериала и запускает таймер.
Получается что сериал создается не на всю книгу, а на текущий блок. Следующий блок начинает обрабатываться словарем в процессе чтения за некоторое время до его окончания.
2)
А можно вообще сделать по принципу шаг+1
Т.е. в начале обработать первый файл словарями, кидаем его на чтение голосовому движку.
Начинается чтение первого фала сериала и сразу параллельно запустить обработку второго файла сериала словарями.
Как только Заканчивается чтение первого файла, сразу кидается на чтение подготовленный второй файл голосовому движку. Начинается чтение и сразу параллельно запустить обработку третьего файла сериала
И т.д. до конца текста или нажатия кнопки стоп.
Немного (скорее пиково) будет возрастать нагрузка на ЦП при одновременном чтении и обработки текста словарями, но зато практически не будет пауз между блоками при чтении вслух с экрана.
- flegont
- V.I.P.
Demagog TTS
Указание размера читаемого блока - это совсем НЕ то же самое, что разбиение файла книги на сериал - т.е. множество мелких файлов. Массив блоков для чтения существует лишь в памяти Демагога. Каждому очередному блоку НЕ соответствует никакой файл.
Массив блоков обрабатывается в цикле.
Обработка блока состоит из двух действий:
1. Применить словари к блоку - блок в памяти Демагога соответственно изменяется.
2. Прочесть (уже измененный) блок вслух
Пока чтение вслух очередного блока не закончится, следующий не начнет обрабатываться.
Сделать обработку многопоточной? Один поток обрабатывает блоки словарями; другой проверяет, какие готовы и читает их вслух. Останавливаясь автоматически каждый раз, когда готовых для чтения блоков еще нет.
Довольно хлопотливая задача - организация взаимодействия потоков. Программа усложняется и становится менее надежной. А выигрыш по времени выполнения, скажем так, не всегда очевидный.
Пока к таким радикальным изменениям в программе я не готов. Хотя иногда задумываюсь о них.
Размер блока чтения в Демагоге по умолчанию 8192 символов (примерно 4 книжных страницы). Если обработка словарями приводит к слишком заметной паузе перед началом чтения очередного блока, то можно уменьшить в настройках, например, до 4096 символов.
P.S. Я заметил, что часто пользователи, в Настройках сериалов указывают желаемый размер серии примерно 5000 .. 7000 символов. Это - меньше принятого по умолчанию размера блока чтения 8192. Поэтому такие маленькие файлы-серии читаются вслух как один блок. Это и создает иллюзию, что серия и блок чтения - одно и тоже.
Массив блоков обрабатывается в цикле.
Обработка блока состоит из двух действий:
1. Применить словари к блоку - блок в памяти Демагога соответственно изменяется.
2. Прочесть (уже измененный) блок вслух
Пока чтение вслух очередного блока не закончится, следующий не начнет обрабатываться.
Сделать обработку многопоточной? Один поток обрабатывает блоки словарями; другой проверяет, какие готовы и читает их вслух. Останавливаясь автоматически каждый раз, когда готовых для чтения блоков еще нет.
Довольно хлопотливая задача - организация взаимодействия потоков. Программа усложняется и становится менее надежной. А выигрыш по времени выполнения, скажем так, не всегда очевидный.
Пока к таким радикальным изменениям в программе я не готов. Хотя иногда задумываюсь о них.
Размер блока чтения в Демагоге по умолчанию 8192 символов (примерно 4 книжных страницы). Если обработка словарями приводит к слишком заметной паузе перед началом чтения очередного блока, то можно уменьшить в настройках, например, до 4096 символов.
P.S. Я заметил, что часто пользователи, в Настройках сериалов указывают желаемый размер серии примерно 5000 .. 7000 символов. Это - меньше принятого по умолчанию размера блока чтения 8192. Поэтому такие маленькие файлы-серии читаются вслух как один блок. Это и создает иллюзию, что серия и блок чтения - одно и тоже.
- tonio_k
- V.I.P.
Demagog TTS
а может этот размер альтернативно определять автоматически в привязке к главам? Большая пауза перед началом чтения следующей главы выглядит довольно логично
- flegont
- V.I.P.
Demagog TTS
Алгоритм разбиения текста на блоки никак не связан с его версткой по главам.
Только с версткой по абзацам или предложениям.
1) Если в настройках указано "Целое число абзацев в блоке", то абзацы добавляются в блок до тех пор, пока количество символов в блоке не станет равно или больше заданного в настройках размера блока
2) Иначе блок составляется из предложений, до тех пор, пока размер блока не станет равен или больше... см. выше.
Когда-то давно, в Демагоге использовался только метод 1. Я даже проводил исследование на большом количестве художественных текстов. Если книга сверстана правильно, с грамотной разбивкой текста на абзацы, то метод 1 дает хорошие результаты. Размер абзаца в среднем выходит ~ 250 символов. Блоки получаются почти одинаковых размеров.
Но... однажды мне написал пользователь: почему на некоем тексте программа не начинает чтение, а молча висит?! Текст был приложен к письму - целая книга ~ 1 мб. Стал разбираться, и... о ужас - оказалось, вся книга состояла из одного единственного абзаца, размером в этот самый 1 мб. В тексте вообще не было символов с кодом #13 - обозначающего концы абзацев.
А в программе был подключен один словарь типа rex - очень большой и медленно работающий. Блок в 1 мб он бы обрабатывал бог весть сколько... Так что, это было не зависание! А огромная пауза перед началом чтения!
Именно тогда был добавлен метод 2 - набор блока чтения из предложений. Он используется, когда снята галочка "Целое число абзацев в блоке". При этом, размеры блоков получаются гораздо более одинаковыми и близкими к заданному в Настройках размеру. Соответственно, как бы не различались в книге размеры глав, а текст разделится на практически одинаковые блоки. И пауза перед началом чтения очередного блока будет практически такая же, как и для других.
Насколько я помню, разборку текста по предложениям, для составления блоков, Демагог делает по символам: . ? ! ; и еще нескольким, обозначающим точку в азиатских языках.
Остается еще один, последний вариант. Что, если в тексте нет не только абзацев, но и предложений? Что произойдет, если Демагогу дать большой текст, не содержащий переводов строки #13 и знаков препинания? Т.е. одну огромную строку - месиво из букв?
Надо проверить
Только с версткой по абзацам или предложениям.
1) Если в настройках указано "Целое число абзацев в блоке", то абзацы добавляются в блок до тех пор, пока количество символов в блоке не станет равно или больше заданного в настройках размера блока
2) Иначе блок составляется из предложений, до тех пор, пока размер блока не станет равен или больше... см. выше.
Когда-то давно, в Демагоге использовался только метод 1. Я даже проводил исследование на большом количестве художественных текстов. Если книга сверстана правильно, с грамотной разбивкой текста на абзацы, то метод 1 дает хорошие результаты. Размер абзаца в среднем выходит ~ 250 символов. Блоки получаются почти одинаковых размеров.
Но... однажды мне написал пользователь: почему на некоем тексте программа не начинает чтение, а молча висит?! Текст был приложен к письму - целая книга ~ 1 мб. Стал разбираться, и... о ужас - оказалось, вся книга состояла из одного единственного абзаца, размером в этот самый 1 мб. В тексте вообще не было символов с кодом #13 - обозначающего концы абзацев.
А в программе был подключен один словарь типа rex - очень большой и медленно работающий. Блок в 1 мб он бы обрабатывал бог весть сколько... Так что, это было не зависание! А огромная пауза перед началом чтения!
Именно тогда был добавлен метод 2 - набор блока чтения из предложений. Он используется, когда снята галочка "Целое число абзацев в блоке". При этом, размеры блоков получаются гораздо более одинаковыми и близкими к заданному в Настройках размеру. Соответственно, как бы не различались в книге размеры глав, а текст разделится на практически одинаковые блоки. И пауза перед началом чтения очередного блока будет практически такая же, как и для других.
Насколько я помню, разборку текста по предложениям, для составления блоков, Демагог делает по символам: . ? ! ; и еще нескольким, обозначающим точку в азиатских языках.
Остается еще один, последний вариант. Что, если в тексте нет не только абзацев, но и предложений? Что произойдет, если Демагогу дать большой текст, не содержащий переводов строки #13 и знаков препинания? Т.е. одну огромную строку - месиво из букв?
Надо проверить
- tonio_k
- V.I.P.
Demagog TTS
Подсветка Омографов.
Обратил внимание, что при выделеном тексте нажатие на кнопку "показать Омографы" - подсветка не срабатывает. Нужно обязательно убрать выделение и немного прокрутить текст. Только тогда подсветка включается
Отправлено спустя 3 минуты 40 секунд:
Соответственно, если Омографы подсвечены, то при промотке экрана, Омографы больше не будут подсвечиваться, пока не уберёшь выделение.
Обратил внимание, что при выделеном тексте нажатие на кнопку "показать Омографы" - подсветка не срабатывает. Нужно обязательно убрать выделение и немного прокрутить текст. Только тогда подсветка включается
Отправлено спустя 3 минуты 40 секунд:
Соответственно, если Омографы подсвечены, то при промотке экрана, Омографы больше не будут подсвечиваться, пока не уберёшь выделение.
- flegont
- V.I.P.
Demagog TTS
Совершенно верно. Если в тексте есть выделенный фрагмент, то подсветка автоматически отключается. Это сделано во избежание конфликта подсветки с выделением текста.
Попросту говоря, подсветка заново отображает весь видимый в окне текст - уже красиво раскрашенный При этом, выделение текста, хочешь-не хочешь, а будет сброшено.
Поэтому, когда делаем выделение в тексте, то подсветка автоматически отключается. Т.о. выделение текста имеет приоритет перед подсветкой.
Ну, а когда выделение снято, то подсветка снова включается и отобразиться при любой мало-мальской прокрутке текста. Или входе курсора мыши в окно редактирования. (Провел мышью за пределы и обратно - и подсветка обновилась).
В общем, пока будет так, как есть. А дальше... может, что-нибудь не придумаю
Попросту говоря, подсветка заново отображает весь видимый в окне текст - уже красиво раскрашенный При этом, выделение текста, хочешь-не хочешь, а будет сброшено.
Поэтому, когда делаем выделение в тексте, то подсветка автоматически отключается. Т.о. выделение текста имеет приоритет перед подсветкой.
Ну, а когда выделение снято, то подсветка снова включается и отобразиться при любой мало-мальской прокрутке текста. Или входе курсора мыши в окно редактирования. (Провел мышью за пределы и обратно - и подсветка обновилась).
В общем, пока будет так, как есть. А дальше... может, что-нибудь не придумаю
- tonio_k
- V.I.P.
Demagog TTS
А можно сделать так, что бы при выделении текста отключалась и уже сработавшая подсветка омографов? У меня было так, что выделил текст, проработал с ним и давай крутит экран дальше с полной уверенностью, что не подсвечиваются Омографы потому что их нет. Т.е. выделил текст, и сразу видно что подсветка отключена.
Отправлено спустя 21 минуту 12 секунд:
Поясню.
Как только началось выделение текста все подкрашенные омографы на данном участке экрана должны исчезнуть. А то получается, что без снятия выделения с текста, как только я начал крутить мышкой вниз, У меня все ранее подсвеченные омографы так и остались подсвеченными на открытом участке экрана и прокручивая мышкой вниз новые омографы уже не подсвечиваются. Создаётся впечатление что их ниже попросту нет.
Отправлено спустя 21 минуту 12 секунд:
Поясню.
Как только началось выделение текста все подкрашенные омографы на данном участке экрана должны исчезнуть. А то получается, что без снятия выделения с текста, как только я начал крутить мышкой вниз, У меня все ранее подсвеченные омографы так и остались подсвеченными на открытом участке экрана и прокручивая мышкой вниз новые омографы уже не подсвечиваются. Создаётся впечатление что их ниже попросту нет.
- tonio_k
- V.I.P.
Demagog TTS
Начиная примерно с 7.29.363 не работает Collection of texts.lua - редко применяю. Только сейчас обнаружил.
Отправлено спустя 1 минуту 46 секунд:
Еще заметил, что изменилось окно ShowMessage - добавились кнопки Yes No
Отправлено спустя 1 минуту 46 секунд:
Еще заметил, что изменилось окно ShowMessage - добавились кнопки Yes No
- flegont
- V.I.P.
Demagog TTS
_Tests_\Collection of texts.lua
3278 bytes
23.11.2018
12:37
profiles\calculator.lua
15455 bytes
19.01.2019
16:29
Demagog.exe
1161728 bytes
30.01.2019
10:29
Должны быть файлы с этими размерами и временем создния.
На моем экземпляре Демагога (скачанном с моего же сайта ) скрипт работает, а у ShowMessages() - одна кнопка, как и положено.
3278 bytes
23.11.2018
12:37
profiles\calculator.lua
15455 bytes
19.01.2019
16:29
Demagog.exe
1161728 bytes
30.01.2019
10:29
Должны быть файлы с этими размерами и временем создния.
На моем экземпляре Демагога (скачанном с моего же сайта ) скрипт работает, а у ShowMessages() - одна кнопка, как и положено.
- tonio_k
- V.I.P.
Demagog TTS
flegont, Спасибо за подсказку!
Оказывается, кроме обновления Demagog.exe, нужно еще обновлять \Demagog\profiles\calculator.lua
Оказывается, кроме обновления Demagog.exe, нужно еще обновлять \Demagog\profiles\calculator.lua
- flegont
- V.I.P.
Demagog TTS
Да. calculator.lua содержит описание функций интерпретатора, и от версии к версии его содержание может, в определенной степени, меняться. Например, если я в какой-то функции добавил дополнительный параметр(ы). Или вовсе добавил новую функцию (функции).
Проще всего обновлять версию, копируя целиком папку Demagog из дистрибутива поверх папки Demagog на компьютере. Система спросит: заменять ли файлы с одинаковыми именами? Ответ: да.
Тогда уж точно ничего не потеряется
Файлов в дистрибутиве немного и процесс копирования проходит быстро.
Проще всего обновлять версию, копируя целиком папку Demagog из дистрибутива поверх папки Demagog на компьютере. Система спросит: заменять ли файлы с одинаковыми именами? Ответ: да.
Тогда уж точно ничего не потеряется
Файлов в дистрибутиве немного и процесс копирования проходит быстро.
- tonio_k
- V.I.P.
Demagog TTS
Тем, кто пользуется Демагог, рекомендую содержимое своих словарей DIC прогнать через поиск:
Найти , по шаблону REX, Все подходящие
Для выявления ошибок типа:
с другой стороны=c другой сторонЫ
где c на латинице
Найти , по шаблону REX, Все подходящие
Код: Выделить всё
[^\r\n]*(a|o|c|p|e|x)[^\r\n]*
► Показать
с другой стороны=c другой сторонЫ
где c на латинице
- flegont
- V.I.P.
Demagog TTS
И я несколько раз попадался в ловушки с "буквами-оборотнями"
Так что, лишняя заручка с помощью предложенного РВ (или каких-то его вариций) - не помешает
Так что, лишняя заручка с помощью предложенного РВ (или каких-то его вариций) - не помешает
- wasyaka
- V.I.P.
Demagog TTS
Вопрос:
Pronunciation adjustment.lua - запускается, включается, начинает работать... и вдруг перестаёт видеть словари - в куче, по одному.. в любой очерёдности... в новых версиях так задумано?
И почему через скрипт.. было можно, а в проге нельзя? - порядок обработки словарей по номеру, а не по расширению?
Создать набор пустых пронумерованных (в порядке применения) контейнеров в папке dic ...
А туда пользователь вложит словари?
Pronunciation adjustment.lua - запускается, включается, начинает работать... и вдруг перестаёт видеть словари - в куче, по одному.. в любой очерёдности... в новых версиях так задумано?
И почему через скрипт.. было можно, а в проге нельзя? - порядок обработки словарей по номеру, а не по расширению?
Создать набор пустых пронумерованных (в порядке применения) контейнеров в папке dic ...
А туда пользователь вложит словари?
- tonio_k
- V.I.P.
Demagog TTS
хм, у меня он тоже не работает!
Словари выбираются, обработка словарями происходит подозрительно быстро, файл result.txt - пустой
а потому и сделали акцент на скрипты что бы обойти ограничение.
Автор решил (это его законное право ) оставить базовым и ключевым традиционное правило: В первую очередь обрабатываются словари REX во вторую - DIC. А вот между собой файлы словарей rex или (между собой) файлы словарей dic уже можно сортировать по номеру.
Предлагаю попробовать воспользоваться очень простым скриптом: оба файла из архива надо поместить в папку Demagog\_Tests_ (там же где и Pronunciation adjustment.lua лежит)
00_Показать ИЗМЕНЕННЫЙ ТЕКСТ.lua - это запускаемый скрипт.
Применяет словари к тексту в активном окне Демагога в последовательности, указанной в файле СПИСОК СЛОВАРЕЙ.lua.
В файле СПИСОК СЛОВАРЕЙ.lua отредактируйте под свои названия словарей в нужной вам последовательности.
Один важный момент, если без фигурных скобок, то применяется быстрый алгоритм для словаря DIC! Если нужен алгоритм прямого перебора, то словарь нужно заключить в скобки (в архиве пример заключения в скобки есть)
- flegont
- V.I.P.
- flegont
- V.I.P.
Demagog TTS
PlsToDic(f, folder, casesens, tag)
Функция встроенного интерпретатора. Включена в программу, начиная с версии 365. Преобразует словарь произношения формата .pls в словарь .dic или .hmg
Параметры:
f - полное имя pls-словаря
folder - папка, куда поместить готовый dic/hmg-словарь; по умолчанию - пустая строка - соответствует корневой папке программы
casesens - учитывать (true) или не учитывать (false) регистр; по умолчанию - false
tag - шаблон pls-тега; по умолчанию [[<phoneme alphabet="%1" ph="%2"/>]]
Тип результата: .dic / .hmg определяется автоматически, исходя из структуры pls-файла.
Функция встроенного интерпретатора. Включена в программу, начиная с версии 365. Преобразует словарь произношения формата .pls в словарь .dic или .hmg
Параметры:
f - полное имя pls-словаря
folder - папка, куда поместить готовый dic/hmg-словарь; по умолчанию - пустая строка - соответствует корневой папке программы
casesens - учитывать (true) или не учитывать (false) регистр; по умолчанию - false
tag - шаблон pls-тега; по умолчанию [[<phoneme alphabet="%1" ph="%2"/>]]
Тип результата: .dic / .hmg определяется автоматически, исходя из структуры pls-файла.
Код: Выделить всё
-- пример 1
folder = [[d:\~tmp\etc\gen]]
casesens = true
tag = [[<phoneme ph="%2"/>]]
PlsToDic([[d:\Demagog\work\Dopolneniya.pls]], folder, casesens, tag)
Код: Выделить всё
-- пример 2
PlsToDic('Dopolneniya.pls')
-- обрабатывается файл в корневой папке программы
-- результат будет там же
- tonio_k
- V.I.P.
Demagog TTS
Пожелания:
Сервис\ Статистика\ Сравнение файлов Хотелось бы чуть расширить этот функционал:
1) Добавить для всех пунктов возможность сравнить между собой содержимое окон (вместо указания местоположения файла 1 и файла 2, вручную (указываем цифру) или через выводимый список, указывать номер окна Демагога в которых открыт текст для сравнения.
2) Сервис\ Статистика\ Сравнение файлов\ Точка расхождения
После выявления первого расхождения, результат выводится в окно статистики и процесс прерывается. А хотелось бы некоторого продолжения - "Точка расхождения в каждом абзаце"
Т.Е.: реализовать "по-абзацевый" поиск расхождений до 1 точки расхождения.
В первом абзаце находим первое расхождение, результат - точка расхождения и окружающие его, допустим, по 5 слов слева и права (ограничение начало и конец абзаца) - выводим в окно статистики.
Переходим к следующему абзацу.
Понятно, что если в сравниваемом абзаце более одного расхождения, то последующие расхождения в этом абзаце не будут выявлены. Или того хуже - вообще отсутствует какой-то абзац - тогда дальнейшие расхождения вывалится в единую кашу.
Однако Точка расхождения в каждом абзаце - вполне применим и удобен для текстов ожидаемая разница, в которых в несколько десятков слов статистически раскиданных по всему тексту.
Сервис\ Статистика\ Сравнение файлов Хотелось бы чуть расширить этот функционал:
1) Добавить для всех пунктов возможность сравнить между собой содержимое окон (вместо указания местоположения файла 1 и файла 2, вручную (указываем цифру) или через выводимый список, указывать номер окна Демагога в которых открыт текст для сравнения.
2) Сервис\ Статистика\ Сравнение файлов\ Точка расхождения
После выявления первого расхождения, результат выводится в окно статистики и процесс прерывается. А хотелось бы некоторого продолжения - "Точка расхождения в каждом абзаце"
Т.Е.: реализовать "по-абзацевый" поиск расхождений до 1 точки расхождения.
В первом абзаце находим первое расхождение, результат - точка расхождения и окружающие его, допустим, по 5 слов слева и права (ограничение начало и конец абзаца) - выводим в окно статистики.
Переходим к следующему абзацу.
Понятно, что если в сравниваемом абзаце более одного расхождения, то последующие расхождения в этом абзаце не будут выявлены. Или того хуже - вообще отсутствует какой-то абзац - тогда дальнейшие расхождения вывалится в единую кашу.
Однако Точка расхождения в каждом абзаце - вполне применим и удобен для текстов ожидаемая разница, в которых в несколько десятков слов статистически раскиданных по всему тексту.
- flegont
- V.I.P.
Demagog TTS
Подумаю над этим. Возможность сравнивать тексты, уже открытые в разных окнах - была бы полезной. А с "точкой расхождения" - после первой найденной, должен быть выбор: завершить ли процесс сравнения, или указать новую стартовую позицию в сравниваемых текстах.
Т.е. пользователь отмечает кликом мышки в обоих текстах, где они вновь начали совпадать - оттуда искать новое расхождение. И т.д. до конца.
Т.е. пользователь отмечает кликом мышки в обоих текстах, где они вновь начали совпадать - оттуда искать новое расхождение. И т.д. до конца.
- balaamster
- Обыватель
Demagog TTS
Появилась мысль, относительно омографов.
Суть идеи:
Создаётся некий dic-словарь со словами-омографами. После знака "=" ставится не словарная замена, а имя rex-словаря с регулярными выражениями (лежащего в спец.папке, например dic\hrex) только для этого омографа.
Словарь homo.hdic:
году=году.rex
В папке dic\hrex словарь году.rex:
\b(в \d+)(-о?м)? году\b=$1$2 годУ
При разборе блока текста встречаем слово "году", по словарю "homo.hdic" получаем ссылку на словарь "году.rex" и производим замены, в случае совпадений производим замену.
Теоретически, это позволит не перебирать весь rex-словарь с выражениями для остальных омографов. А как на практике, насколько сложна реализация и позволит ли это получить прирост, с учётом обработки подкаталога с дополнительными словарями?
Суть идеи:
Создаётся некий dic-словарь со словами-омографами. После знака "=" ставится не словарная замена, а имя rex-словаря с регулярными выражениями (лежащего в спец.папке, например dic\hrex) только для этого омографа.
Словарь homo.hdic:
году=году.rex
В папке dic\hrex словарь году.rex:
\b(в \d+)(-о?м)? году\b=$1$2 годУ
При разборе блока текста встречаем слово "году", по словарю "homo.hdic" получаем ссылку на словарь "году.rex" и производим замены, в случае совпадений производим замену.
Теоретически, это позволит не перебирать весь rex-словарь с выражениями для остальных омографов. А как на практике, насколько сложна реализация и позволит ли это получить прирост, с учётом обработки подкаталога с дополнительными словарями?
- tonio_k
- V.I.P.
Demagog TTS
речь идёт про ручной поиск омографов или про автоматическая замена по словарям ускоренный за счёт введения своеобразного индекса?
Отправлено спустя 22 минуты 26 секунд:
Если как альтернатива стандартной работы rex словарей, то я бы не стал плодить много файлов, а всё поместил в один изменив вид строки схематично:
index:году
\b(в \d+)(-о?м)? году\b=$1$2 годУ
\b(в \d+)(-о?м)? году\b=$1$2 годУ
end index
Или так:
году::\b(в \d+)(-о?м)? году\b=$1$2 годУ
году::\b(в \d+)(-о?м)? году\b=$1$2 годУ
- balaamster
- Обыватель
- tonio_k
- V.I.P.
Demagog TTS
Провел такой эксперимент:
1) взял текст Милое семейство.txt - произвел в нем замену, что бы все слова состояли из строчных букв.
2) применил к этому тексту словарь 20_REX_Замены от waska.rex
3) в полученном измененном тексте вывел все подходящие по шаблону rex
@\w*[А-Я]\w*
4) полученный список слов добавил в поисковый запрос по шаблону rex
^.+=.*(бЕрегу|глазА|годА|дЕла|дОма|дОму|дорОги|лесУ|местА|нОги|пЕред|пЕтли|пОлу|рукИ|рУки|самОй|сАмой|сАмом|сОсны|темнО|тЕни|томУ|узнАет).*$ и вытащил все правила из словаря 20_REX_Замены от waska.rex
т.е. получил все правила подходящие под индекс слов: бЕрегу|глазА|годА|дЕлаи.... т.д.
5) в скрипте
в графе r0 = [[#1) правило REX: ввел все правила из словаря 20_REX_Замены от waska.rex
в графе r1 = [[#2) правило REX: ввел все правила найденные по индексу
в графе s = [[ ввел текст из Милое семейство.txt, где все слова строчными буквами
Результат сравнения скорости: Разница в скорости в разы.
Эксперимент грубоват по причине что при поиске в 20_REX_Замены от waska.rex поисковый запрос дОма|дОму| не поймает правило содержащее, например, =дом$2
но на общую картину эксперимента такие исключения особо не повлияют.
1) взял текст Милое семейство.txt - произвел в нем замену, что бы все слова состояли из строчных букв.
2) применил к этому тексту словарь 20_REX_Замены от waska.rex
3) в полученном измененном тексте вывел все подходящие по шаблону rex
@\w*[А-Я]\w*
4) полученный список слов добавил в поисковый запрос по шаблону rex
^.+=.*(бЕрегу|глазА|годА|дЕла|дОма|дОму|дорОги|лесУ|местА|нОги|пЕред|пЕтли|пОлу|рукИ|рУки|самОй|сАмой|сАмом|сОсны|темнО|тЕни|томУ|узнАет).*$ и вытащил все правила из словаря 20_REX_Замены от waska.rex
т.е. получил все правила подходящие под индекс слов: бЕрегу|глазА|годА|дЕлаи.... т.д.
5) в скрипте
Код: Выделить всё
-- \s+([^\.,:!?-]*)\s+ >100>
-- \s+(\s*\w*\s*)\s+ 1, 2, 3,
-- ^(.)*$=_
r0 = [[#1) правило REX:
здесь вводим правила REX
]]
r1 = [[#2) правило REX:
здесь вводим правила REX
]]
s = [[
здесь вводим ТЕКСТ для тестирования
]]
-- СРАВНИТЬ СКОРОСТЬ РАБОТЫ ПРАВИЛ МЕЖДУ СОБОЙ? (ДА=1)
yes_no = 0
log_s = s
log_s0 = RexRepl(s,{r0})
log_s1 = RexRepl(s,{r1})
if yes_no == 1 then
n=10000
GaugeInit(n)
k=''
for i = 1,n do
Gauge(i)
k=s..'\r'..k
end
s = k
end
Gauge(0)
GaugeInit(6)
Gauge(1)
z = os.clock()
s0 = RexRepl(s,{r0})
log_r0 = 'Time = '..os.clock()-z
Gauge(2)
z = os.clock()
s1 = RexRepl(s,{r1})
log_r1 = 'Time = '..os.clock()-z
Gauge(3)
z = os.clock()
s0 = RexRepl(s,{r0})
log_r0 = log_r0..'\r'..'Time = '..os.clock()-z
Gauge(4)
z = os.clock()
s1 = RexRepl(s,{r1})
log_r1 = log_r1..'\r'..'Time = '..os.clock()-z
Gauge(5)
z = os.clock()
s0 = RexRepl(s,{r0})
log_r0 = log_r0..'\r'..'Time = '..os.clock()-z
Gauge(6)
z = os.clock()
s1 = RexRepl(s,{r1})
log_r1 = log_r1..'\r'..'Time = '..os.clock()-z
Gauge(0)
ShowMessage(log_s..'\r1)\r'..log_s0..'\r2)\r'..log_s1..'\r\r'..'Павило r0\r'..log_r0..'\r\r'..'Павило r1\r'..log_r1)
в графе r0 = [[#1) правило REX: ввел все правила из словаря 20_REX_Замены от waska.rex
в графе r1 = [[#2) правило REX: ввел все правила найденные по индексу
в графе s = [[ ввел текст из Милое семейство.txt, где все слова строчными буквами
Результат сравнения скорости: Разница в скорости в разы.
Эксперимент грубоват по причине что при поиске в 20_REX_Замены от waska.rex поисковый запрос дОма|дОму| не поймает правило содержащее, например, =дом$2
но на общую картину эксперимента такие исключения особо не повлияют.
- wasyaka
- V.I.P.
Demagog TTS
1. Правка/Найти омографы Ctrl+H Находит первый и все последущие варианты для него и т. д.
2. Теже, но списком: Необработанные омографы ... согласно алфавиту ,
Привести список в соответствии с пунктом 1 ??? - быстро можно понять, что делать всегда,...
2. Теже, но списком: Необработанные омографы ... согласно алфавиту ,
Привести список в соответствии с пунктом 1 ??? - быстро можно понять, что делать всегда,...
- tonio_k
- V.I.P.
Demagog TTS
Выкладываю сборку с готовыми скриптами для экспериментов по выявлению затрат времени на обработку текста словарем rex обычным и индексным методом
► Показать
9999.ИЗМЕНЕННЫЙ ТЕКСТ 1.обычная обработка словарем.lua стандартная обработка текста словарем 20_REX_Замены от waska.rex
9999.ИЗМЕНЕННЫЙ ТЕКСТ 2.индексация всего текста.lua - индексный метод. Индексирует словарь 20_REX_Замены от waska.rex. Полученный индекс применяет ко всему тексту. Найденные омографы находит правила по индексу в словаре 20_REX_Замены от waska.rex. Переносит найденные правила во временный файл SPEEDOMOREX.rex, который и применяется к текущему окну с открытой книгой
9999.ИЗМЕНЕННЫЙ ТЕКСТ 3.индекс по сериалам.lua - индексный метод с разбитием на сериалы. Разбивает текст на сериалы в папку Demagog\dic\temp_serials. Индексирует словарь 20_REX_Замены от waska.rex. Открывает первый сериал, Полученный индекс применяет к тексту сериала. Найденные слова по индексу находит в правилах в словаре 20_REX_Замены от waska.rex. Переносит найденные правила во временный файл SPEEDOMOREX.rex, который применяется к файлу с сериалом. И т.д. ... Склеивает все файлы сериала в один
Напоминаю, это экспериментальная сборка - возможны ошибки и не стыковки в работе
Отправлено спустя 3 часа 1 минуту 35 секунд:
так как правила rex все->всё, всем->всём и так применяются к каждому сериалу, имеет смысл эти правила перенести в индексируемый файл с rex омографами. Статистически есть вероятность, что в данном файле сериала ни разу не встретится все/всем - вот вам еще небольшой прирост в скорости.
- balaamster
- Обыватель
Demagog TTS
tonio_k,
я провёл испытания у себя, вот что получилось:
В качестве текста - фрагмент книги, 4876 строк, 1 272 744 символа.
9999.ИЗМЕНЕННЫЙ ТЕКСТ 1.обычная обработка словарем.lua - 22м. 44с.
9999.ИЗМЕНЕННЫЙ ТЕКСТ 2.индексация всего текста.lua - 17м. 53с.
9999.ИЗМЕНЕННЫЙ ТЕКСТ 3.индекс по сериалам.lua - 06м. 41с.
Индексирование даёт ощутимый прирост в скорости обработки, особенно при создании сериалов (в 3,4 раза ).
Для обработки не поделенного на сериал текста можно будет применять обработку книги построчно. В моей коллекции книг, чаще всего, одна строка - один абзац. На досуге попробую поэкспериментировать с этим.
я провёл испытания у себя, вот что получилось:
В качестве текста - фрагмент книги, 4876 строк, 1 272 744 символа.
9999.ИЗМЕНЕННЫЙ ТЕКСТ 1.обычная обработка словарем.lua - 22м. 44с.
9999.ИЗМЕНЕННЫЙ ТЕКСТ 2.индексация всего текста.lua - 17м. 53с.
9999.ИЗМЕНЕННЫЙ ТЕКСТ 3.индекс по сериалам.lua - 06м. 41с.
Индексирование даёт ощутимый прирост в скорости обработки, особенно при создании сериалов (в 3,4 раза ).
Для обработки не поделенного на сериал текста можно будет применять обработку книги построчно. В моей коллекции книг, чаще всего, одна строка - один абзац. На досуге попробую поэкспериментировать с этим.
- tonio_k
- V.I.P.
Demagog TTS
В итоге - чем меньше файл, тем быстрее его обработка.
В шапке файла скрипта 9999.ИЗМЕНЕННЫЙ ТЕКСТ 3.индекс по сериалам.lua можно поиграть с параметром: - попробовать его уменьшить. может это даст улучшенный результат?
А еще надо сравнить полученные на выходе файлы по 1.обычная обработка словарем и 3.индекс по сериалам между собой. Только так можно выявить какие то несрабатывания правил и выяснить причину.
Скорее всего возможная причина расхождения - неправильное составление словаря.
Ошибки в словаре которые могут спровоцировать расхождение:
1) Пробел в строке с индексными словами
2) Любой другой разделитель кроме запятой в строке с индексными словами
3) Не указаны в строке с индексными словами все варианты вождения в правиле. Пример:
4) Ну и человеческий фактор - ошибка когда в строке с индексными словами указал одно слово а правила относятся к другому.
В шапке файла скрипта 9999.ИЗМЕНЕННЫЙ ТЕКСТ 3.индекс по сериалам.lua можно поиграть с параметром:
Код: Выделить всё
simbol = 4800 -- количество символов в одной серии
А еще надо сравнить полученные на выходе файлы по 1.обычная обработка словарем и 3.индекс по сериалам между собой. Только так можно выявить какие то несрабатывания правил и выяснить причину.
Скорее всего возможная причина расхождения - неправильное составление словаря.
Ошибки в словаре которые могут спровоцировать расхождение:
1) Пробел в строке с индексными словами
2) Любой другой разделитель кроме запятой в строке с индексными словами
3) Не указаны в строке с индексными словами все варианты вождения в правиле. Пример:
► Показать
- tonio_k
- V.I.P.
Demagog TTS
Сервис - Статистика - Выполнить по умолчанию
Раньше это окно выглядело так:
Стало так:
Раньше это окно выглядело так:
► Показать
► Показать
- tonio_k
- V.I.P.
Demagog TTS
Правка - Найти омографы.
Не совсем понял функцию меню "Добавить фразу в словарь".
Как я понял, предлагается создать к найденному омографу правило. Но вот ее реализация не до конца мне понятна.
Сначала выбираем словарь, куда нужно правило добавить. Ок выбрали.
Открывается окно "Введите правило"
А как таковой фразы то нет, а есть только найденное слово омограф, получается, правило можно только ручками вбивать. Потому что, пока включен режим поиска омографов, сам текст книги для копирования недоступен.
Как то это не очень удобно да и смысла не имеет. Проще остановить процедуру скопировать фразу и самому в словаре все откорректировать.
Поэтому есть такое пожелание.
К любому выделенному тексту книги через правую клавишу мыши добавить пункт меню:
"Добавить фразу в словарь" И что бы после выбора словаря, открывающееся окно "Введите правило" уже содержало в первой графе выделенный текст сообщения - доступный для редактирования.
Этот функционал удобен как для работы в режиме "Найти омографы"
(Нашли омограф. Надо ввести фразу в словарь? Отменяем поиск. Выделяем текст. Правая клавиша "Добавить фразу в словарь". Заносим правило в словарь. Дальше продолжаем поиск.
Так и в режиме работы с текстом в режиме чтения вслух. Услышали неправильное произношение, остановили чтение, выделили фразу. Правая клавиша "Добавить фразу в словарь". Заносим правило в словарь. Слушаем дальше.
Не совсем понял функцию меню "Добавить фразу в словарь".
► Показать
Сначала выбираем словарь, куда нужно правило добавить. Ок выбрали.
Открывается окно "Введите правило"
► Показать
Как то это не очень удобно да и смысла не имеет. Проще остановить процедуру скопировать фразу и самому в словаре все откорректировать.
Поэтому есть такое пожелание.
К любому выделенному тексту книги через правую клавишу мыши добавить пункт меню:
"Добавить фразу в словарь" И что бы после выбора словаря, открывающееся окно "Введите правило" уже содержало в первой графе выделенный текст сообщения - доступный для редактирования.
Этот функционал удобен как для работы в режиме "Найти омографы"
(Нашли омограф. Надо ввести фразу в словарь? Отменяем поиск. Выделяем текст. Правая клавиша "Добавить фразу в словарь". Заносим правило в словарь. Дальше продолжаем поиск.
Так и в режиме работы с текстом в режиме чтения вслух. Услышали неправильное произношение, остановили чтение, выделили фразу. Правая клавиша "Добавить фразу в словарь". Заносим правило в словарь. Слушаем дальше.