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-ка шибко умная

- 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

Отправлено спустя 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
Должны быть файлы с этими размерами и временем создния.
На моем экземпляре Демагога (скачанном с моего же сайта

- 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
И я несколько раз попадался в ловушки с "буквами-оборотнями"
Так что, лишняя заручка с помощью предложенного РВ (или каких-то его вариций) - не помешает

Так что, лишняя заручка с помощью предложенного РВ (или каких-то его вариций) - не помешает
