Скрипты для Demagog

Говорящий текстовый редактор с открытым кодом, предназначенный для чтения вслух и записи в аудиофайл текстовых файлов с использованием пакетов речевых функций SAPI4\SAPI5.

Модератор: flegont

Ответить
Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#501

Сообщение tonio_k »

flegont, :thank_you: работает как надо!

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#502

Сообщение tonio_k »

Вопрос по функции WSel
Вставим ниже текст в окно Демагога и нажимаем F2

Код: Выделить всё

ind=WActive()
k=WSel(ind)
ShowMessage(k)
Если выделить текст ind то покажет k = 3
Вопрос, а как можно определить начальную позицию выделенного текста?
Если бы WSel показывал начальную позицию, то координаты текста я бы мог получить:

Код: Выделить всё

ind=WActive()
k=WSel(ind)
fnd=WSelText(ind)
ShowMessage(k..', '..#fnd)

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#503

Сообщение flegont »

Мда... думаю, надо будет усовершенствовать функцию WSel(i), когда задан только параметр - номер окна. Чтобы, если в тексте есть выделенный фрагмент, то возвращалась бы начальная позиция выделенного (а не конечная, как сейчас), и возвращалась бы длина выделенного. Как-то так:

Код: Выделить всё

k, len = WSel(ind)
Тогда конечная позиция выделенного была бы:

Код: Выделить всё

z = k+len
Подумаю, как сделать.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#504

Сообщение tonio_k »

Я тут ещё немного подумал, у нас же на руках есть длина текста #fnd и координата конца текста.
Можно от координаты конца выделеного текста вычесть его длину и прибавить 1 это и будет начальная координата выделенного текста

Код: Выделить всё

ind=WActive()
k=WSel(ind)
fnd=WSelText(ind)
start=k-#fnd+1
ShowMessage(start..', '..#fnd)
Надо только для удобства это в функцию превратить
k, len = WSel(ind), что бы k действительно был начальной позицией выделеного текста.

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#505

Сообщение flegont »

Вер. 385, небольшое изменение в дистрибутиве.
Функция встроенного интерпретатора:
WSel(i , pos, len) - выделяет фрагмент текста во вкладке i с позиции pos длиной len (по умолчанию 0); и возвращает pos и len;
WSel(i, pos) устанавливает текстовый курсор в позицию pos, возвращая pos и 0;
WSel(i) просто возвращает текущую позицию курсора и длину выделенного (или 0),
(это и есть тот случай, когда возвращаемые значения реально могут понадобиться :smile1: )

Пример:

Код: Выделить всё

-- пусть текст во вкладке 1 имеет выделенный фрагмент
k, len = WSel(1)
s = WText(1)
c = string.sub(s,k+1,k+len)
ShowMessage(k..' '..len..' |'..c..'|') -- посмотрим на результат
Замечание: при поиске в тексте выделенного фрагмента к найденной координате его начала прибавляем 1, т.к. позиции текстового курсора на экране нумеруются с 0.

Аватара пользователя
PETICANTROP
Прохожий

Скрипты для Demagog

#506

Сообщение PETICANTROP »

Добрый день не очень силен в работах скрипта, при попытке обработать произведение через скрипт "10_ОКНО ОБРАБОТАТЬ СЛОВАРЯМИ" выбирается небольшой фрагмент для обработки и на этом процесс зависает. Подскажите в чем может быть проблема.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#507

Сообщение tonio_k »

PETICANTROP, в этой ветке обсуждают общие технические вопросы по скриптам. Автор Демагога не может ответить почему не работает та или иная "поделка" пользователя т.к. в её создании он не участвовал. Ваш вопрос касается пользовательской сборки. Задайте свой вопрос в той ветке где скачали сборку. При этом уточните, какой голос вы используете, меняли ли вы что нибудь в сборке. Какую версию сборки применяете. Зависает на всех книгах или только на конкретной одной. Нужно понять (локализовать) где проблема. Иначе на ваш неконкретный вопрос будет ответ: "а у нас работает".

Аватара пользователя
PETICANTROP
Прохожий

Скрипты для Demagog

#508

Сообщение PETICANTROP »

tonio_k, Благодарю за напутствие полез разбираться со сборками и понял что сам накрутил ерунды всякой. Скачал вашу сборку и все заработало. Спасибо вам за труды.

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#509

Сообщение flegont »

Пример использования функций встроенного интерпретатора: RuIPA, RuUPS.
(Demagog, вер. 386, сборка от 04.09.2020)

Скрипт для создания фонетического dic-словаря
Название любое, расширение .lua
Поместить в папку _Tests_
В активной вкладке должен находиться список русских слов - все буквы в нижнем регистре, а ударные гласные - в верхнем регистре.
Вызов скрипта - из меню по Ctrl+F2
Во вкладке "0 - Статистика" будет сформирован соответствующий dic-словарь - его можно сохранить под каким-либо именем и с расширением .dic

Код: Выделить всё

-- Создать фонетический dic-словарь в окне "0 - Статистика"
-- по списку слов с ударениями, находящемуся в активной вкладке.
-- Например:
-- вЫкатившиеся
-- двадцатИ
-- темнО

os.setlocale('', 'ctype')  -- национальная кодовая страница

cap = 'Укажите тип транскрипции'
items = {
'Международный фонетический алфавит (IPA)',
'Microsoft Universal Phone Set (UPS)'
}

ans = Menu(cap,items)
if ans == 0 then goto HALT end
if ans == 1 then 
    -- шаблон тега Pronunciation Lexicon Specification
    mask = '<phoneme ph="@"/>'
else
    -- шаблон тега Microsoft SAPI5
    mask = '<PRON SYM="@"/>'
end

ind = WActive()  -- номер активной вкладки
bom = '\239\187\191' -- спецификация UTF-8
s = WText(ind) 
a = string.split(s,'\r')
c = ''
for i = 1,#a do
    if a[i] ~= '' then
        if ans == 1 then d = RuIPA(a[i]) else d = RuUPS(a[i]) end
        b = string.lower(a[i])
        b = AnsiToUtf8(b)
        c = c..b..'='..string.gsub(mask,'@',d)..'\r'
    end 
end
-- передадим новый utf8-текст во вкладку 0
-- через сохранение во временном файле
c = bom..c
SaveToFile({c},'_.tmp')
WOpen(-1,'_.tmp'); WNew(0); WAdd(0,-1,'\r\r')
os.remove('_.tmp')

WActive(0)

::HALT::
os.setlocale('C')
Пример.
Текст в активной вкладке:

Код: Выделить всё

вЫкатившиеся
двадцатИ
темнО
Результаты (в зависимости от выбора пользователя):

Код: Выделить всё

выкатившиеся=<phoneme ph="vˈɨkətʲɪfʂᵻjəsʲə"/>
двадцати=<phoneme ph="dvətt͡sɐtʲˈi"/>
темно=<phoneme ph="tʲɪmnˈo"/>

Код: Выделить всё

выкатившиеся=<PRON SYM="V S1 IX K AX T pal IH F SR IX low J AX S pal AX"/>
двадцати=<PRON SYM="D V AX T TS AEX T pal S1 I"/>
темно=<PRON SYM="T pal IH M N S1 O"/>

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#510

Сообщение tonio_k »

есть в шпаргалке функция:
WordFrequency(s, gauger) - подсчитывает частоту слов в тексте s; возвращает таблицу строк вида: 'частота|слово'
В калькуляторе видно, что в этой функции присутствует цифровая сортировка.
А можно добавить в калькулятор отдельно функции:
-сортировка цифровая по убыванию
-сортировка цифровая по возрастанию

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#511

Сообщение flegont »

Да, можно. Подумаю над этим.

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#512

Сообщение flegont »

Вер. 386, сборка от 22.09.2020
[+] Функция встроенного интерпретатора table.sortdig(lines, mode) - сортирует таблицу строк lines, по их цифровому содержимому, по возрастанию, если mode = true и по убыванию, если mode = false или nil. Цифровое содержимое в строке ищется до первого символа табуляции (если он есть).

Пример использования:

Код: Выделить всё

-- цифры могут быть в любом месте строки
-- но учитываются только до знака табуляции (если он есть)

-- здесь в строках нет знака табуляции
a = {
'абрикос123',
'корабль 7К-Л1',
'миг-17б',
'восток-1',
'агент 007'
}

a = table.sortdig(a,true)  -- по возрастанию
s = table.concat(a,'\r')
print(s)
print()

-- здесь в строках присутствует знак табуляции
a = {
'17	миг',
'123	абрикос',
'1	восток',
'71	корабль',
'7	агент'
}

a = table.sortdig(a)  -- по убыванию
s = table.concat(a,'\r')
print(s)
Результат:

Код: Выделить всё

восток-1
агент 007
миг-17б
корабль 7К-Л1
абрикос123

123	абрикос
71	корабль
17	миг
7	агент
1	восток

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#513

Сообщение tonio_k »

flegont писал(а):
15 июл 2020 12:18
FreqConsolidate(i, j, delim, tmpfile)
Вставляем в окно 1 (код ниже) и нажимаем F2. Смотрим результат в окне 2 - крякобрязы.

Код: Выделить всё

-- Функция, консолидирующий статистику частотности строк из вкладки i в j
-- Каждая запись исходного списка в i имеет вид: ЧастотаРазделительСтрока
-- При этом строки справа от Разделитель могут дублироваться.
-- После обработки дубликаты будут удалены, частоты просуммированы
function FreqConsolidate(i, j, delim, tmpfile)
    if delim == nil then delim = '|' end
    if tmpfile == nil then tmpfile = 'tmp.txt' end

    -- вспомогательные функции
    local function DelUtf8BOM(s)
        local bom = '\239\187\191'
        if string.sub(s,1,3) == bom then s = string.sub(s,4,#s) end
        return s
    end

    local function AddUtf8BOM(s)
        return '\239\187\191'..s
    end

    -- основная процедура

    os.setlocale('', 'ctype') -- для работы с национальной локалью

    -- заботимся о сохранении юникодных символов
    local o = {}
    o.File_Encoding = feUTF8
    Settings(o)

    WSave(i,tmpfile)
    local a = LoadFromFile(tmpfile)
    a[1] = DelUtf8BOM(a[1])

    -- консолидируем статистику
    local c = {}
    local b
    for i = 1,#a do
        b = string.split(a[i],delim)
        if #b > 1 then
            if c[b[2]] == nil then
                c[b[2]] = tonumber(b[1])
            else
                c[b[2]] = c[b[2]]+tonumber(b[1])
            end
        end
    end

    local d = ''
    for k, v in pairs(c) do
        d = d..v..delim..k..'\r'
    end

    -- опять же, заботимся о юникоде
    AddUtf8BOM(d)
    SaveToFile({d},tmpfile)

    -- готово!
    WOpen(j,tmpfile)
    if i ~= j then WNew(i) end

    --os.setlocale('C')  -- вернуть стандартную локаль
end



WNew(2,[[4	(\S| -)\s(\bчаса\b)(\.\.\.|\,)=$1 часА$3
80	[ ]+=
]])
FreqConsolidate(2, 2, "\9") -- подсчет статистики
Подскажите что поправить?

Что интересно, если поменять строку:

Код: Выделить всё

WNew(2,[[4	(\S| -)\s(\bчаса\b)(\.\.\.|\,)=$1 часА$3
80	[ ]+=
]])
на

Код: Выделить всё

WNew(2,[[1	(\b(без|без [егоёих]{1,3}|вашего|вместо|возле|возле [егоёих]{1,3}|выше|выше [егоёих]{1,3}|два|для|для [егоёих]{1,3}|до|до [егоёих]{1,3}|ему|из|из [запод]{1,3}|какого то|какого тоъ|кроме|кроме [егоёих]{1,3}|мало|мне ни|моего|нет|нет у меня|ни|никому не|ну|оба|оба [егоёихэт]{1,3}|от|от [егоёих]{1,3}|после|против|против [егоёих]{1,3}|со|с [егоёих]{1,3}|своего|смысле|такого|твоего|три|у|у [егоёих]{1,3}|четыре|этого)\b\s?(\w+)?)\s{1,4}(\bслова\b)=$1 слОва
1	(авят|ает|аешь|азал|айте|аны|анял|ать|ашел|!ают|[м]ают|ая|[вмрч]ая|[вмрх]али|ашли|взял|вшим|даем|етны|ечал|зна[лю]|зови|иеся|ими|ируя|ись|ить|ймут|[вкмнч]ать|идал|кали|[вл]или|лены|[мн]ает|ньи|няли|[лн]ять|[рч]ала|руем|ших|ые|ющей|ющих|яют|[вджшщ]ние|гие|жие|кие|хие|чие|шие|щие)(\s*\w*\s*\w*\s*\w*\s*)\s+(места)\b=$1$2 местА
1	@(\w+)([,: -]*)\s+Том([аеуомыи]+)\b=$1$2 ЪЪтОм$3
1156	[ ]+= 
1	\b(ей|на|под|ту же|эту)\b(\s*\w*\s*)\s+полку\b=$1$2 пОлку
1	\b(из|к|по)\b\s+(\bдому\b)=$1 дОму
1	ЪЪтОм(\w+)=тОм$1]])
то крякабразов не будет! Собственно, по этой причине ранее и не выявил проблему.

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#514

Сообщение flegont »

Кракозябры будут всегда, просто иногда их не сразу видно в общей куче.
Причина - в совершенно нелепой опечатке: в функции FreqConsolidate в конце пропущено 2 символа (обозначены красным):

...
d = AddUtf8BOM(d)
SaveToFile({d},tmpfile)
...

И результирующий временный файл записывался в кодировке UTF-8 без BOM. Отчего Демагог неправильно загружал его в назначенное окно :pardon:

P.S. А если в Демагоге была включена Настройка эвристического распознавания кодировки русскоязычных файлов, то иногда результат отображался совершенно верно! Когда русский текст в нем достаточно длинный! :rofl:

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#515

Сообщение tonio_k »

tonio_k писал(а):
30 сен 2020 12:11
включена Настройка эвристического распознавания
вот в чем дело! А я никак не мог понять причину "плавающей" ошибки. Отключить что ли её, что бы мозги потом не ломать почему, то работает, то не работает?

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#516

Сообщение flegont »

По умолчанию "Эвристическое распознавание кодировки русскоязычных текстов" - ОТКЛЮЧЕНО. И я настоятельно рекомендую включать его только в самых крайних случаях! И сразу же отключать, после того, как проблемный файл распознан и пересохранен в нормальной кодировке.

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#517

Сообщение юрабойко »

Просьба написать как просто и быстро, расставить ударения слов. Так чтобы все было ясно даже для нуба - возможности отредактировать всю большую книгу вручную у меня нет, глаза устанут намного раньше средины книги. Хотя возможно главу или две отредактирую до этого.

Если возможно я бы вообще расставлял ударения в словах одним или несколькими нажатиями кнопок. Если нет - расставлю их лишь в тех словах которые произносятся хуже всех.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#518

Сообщение tonio_k »

юрабойко писал(а):
02 окт 2020 12:39
Если возможно я бы вообще расставлял ударения в словах одним или несколькими нажатиями кнопок. Если нет - расставлю их лишь в тех словах которые произносятся хуже всех.
вы опишите, какие действия выхотите сделать? Например выделить слово огнедышащий двойным кликом мыши, нажать комбинацию клавиш и вам к этому слову выйдет окно с вариантами:

Код: Выделить всё

Огнедышащий
огнЕдышащий
огнедЫшащий
огнедышАщий
огнедышащИй
огнедышащиЙ
Вы щелкаете по одному из них и это слово исправляется в тексте книги на выбранное.

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#519

Сообщение юрабойко »

Ясно, надо заменить в слове одну букву на другую.

Только что пробовал прослушать слово телега через демагог - произносит куда лучше чем в балаболке, в ней первый слог вообще не слышен.
Но ваш пример все равно может очень пригодиться для некоторых слов.
На балоболку судя по всему стоит забить - автор программы ее улучшать не будет.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#520

Сообщение tonio_k »

юрабойко писал(а):
02 окт 2020 13:20
автор программы ее улучшать не будет.
вот вы зря так. Балаболка очень продуманная программа и активно обновляется. Произносит вслух не Балаболка, а голосовой движок. Реакция на изменение регистра букв возникает только при наличие соответсвующих словарей. Какие словари, какой голосовой движок вы используете вы не указали. Может у вас голая Балаболка без словарей?

UPD обращаю ваше внимание, что описанный выше вариант решается средствами скрипта. Т.е. это не штатная функция Демагога, а пользовательская доработка, которую вы и сами можете создавать и применять для собственных нужд.

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#521

Сообщение flegont »

Скажем так: штатной функцией Демагога (и довольно полезной, как показала практика) является т.н. "встроенный интерпретатор". С его помощью продвинутые пользователи могут создавать (и создают!) различные скрипты, сообразно собственным нуждам. Таким образом, "творчеством масс" расширяются функциональные возможности Демагога :smile1:

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#522

Сообщение юрабойко »

Со словарями для нее. Я поэкспериментировал - на скорости ноль балаболка у меня очень часто глотает начало или конец некоторых слов, многие короткие слова на скорости ноль вообще можно не услышать.
Возможно тут даже не Балаболка виновата - как я в последний месяц не переставлял Виндовс, а есть сомнения в его стабильности. В тоже время не нашел вирусы на компьютере.
Короче для меня комфортной является скорость чтения минус два если не минус три. Если в тексте есть одни длинные слова - возможно минус один. На скорости ноль в каждом среднем абзаце как минимум пару слов не разберешь - пример первый слог слова телега, стоит послушать чуть дольше часа и потом такое происходит постоянно. Причем закрываю балаболку и открываю ее снова - ничего не меняется к лучшему.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#523

Сообщение tonio_k »

Подскажите, как сделать поиск в тексте utf8 без BOM любого символа не входящего в ANSI таблицу?
Это нужно для предварительной проверки текста перед s=WText (1) что бы точно знать, что никакой символ utf8 в знак "?" не превратится

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#524

Сообщение flegont »

Предположим:
1) в файле proverka.txt находится текст в кодировке utf8
2) и в этом тексте нигде не встречается знак подчеркивания _
Тогда ответ на ваш вопрос даст следующий скрипт:

Код: Выделить всё

a = LoadFromFile('proverka.txt')
s = table.concat(a,'\r')
_, n = string.gsub(Utf8ToAnsi(s),'_','')
ShowMessage('Символов, не входящих в таблицу ANSI: '..n)

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#525

Сообщение tonio_k »

Я думал, существует некий диапозон(перечень) ANSI , задав который можно посимвольно прогнать текст c utf8 с проверкой нет ли символа НЕ входящего в диапозон ANSI. Если найденный символ не входит в диапозон ANSI - значит это символ относится к UTF8 о чем выходит сообщение что найден символ не входящий в диапозон

допустим в тексте книги присутствует символ ɐ о чем я не знаю и не узнаю, пока он не превратится в ? после s=WText(1) так вот мне хотелось бы получить предупреждение, что в книге есть символ который не является ANSI ДО того как я применю s=WText(1)

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#526

Сообщение flegont »

1) Для того, чтобы получить предупреждение, надо проверить текст по-байтно (в кодировке utf8) функцией Utf8ToAnsi. Если какая-то комбинация байтов соответствует символу, отсутствующему в ANSI, то он заменится на один или несколько символов _. Это и будет сигналом о присутствии в тексте символов, НЕ приводимых к ANSI.
2) А как получить текст в кодировке utf8 для вышеуказанной проверки? В следующей версии Демагога функция WText будет иметь 2 параметра. WText(i, utf8). 2-й параметр по умолчанию false.
Конечно, и сейчас можно сохранить текст в окне во временный файл в кодировке utf8 а потом прочесть в строку через LoadFromFile. И ее уже анализировать с помощью Utf8ToAnsi.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#527

Сообщение tonio_k »

flegont писал(а):
04 окт 2020 14:27
a = LoadFromFile('proverka.txt')
s = table.concat(a,'\r')
_, n = string.gsub(Utf8ToAnsi(s),'_','')
ShowMessage('Символов, не входящих в таблицу ANSI: '..n
к небольшому куску текста работает хорошо, а вот если средняя по размеру книжка, то пауза - ощутимая (похожая на зависание)
tonio_k писал(а):
04 окт 2020 13:54
Это нужно для предварительной проверки текста перед s=WText (1) что бы точно знать, что никакой символ utf8 в знак "?" не превратится
Попробовал через "эмуляцию" воспроизведения ситуации, когда знаки вопроса появляются в тексте:

Код: Выделить всё

a = LoadFromFile('proverka.txt',false)
s = table.concat(a,'\r')
s = string.gsub(s,'\95', "")--удаляем все нижние подчеркивания (если они присутствовали в тексте) 
s = string.gsub(s,'\63', "_")--заменяем все знаки вопроса(если они присутствовали в тексте) 
SaveToFile({s},'result.txt') -- сохраняем результат
WOpen(-1,'result.txt') -- переоткрываем файл в окно Демагога
o = {} 
o.File_Encoding = feANSI  
Settings(o)
WSave(-1,'result.txt')--сохраним файл уже с ANSI кодировкой - при изменении кодировки все UTF8 символы заменятся на знак ?
WOpen(0,'result.txt')
WNew(-1)
WActive(0)
WNew(-1)
WActive(0)
s=WText(0)

--Ищем в файле с ANSI кодировкой знаки "?" которые появляются в результате того, что lua  не распознает utf8 сиволы
_, n = string.gsub(s,'?','')
ShowMessage('Символов, не входящих в таблицу ANSI: '..n)
Работает намного быстрее, но Символов, не входящих в таблицу ANSI показывает не такое же как в вашем примере.
Подскажите, в чем причина? (файл для примера отправил вам на почту)

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#528

Сообщение flegont »

Потому что при s = WText(i) приведение текста к ansi-строке в Демагоге автоматически при присваивании ansi-строка = юникод-строка. При этом символы, не сводимые к ansi заменяются знаками вопроса.
А Utf8ToAnsi - это самоделка, написанная на Lua. Она для удобства, заменяет "нехорошие" символы знаком _ Но работает медленно - а чего мы ожидали от интерпретатора?

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#529

Сообщение tonio_k »

юрабойко писал(а):
02 окт 2020 12:39
Если возможно я бы вообще расставлял ударения в словах одним или несколькими нажатиями кнопок.
Сделал полезный скрипт для удобства вставки ударения в слово за счет изменения регистра буквы на заглавную: файл из архива помещаем в папку \Demagog\_Tests_\
Вешаем скрипт на горячую клавишу:
Сервис-Статистика-Выполнить скрипт-По умолчанию; Выбираем удобное сочетание клавиш и прописываем путь к скрипту. Например: Shift+Ctrl+A | _Tests_\ВЫДЕЛЕННЫЙ ТЕКСТ ИЗМЕНИТЬ РЕГИСТР БУКВ.lua

Скрипт применяется к выделенному тексту. Двойной клик по слову - выделит целое слово. Максимально можно выделить текст размером в один абзац. Выделив текст, нажимаем Shift+Ctrl+A выходит окно:
2020-10-06_22-17-52.png
2020-10-06_22-17-52.png (22.99 КБ) 5553 просмотра
Выбираем нужный вариант и нажимаем Ok. Или двойной клик на выбранном.
Последние две строчки в списке всегда будут:
- ВСЕ БУКВЫ ЗАГЛАВНЫЕ
- все буквы строчные

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#530

Сообщение юрабойко »

Я думаю надо попробовать удвоить число всех пробелов в тексте (между словами) в два или три раза, если и тогда читать на скорости 0 балаболка будет плохо, заменю все пробелы на комбинацию 1 пробел и одна кома. Еще можно попробовать заменить пробелы на Табы, но если балаболка их не читает - последнее никак не поможет.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#531

Сообщение tonio_k »

юрабойко писал(а):
07 окт 2020 16:01
если и тогда читать на скорости 0 балаболка будет плохо
а причем тут Балаболка? Это ветка связанная с программой Демагог в частности посвещена скриптам, которые работают только в связке с Демагогом.
юрабойко писал(а):
07 окт 2020 16:01
итать на скорости 0 балаболка будет плохо
что значит плохо? Сохраните аудио запись воспроизведения голоса выложите файл и и прокомментируйте что вас в аудиозаписи не устраивает?

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#532

Сообщение юрабойко »

Начало слов проглатывает и концы иногда тоже. Сейчас показать не могу - переставляю систему, а завтра без проблем кину ссылку.
Демагог к слову произносит лучше зато запись у него выходит еще хуже по качеству чем у балаболки - почти как у говорилки.
Я правда пока ни разу не делал общедоступным файл из гугл дриве, но думаю разберусь без инструкций, или на кину на my-files.su - там это вообще можно сделать в 4 клика мыши, не больше.
Хотя если запись файла Балаболкой будет говорить лучше чем сама программа этот будет приятным сюрпризом.

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#533

Сообщение юрабойко »

Говорилка может записывать аудиофайлы в 100 раз быстрее чем читает, а Демагог как?

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#534

Сообщение tonio_k »

юрабойко писал(а):
21 окт 2020 19:40
, а Демагог как?
попробуйте засечь время и отпишитесь. Было бы интересно узнать как дела обстоят на практике.
Из теории: и Демагог и Балаболка и Говорилка записывают в wav по времени одинаково. Скорость записи зависит от голосового движка, а не от Говорилки. На ОБЩУЮ скорость подготовки книги влияет: время на обработку текста словарями + скорость записи голосового движка + скорость работы выбранного конвертора при конвертации wav в mp3. В сборке на базе Демагога книга получается быстрее только потому, что словари составлены и применяются по особому алгоритму - в результате на работу словарей уходит меньше времени (в разы). Во всём остальном скорость практически такая же как у других программ.

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#535

Сообщение юрабойко »

Демагог можно заставить записать wav файлы со скоростью 100 - но - качество, причина неясна.
С оригинальными настройками Демагог записывает файлы как минимум втрое медленнее.
Будет записанный с родными настройками лучше - проверю за 5 минут или раньше.

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#536

Сообщение юрабойко »

Часть теста завершена, речь в wav файлах лучше чем в mp3. Осталось проверить еще как минимум 2 формата файлов.
Звук у файла mp4 лучше чем у файла mp3.
Звук у файла Ogg у vorbis хуже чем у файла wav.
Звук у файла Custom encoder неотличим от звука файла mp3.
Все при стандартной скорости записи аудиофайла.

Аватара пользователя
юрабойко
Обыватель

Скрипты для Demagog

#537

Сообщение юрабойко »

С тестами качества записанных аудифайлов разобрался полностью - ускоренная скорость записи ни одному них на пользу точно не пошла.
Качество записи в файл wav при стандартных мне точно самое высокое.
Итог - скорость записи менять может и нужно, но точно после записи при скорости в 100 выше стандартной придется как-то еще обрабатывать файлы, чтобы они не теряли в качестве.
Иначе файл строчит при запуске чуть ли не скороговоркой.

Аватара пользователя
wasyaka
V.I.P.

Скрипты для Demagog

#538

Сообщение wasyaka »

Вариант обработки омографов с помощью скрипта
От мастера угля - мастерам програмирования... :pale:
Вложения
Video_2020-10-21_232056.rar
(66.9 МБ) 82 скачивания

Аватара пользователя
Lecron
Специалист

Скрипты для Demagog

#539

Сообщение Lecron »

wasyaka писал(а):
21 окт 2020 23:52
Вариант обработки омографов с помощью скрипта
Как понял, составляется словарь. Только вопрос, на одну книгу или на будущее? Если первое, зачем редактировать правила до более общего вида? Если второе, словарь не совсем хороший. Альтернатив под другое ударение дофига. Например:

Код: Выделить всё

На крыльце дОма для рабочих.
ДорОгой тетушки неплохо провели время.
Обработанный дУхами скелет, пугал всех посетителей (из фэнтези).
за едУ служить не буду.
К тому же явно сЁстры.
Я узнаЮ везде, где появляюсь.
И так далее, почти для каждого правила, с большей или меньшей вероятность. Конечно это лучше чем ничего, но нужно быть очень аккуратным при составлении правил. И лишит большей части правил вообще.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#540

Сообщение tonio_k »

Lecron писал(а):
22 окт 2020 15:59
с большей или меньшей вероятность.
как раз с вероятностями (определяется субъектвно) и приходится добавлять правила при составлении словарей. В "большинстве случаев", "в основном", "скорее всего", правило сработает верно. А если вылезет ошибка, надо будет только добавить другое более конкретное (с большим количеством слов) правило скорее к текущей книге, чем на будущее. Хотя есть мизерная вероятность, что другой автор в другой книге применит именно это словосочетание и правило сработает. Только об этом никак не узнаю, потому что вслух прочиталось верно, значит не надо к этому возвращаться. Хотя узнать можно - можно ввести статистику сработавших правил, копить, анализировать. Инструменты в скриптах для этого есть. Но это замедление общего процесса подготовки книги. И не факт что такая статистика будет полезной. Интересной - да. А вот практичность в плане обьема затрат по времени и ресурсам что бы потом удалить редкое правило которое никогда больше не сработает и выявив и удалив несколько десятков сотен таких правил на скорость работы словарей это практически не повлияет. Немного занесло под конец)))
Короче тут предполагают посмотреть принцип работы со скриптом. А сами правила и их ценность это как пример. Может эти правила сработают в самом начале обработки книги и дале будут неоднократно изменены более точными правилами из последующих словарей.

Аватара пользователя
Lecron
Специалист

Скрипты для Demagog

#541

Сообщение Lecron »

tonio_k писал(а):
22 окт 2020 16:33
В "большинстве случаев", "в основном", "скорее всего", правило сработает верно.
В этом-то и принципиальная ошибка. Нам неизвестны вероятности! То что один из вариантов нам уже предложили в данной книге, заставляет восприятие крутится вокруг него, отчего он кажется более вероятным. Но предложи книга "... дОма для рабочих", "узнаЮ везде" или самое яркое "К тому же явно сЁстры", были бы в словарь записаны именно они.
Как пример работы со скриптом — отлично. Как смысл и результат работы в таком контексте на будущие книги....

Если у кого собрана большая библиотека, можете сами поискать эти словосочетания поиском и убедится в моей правоте. Или вашей)))

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#542

Сообщение flegont »

Вероятности - неизвестны. Оценки вероятностей - известны, хотя они субъективны, зависят от общего объема прочитанного, и могут заметно различаться. Тем не менее, консенсус в большинстве случаев возможен. Я, например, уверен, что 99% здесь присутствующих правильно поставят ударение в последнем слове фразы:
Напряженная неделя заседаний закончилась, и депутаты Госдумы, наконец-то передохнут. :big_smile:
А кто-то и соответствующее rex-правило найдет :thinking:

Аватара пользователя
good_cat
Администратор

Скрипты для Demagog

#543

Сообщение good_cat »

Так, вы тут заканчивайте филологические изыски :big_smile:

Аватара пользователя
good_cat
Администратор

Скрипты для Demagog

#544

Сообщение good_cat »

flegont писал(а):
22 окт 2020 17:56
Оценки вероятностей - известны, хотя они субъективны, зависят от общего объема прочитанного, и могут заметно различаться.
Не только от объема, но и от жанра, от контекста. В современной литературе, если в начале предложения написано Модель, то скорее всего это модель. А вот, если это военная проза XX столетия, то вероятнее всего имеется в виду Модель. И подобные коллизии в принципе не разрешимы алгоритмическими путями.

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#545

Сообщение flegont »

Что ж... Подождем, пока спецы по нейросетям заинтересуются проблемой омонимии в русском языке.

Аватара пользователя
wasyaka
V.I.P.

Скрипты для Demagog

#546

Сообщение wasyaka »

Lecron писал(а):
22 окт 2020 15:59
Как понял, составляется словарь. Только вопрос, на одну книгу или на будущее?
Смысл на одну?
...И так далее, почти для каждого правила, с большей или меньшей вероятность.
Это просто пример как расставить омографы и ДОБАВИТЬ одновременно в словарь
А что добавлять - это сугубо индувидуально.
В окне Демагога не очень удобно это делать (для меня, использую Emurasoft EmEditor Professional - добавил подсветку омографов - основные и все остальные - разным цветом).
► Показать
Я все тексты подготавливаю и если со списком новых слов - всё добавляется, то с омографами не всё гут... Расставить не проблема, особенно с помощью Homograph, а добавить в словарь - довольно трудо-нудно-время-ёмкое занятие. Вот и возникла идея, спасибо tonio_k за скрипт НЕОБРАБОТАННЫЕ ОМОГРАФЫ.lua. Некоторые омографы добавляю тут же в словарь рег выражений

Код: Выделить всё

@(\bкрейсера\b)\s{1,4}([А-ЯЁ]\w+)(\,|\sи)\s{1,4}([А-ЯЁ]\w+)=крейсерА $2$3 $4
@(\bна\b)\s{1,4}([А-ЯЁ]\w+)\s{1,4}(\bострова\b)=$1 $2 островА
некоторые, в том числе с ошбками в тексте - откидываю и потом ручками...
И КОНВЕРТЕР требует допиливания, встречаются ньюансы...
. :thank:

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#547

Сообщение tonio_k »

flegont,
wasyaka писал(а):
22 окт 2020 21:39
В окне Демагога не очень удобно это делать (для меня, использую Emurasoft EmEditor Professional - добавил подсветку омографов - основные и все остальные - разным цветом).
может автор подумает над этим? Что бы не придумывать новые словари, может сделать "подсветку" на основе уже существующей поддержки словарей орфографии *.orfo? В настройках Литературный текст прописать либо/либо:
-подсветка ошибок
-подсветка слов из *.orfo
И при выборе второго варианта воспринимать словарь *.orfo как hmg, но с подсветкой, указанной в настройках.

Аватара пользователя
flegont
V.I.P.

Скрипты для Demagog

#548

Сообщение flegont »

1) В словаре *.orfo нет слов. Это - совершенно отдельная, не совместимая с другими словарями система - набор n-грамм для русского языка, при n=5. Поэтому ее ни к чему, кроме проверки орфографии - не приспособишь.
2)
tonio_k писал(а):
23 окт 2020 00:43
В окне Демагога не очень удобно это делать
Я не понял, в чем именно состоит неудобство. Поясните.

Аватара пользователя
tonio_k
V.I.P.

Скрипты для Demagog

#549

Сообщение tonio_k »

flegont писал(а):
23 окт 2020 10:20
Я не понял, в чем именно состоит неудобство. Поясните.
это была цитата от wasyaka - это ему неудобно :big_smile:

Аватара пользователя
wasyaka
V.I.P.

Скрипты для Demagog

#550

Сообщение wasyaka »

flegont писал(а):
23 окт 2020 10:20
Я не понял, в чем именно состоит неудобство. Поясните
Выделять для удаления лишнего надо с конца строки (или аккуратно) - а к этому надо привыкнуть - иначе нижняя строка присоединяется к текущей
► Показать
Отсутствие функций тхт редактора:
► Показать
Это из PSPad editor
Т.е всё равно надо к тхт редактору обращатся.

Ответить

Вернуться в «Demagog»