Кстати, тест Максима с реверберацией мне даже понравился. Создается впечатление, что это реальный человек, в некоем реальном окружении (пустая комната/студия) читает текст.
Если вот только бы реверберацию чуток ослабить
Вспомнился роман Роберта Хайнлайна "Луна - суровая хозяйка". Вождем грядущей революции выбрали суперкомпьютер. Уж он-то не предаст и не струсит. Суперкомп "Майк" общался с подпольщиками е-мейлами и телефонными звонками. Но, возникла проблема: голос "товарища Адама Селена" звучал "мертво", т.к. отсутствовал звуковой фон. Тогда добавили разные эффекты: легкую реверберацию, шорохи; иной раз голос секретарши сообщал, что тов. Адам говорит по другому телефону. Потом слышался звук спускаемой воды в унитазе, шаги, и голос тов. Адама: "Алло, Адам Селен слушает!"
Скрипты для Demagog
Добавлено: 25 ноя 2018 13:10
tonio_k
Моя логика: ускорение воспроизведения оригинальной записи должна быть без искажений. Это линейная задача без ответвлений. На выходе должно получится оригинал, но ускоренный. Всё остальное это уже побочный поиск "чего то нового".
Теперь о "фломастерах":
Ревербация сначала мною воспринималась как искажение от очень дёшевых наушников. Но это от того, что прямо под рукой есть оригинал.
Это как переход олдскульников от Николая Елановича к Максиму Ивонычу. Надо полчаса - час непрерывной прослушки текста в новом режиме. Только после этого становится понятно, нравится ли вам эта обнова или нет. И уже к Николаю не захочется вернуться. Потому что при попытке "обратной" привязки от Максима к Николаю скорее всего всего "возврат" уже не получится.
К стати, игра с ревербацией может оказаться неплохим обезбаливающим для ушей тем, кто желает от Николая отдохнуть.
Отправлено спустя 1 минуту 49 секунд:
А вот на счёт программы MP3 speed по скорости она работает намного быстрее Sox
Скрипты для Demagog
Добавлено: 25 ноя 2018 14:18
flegont
К стати, игра с ревербацией может оказаться неплохим обезбаливающим для ушей тем, кто желает от Николая отдохнуть.
MP3 speed по скорости она работает намного быстрее Sox
Ну, Sox - такой комбайн с таким множеством функций, что быстро ездить не может
а что если в sox скорость менять напрямую? Может это даст небольшой прирост в скорости самой обработки
В Демагоге в настройках аудио сохранять аудио в формате WAV, а в Sox сразу конвертировать WAV в ускоренный mp3?
В Демагоге в настройках аудио сохранять аудио в формате WAV, а в Sox сразу конвертировать WAV в ускоренный mp3?
Я ранее писал, что добавление sox в настройки внешнего кодировщика должно работать.
Проверил, из скрипта выводится нормально, например через WAudio(1,"C:\\temp\\",false).
► Показать
Снимок.JPG (38.36 КБ) 19507 просмотров
То есть без перекодировок, сразу в нужный формат.
Ещё из параметров SoX, помимо reverb 20 40 40, можно убрать pitch -50, это я для более гибкого понижения тона использовал.
Отправлено спустя 26 минут 46 секунд:
Попробовал с генерацией временных bat, как предложил flegont - тоже работает.
WNew(0)
local sox = string.format('"%ssox.exe"',HomeFolder('sox'))
local tmp_bat = string.format('%s\\%s', os.getenv("TEMP"),"tmp.bat")
local homedir = Folders("ВЫБЕРИТЕ ПАПКУ С MP3 для изменения скорости воспроизведения\n", '', true)
if not homedir then goto HALT end
local a = AllFiles(homedir,'*.mp3')
for i = 1,#a do
if FileExists(homedir..a[i]) then
local in_file = string.format('%s%s', homedir, a[i])
local out_file = string.format('%stemp_%s', homedir, a[i])
local doscomand = string.format('%s -G --multi-threaded -q "%s" -C 64.01 "%s" tempo -s 1.1', sox, in_file, out_file)
SaveToFile({doscomand}, tmp_bat)
if FileExists(tmp_bat) then
os.execute("chcp 1251 | "..tmp_bat)
os.remove(tmp_bat)
-- os.remove(in_file)
-- os.rename(out_file, in_file)
msg = string.format("УСПЕШНО: %s\n", in_file)
WLog(msg)
else
err_msg = string.format("ОШИБКА: Файл %s не был создан\nИсходное аудио %s не обработан\n",tmp_bat, in_file)
WLog(err_msg)
ShowMessage(err_msg)
goto HALT
end
end
end
::HALT::
Скрипты для Demagog
Добавлено: 25 ноя 2018 16:55
tonio_k
balaamster,
Думаю самое правильное решение как раз ваш первый вариант с
Общие настройки -> Аудио D:\Demagog\sox\sox.exe | -G --multi-threaded -q %1 -C 64.01 %2 tempo -s 1.1 | mp3
тогда ничего со скриптами не нужно придумывать.
В любом случае WAudio берет свои настройки записи из этого окна.
flegont, Общие настройки -> Аудио
а есть возможность "как то" прописать Demagog\sox\sox.exe что бы эта папка могла стать частью моей сборки "portabl"
что то вроде HomeFolder('sox')
Скрипты для Demagog
Добавлено: 25 ноя 2018 17:15
flegont
Такой возможности нет. Я с самого начала исходил из того, что "конвертер пользователя" либо находится прямо в рабочей папке Демагога (как и 4 штатных: lame, ogg и т.п.); либо указывается полное имя конвертера. В последем случае конвертер может находиться где угодно на компьютере пользователя.
WActive(1)
local home = HomeFolder()
local ini_path = home..'$.cfg'
local ini = LoadFromFile(ini_path,true)
os.rename (ini_path, ini_path.."_bkp")
for i=1,#ini do
if string.match(ini[i],'^Encoder=') ~= nil then
ini[i] = string.format("Encoder=%ssox\\sox.exe",home)
elseif string.match(ini[i],'^AllParam=') ~= nil then
ini[i] = 'AllParam=-G --multi-threaded -q %1 -C 64.01 %2 tempo -s 1.1'
elseif string.match(ini[i],'^AudioType=') ~= nil then
ini[i] = 'AudioType=mp3'
end
end
SaveToFile(ini,ini_path.."_mod")
os.rename (ini_path.."_mod", ini_path)
os.exit()
Остаётся только заново запустить ConfigureEncoder.lua и открыть Demagog после его автоматического закрытия.
Что интересно, os.exit() не даёт Demagog'у сохранить свой конфиг, поверх изменённого.
О оригинальный конфиг сохраняется в виде $.cfg_bkp, на всякий случай
Скрипты для Demagog
Добавлено: 25 ноя 2018 19:41
tonio_k
В любом случае предполагается "отдельный" запуск отдельно созданного скрипта использовать. Думаю универсальнее будет один раз настроить в самом Демагоге выходной аудио формат wav.
А Для реализации идеи с "portabl" добавлять в скрипты строки с генерацией консольных команд в temp.bat, для создания которых во всю можно будет применять функцию HomeFolder('sox')
Здесь можно прописать применение и lame.exe или другие консольные скачанные на свой вкус конверторы
Скрипты для Demagog
Добавлено: 25 ноя 2018 20:00
flegont
Хм... А ведь подобным "конфигурационным" скриптом можно любые желаемые настройки в $.cfg править. Какое-нибудь большое меню - выбрать, что именно править... потом подменю правки той или иной настройки, окошки ввода новых значений параметров и т.д. и т.п.
Получится скрипт по управлению настройками. Интересно
Отправлено спустя 11 минут 6 секунд:
P.S. os.exit() - сразу прекращается выполнение программы-хозяина. Например:
Лимонадный Джо каждый день приходил в салун, говорил собравшимся: "Всем привет!" и бармену: "Стаканчик виски!" Выпивал, занюхивал рукавом, говорил: "Заплачу завтра" и уходил, гордо звякая шпорами.
И вот, однажды он вошел, сказал "Всем привет...", тут же был схвачен за шиворот и вышвырнут из салуна. Виски осталось в бутылке в целости и сохранности. Точно так же и Демагог не успевает затереть $.cfg, будучи вовремя выпровожен за дверь
Скрипты для Demagog
Добавлено: 25 ноя 2018 21:18
tonio_k
balaamster, лень взяла свое.
Решил ваш скрипт, вносящий изменения в $.cfg - взять на вооружение.
создал !!!_ЗАПУСТИТЬ ОДИН РАЗ ПРИ ПЕРВОМ ЗАПУСКЕ ДЕМАГОГа.lua и поместил туда ваш код.
в нем добавил строки перед os.exit():
local home = HomeFolder('_Tests_')
os.remove(home..'\\!!!_ЗАПУСТИТЬ ОДИН РАЗ ПРИ ПЕРВОМ ЗАПУСКЕ ДЕМАГОГа.lua')
ShowMessage('Первый запуск - готово! Перезапустите Демагог')
os.exit()
Получился скрипт, который после отработки самоуничтожается.
с портативной версией всё становится гораздо проще:
Копируем ffmpeg.exe (нужно скачать "static" версию) в папку с Demagog, прописываем настройки:
Custom encoder
ffmpeg.exe
-loglevel -8 -y -i %1 -af atempo=1.1 -b:a 64k %2
mp3
Для реверберации нужно прописать такие настройки:
-loglevel -8 -y -i %1 -af "aecho=0.8:0.6:20|40:0.2|0.2, atempo=1.1" -b:a 64k %2
► Показать
Снимок.JPG (38.59 КБ) 19463 просмотра
Так как ffmpeg (static) идёт одним экзешником, то не потребуется править конфиг.
Скрипты для Demagog
Добавлено: 25 ноя 2018 21:46
tonio_k
потестю. Есть предположение что скорость обработки будет быстрее
Отправлено спустя 13 часов 48 минут 15 секунд: balaamster, Все работает отлично! И скорость хорошая.
Единственный минус - это размер в 45Мб - тяжеленький для консольной утилиты
Вопрос. В lame -b64 -f (-f это низкое качество) А как в ffmpeg сделать низкое качество?
Вроде -q за это отвечает причем 1 - высшее качество. Но вот шкалу вариации качества не нашел. Может там только два значения? 1 или 0?
"Все подходящие" выводятся в окно Статистики в алфавитном порядке, с игнорирование дубликатов.
А скриптом можно как то мою проблему решить?
Дело в том, что "вывести всё" - это единственный известный мне способ работы со словарями rex или dic по "фильтру". А если результат будет отсортирован без сохранения последовательности как в оригинале, то может быть нарушен порядок их срабатывания ( для rex).
Вот и хотелось бы решить эту задачу хотя бы через скрипт. Схему работы со словарями представляю примерно по такой схеме:
Вывод всех целых строк с сохранением последовательности строк как в оригинале с пользовательскими условиями выборки:
1)Слово / Часть слова (С учётом регистра / без учёта регистра) находящегося в левой части правила
2)Слово / Часть слова (С учётом регистра / без учёта регистра) находящегося в правой части правила
3) с возможностью дополнительно активировать режим: поиск по пунктам 1 и 2 с заменой найденных строк в оригинале на "пусто", но при этом (на всякий случай) полученный результат поиска дополнительно сохранить во временном текстовом файле - пусть перезаписывается каждый раз после команды "найти".
Скрипты для Demagog
Добавлено: 27 ноя 2018 11:14
flegont
Если текст не содержит символов Юникода (например, транскрипцию IPA), то средствами Lua можно (в принципе) делать с текстом что угодно. В Lua есть свой собственный язык "регулярных выражений" - простенький, но позволяет формулировать запросы поиска. Например: %a+ найти слово целиком. И т.д. и т.п.
Трудность будет представлять только один нюанс. Lua - язык регистро-чувствительный, и в нем нет функций, позволяющих искать в тексте без учета регистра. Известен трюк для обхода этого ограничения, но, насколько он будет затормаживать процесс поиска - сведений не имею.
Более содержательный ответ даст только эксперимент.
Скрипты для Demagog
Добавлено: 27 ноя 2018 11:41
tonio_k
А насколько критично в поиск/замена добавь возможность отключить /включить сортировку? Что бы выводило"как есть"?
Отправлено спустя 6 минут 47 секунд:
Или вообще сортировку отключить по умолчанию. Ведь по идее, результат всегда можно и самостоятельно отсортировать правая клавиша-сортировка строк-без дубликатов. Зато не будет "потерян" нужный промежуточный результат в оригинальной последовательности.
Скрипты для Demagog
Добавлено: 27 ноя 2018 11:58
flegont
Зато не будет "потерян" нужный промежуточный результат в оригинальной последовательности.
На заре создания опции "Найти/Заменить" я однажды в большом тестовом примере вывел "Все подходящие" для ключа поиска "все". Дубликаты тогда не отсеивались и я получил много-много тысяч строк вида: все
все
все
все
все
...
все
И что? Это как-то помогло мне определить место каждого этого/того же самого слова в оригинальном тексте?
Во избежание подобных огромных и практически бессодержательных отчетов о "всех подходящих", было сделано так, как сделано. Алфавитный порядок без дубликатов.
Скрипты для Demagog
Добавлено: 27 ноя 2018 13:50
tonio_k
В принципе Notepad++ может искать по шаблону REX и выводить результат в последовательности как в оригинале. Пока в нём поработаю.
Что касается скрипта, надо будет придумать как превратить поисковую строку REX
Отправлено спустя 2 часа 1 минуту : flegont, вспомнил, что в стандартной комплектации Демагог есть скрипт Fragments with given words.lua очень похоже, что StrMatch(string.lower(w[j]),fnd) как раз и находит строку без учета регистра (при условии, что в строку поиска я ввожу слово в нижнем регистре). Но мозгов у меня не хватит подсунуть маску для поиска ^[^=]*=[^=]*fnd[^=]*$ подскажите как это сделать.
Отправлено спустя 2 минуты 53 секунды:
И добавить строчку в скрипт по замене найденной строки на ""
Скрипты для Demagog
Добавлено: 27 ноя 2018 16:35
flegont
Кажется, мы ведем наступление в одном направлении и танковые клинья вот-вот возьмут противника в клещи
StrMatch() в данном случае не подойдет, т.к. она использует обычный, примитивный поиск по маске со * или без нее. Но в составе Демагога есть функция PosR() - поиск в строке по регулярному выражению.
Я попробую импортировать ее в интерпретатор. Чтобы ею можно было пользоваться прямо из скрипта.Теоретически - всё должно работать. При условии, что в маске поиска - регулярном выражении, и в исследуемой строке нет символов Юникода.
RexMatch(s, mask, pos) - ищет совпадение в строке s по регулярному выражению mask с начальной позиции pos (по умолчанию 1); возвращает совпавший фрагмент и позицию его начала. Если не найдено, то возвращает '', 0
DicMatch(s, mask, pos) - ищет совпадение в строке s по dic-выражению mask с начальной позиции pos (по умолчанию 1); возвращает совпавший фрагмент и позицию его начала. Если не найдено, то возвращает '', 0
Замечание: юникодные символы в s и mask - не поддерживаются.
-- печать всех строк текста из окна 1, отвечающих заданному регулярному выражению
-- поиск идет с учетом регистра (символ @ в начале РВ)
s = WText(1)
r = [[@^[^\=]*\=[^\=]*вОрон\b[^\=]*$]]
k = 1
while k > 0 do
fnd, k = RexMatch(s,r,k)
print(fnd)
if k > 0 then k = k+#fnd+1 end
end
-- печать всех фрагментов текста из окна 2, отвечающих заданному dic-правилу
-- поиск, в данном случае, идет без учета регистра
s = WText(2)
r = [[все * *ло]]
k = 1
while k > 0 do
fnd, k = DicMatch(s,r,k)
print(fnd)
if k > 0 then k = k+#fnd end
end
Скрипты для Demagog
Добавлено: 28 ноя 2018 14:24
tonio_k
Пример использования RexMatch(s, mask, pos) .
Всё то же самое, но с окном ввода и сохранением последнего поискового запроса (вытащил из Fragments with given words.lua)
-- печать всех строк текста из окна 1, отвечающих заданному регулярному выражению
-- поиск идет с учетом регистра (символ @ в начале РВ)
ind = WActive()
s = WText(ind)
header = 'Поиск фрагментов текста'
askname = 'Регулярное выражение (REX):'
defname = [[@^[^=]*\=[^=]*шаблОн[^=]*$]]
if FileExists('#RexFind.@') then
fnd = LoadFromFile('#RexFind.@')[1]
else
fnd = defname
end
fnd = Input(header,{askname..'='..fnd})
if not fnd then goto HALT end
fnd = fnd[1]
SaveToFile({fnd},'#RexFind.@')
WNew(0)
r = fnd
k = 1
while k > 0 do
fnd, k = RexMatch(s,r,k)
print(fnd)
if k > 0 then k = k+#fnd+1 end
end
WActive(0)
::HALT::
Единственная просьба, подскажите, как можно сделать так, что бы все найденные фрагменты в оригинале - удалялись?
Отправлено спустя 12 минут 12 секунд:
к стати, такой вариант запроса скорее всего будет более правильный:
Отправлено спустя 6 минут 6 секунд:
P.S. в "диалоговое окно" регулярное выражение надо вводить без окаймляющих [[ ]]
Отправлено спустя 9 минут 20 секунд:
И опять возникла "потребность" в возможности назначения горячей клавиши для скрипта. Пусть эта горячая клавиша запускает скрипт с уникальным именем (и желательно вне общего списка скриптов) - его содержимое пользователь сам меняет под свои нужды.
Пока работал с поиском RexMatch(s, mask, pos) . - Пару раз щелкнул не по тому скрипту и понеслась...
Скрипты для Demagog
Добавлено: 28 ноя 2018 15:13
flegont
чтобы все найденные фрагменты в оригинале - удалялись
-- Удаление из текста по шаблону
s = WText(1)
r = [[\bвсе\b\s+\w+\s+\w+ло\b]]
k = 1
while k > 0 do
fnd, k = RexMatch(s,r,k)
if k > 0 then
z = k + #fnd
s = string.sub(s,1,k-1)..string.sub(s,z+1,#s) -- вырезаем найденное
end
end
WNew(1,s) -- обновляем исходный текст
z = k + #fnd
s = string.sub(s,1,k-1)..string.sub(s,z+1,#s)
не удаляет может потому что k не меняется?
Скрипты для Demagog
Добавлено: 28 ноя 2018 15:50
flegont
k меняется при каждом обороте цикла. Пример выше у меня сработал.
Скрипты для Demagog
Добавлено: 28 ноя 2018 16:15
tonio_k
понял . Я то думал это пример 2 в 1 (и находит и удаляет).
Скопировал - вставил и жду когда "хорошо" наступит .
А это, оказывается, пример только удаления по шаблону.
Удаление - все работает!
Отправлено спустя 2 часа 20 минут 42 секунды:
Допустим, после отработки скрипта вместо удаленных ячеек у меня вставляются строки:
#_вырезано
#_вырезано
Вопрос, как можно через скрипт найти любую из них, что бы курсор переместится на найденную строку и соответственно отображение экрана сместилось к этой строке?
Скрипты для Demagog
Добавлено: 28 ноя 2018 20:03
flegont
Можно один и тот же каменный топор использовать для всех хозяйственных нужд
-- найти и выделить в тексте в окне 4 слово "история"
s = WText(4)
mask = [[история]]
fnd, k = RexMatch(s,mask,1)
if k > 0 then WSel(4,k-1,#fnd) end
Отправлено спустя 9 минут 17 секунд:
А вот вариант с поиском стандартной функцией Lua string.find() Замечание. os.setlocale переключает дефолтную кодовую страницу Lua на учет местной локали, т.е. при поиске буквами будут считаться буквы английского и русского языка.
скажите, а есть возможность его применения в виде замены с захватами типа:
r = [[\bвсе\b\s+(\w+)\s+(\w+ло)\b]]
v = [[всЁ $1 $2]]
аналог \bвсе\b\s+(\w+)\s+(\w+ло)\b=всЁ $1 $2 из словаря rex
Скрипты для Demagog
Добавлено: 30 ноя 2018 11:52
flegont
В следующей версии попробую сделать.
Демагоговский модуль function PosR(...), который я импортировал в Lua под именем RexMatch, имеет дополнительный параметр: строку - шаблон замены, с обработкой захватов. Просто я этот параметр имортиртировать не стал, решил, что это уже лишнее.
Непродуманное было решение, однако
Скрипты для Demagog
Добавлено: 30 ноя 2018 13:23
tonio_k
скрипт работает, но если в окне, к которому хотим применить этот скрипт выделить текст, то происходит странное - в окне остается только выделенный текст, а в окне статистики пусто
-- печать всех строк текста из окна 1, отвечающих заданному регулярному выражению
-- поиск идет с учетом регистра (символ @ в начале РВ)
ind = WActive()
s = WText(ind)
header = 'Поиск фрагментов с заданными словами'
askname = 'Регулярное выражение (REX):'
defname = [[^(.)*(.)*=(.)*(.)*$]]
if FileExists('#rexFind.@') then
fnd = LoadFromFile('#rexFind.@')[1]
else
fnd = defname
end
fnd = Input(header,{askname..'='..fnd})
if not fnd then goto HALT end
fnd = fnd[1]
SaveToFile({fnd},'#rexFind.@')
--поиск
WNew(0)
r = fnd
k = 1
while k > 0 do
fnd, k = RexMatch(s,r,k)
WLog(fnd)
if k > 0 then k = k+#fnd+1 end
end
--удаление найденного
k = 1
while k > 0 do
fnd, k = RexMatch(s,r,k)
if k > 0 then
z = k + #fnd
s = string.sub(s,1,k-1)..'#_вырезано\r'..string.sub(s,z+1,#s) -- вырезаем найденное
end
end
WNew(ind,s) -- обновляем исходный текст
--s_0 = WText(0)
--SaveToFile({s_0},'#tempVirezka.txt')
--WActive(0)
-- установить курсор на позиции найденного
--s = WText(ind)
--mask = '#_вырезано'
--fnd, k = RexMatch(s,mask,1)
--if k > 0 then WSel(ind,k-1,#fnd) end
--SaveToFile({s},'#tempSlovar.txt')
::HALT::
Скрипты для Demagog
Добавлено: 30 ноя 2018 13:56
flegont
Я точно не помню, надо глянуть в программе: как работает WText(). Возможно, там остался "артефакт" - возврат строки, равной не всему тексту, а только выделенному фрагменту (если таковой имелся). Это - нехорошо. Буду разбираться.
Скрипты для Demagog
Добавлено: 30 ноя 2018 15:30
flegont
замены с захватами
Это должны быть 2 новые функции:
RexRepl(s, p, q) - замены в строке s, где p - регулярное выражение для поиска, возможно, с захватами; q - РВ для замены. p, q можно считать левой и правой частью некоторого правила из rex-словаря
DicRepl(s, p, q) - аналогично, p и q - понимаются, как левая и правая части некоторого dic-правила
Скрипты для Demagog
Добавлено: 30 ноя 2018 18:59
tonio_k
RexRepl(s, p, q) навело на мысль о создании скрипта - диалогового окна для тестирования правил регулярного выражения. Внешний вид -Три текстовых окна:
1) для регулярного выражения
2) входящий текст
3) результат работы регулярного выражения
Главное - что бы можно было выбрать размер шрифта для текста или сразу сделать его по крупнее.
Отправлено спустя 35 минут 58 секунд:
Хм.... Или попробовать сделать скрипт под одно окно Демагога. Который будет работать с текстовым файлом в виде:
Сюда вводим правило rex
#--------------------------------------
Текст
#--------------------------------------
Результат
Скрипты для Demagog
Добавлено: 30 ноя 2018 19:45
flegont
1) Кнопка "T" в панели инструментов - настройка вида и размера шрифта.
А колесико мыши при одновременно нажатой левой клавише - масштаб. Его величина в % показывается в Строке состояния. В разных окнах можно задавать прокруткой колесика разный масштаб. Выбранные масштабы действуют в течение сеанса. При закрытии Демагога сбрасываются на 100% по умолчанию.
2) И так можно. Или, с каким-то словом-разделителем:
Правило rex +debug+ Текст
После выполнения скрипта текст приобретает вид, как на примере выше. Вверху правило, внизу текст, за ним результат
Или "операционные скобки" <<<правило>>>текст<<<end>>> обрамляющие любые фрагменты книги, которые надо протестировать. Причем с разными правилами. А результат в Статистику.
Вариантов масса.
Скрипты для Demagog
Добавлено: 30 ноя 2018 22:57
tonio_k
Все же скриптом - не очень удобно. Нужно нажать кнопку вызова окна со скриптами, найти нужный среди прочих, запустить его. Для этой задачи нужно отдельное рабочее окно - внёс корректировку в правило - нажал кнопку - смотрим результат и редактируем на месте.
Скрипты для Demagog
Добавлено: 30 ноя 2018 23:11
flegont
Ну, для этого давно есть опция Ctrl+T - Показать применение правил.
В одном окне открыт словарь, он отмечен в Панели словарей.
Меняю правило, сохраняю изменение.
В окне, где текст, выделяю исследуемый фрагмент.
Ctrl+T
Появляется окно просмотра.
Результат в верхней его половине, примененное правило в нижней.
Скрипты для Demagog
Добавлено: 01 дек 2018 00:34
balaamster
Попробовал написать конвертер, который будет добавлять фон, устанавливать начало затухания фона, в зависимости от длительности речевого файла.
В тестовом варианте входные/выходные форматы mp3,wav,ogg.
Добавление фона отключается в диалоговом окне.
Есть выбор входного и выходного каталогов.
Архив необходимо распаковать в папку с Demagog. В папку fon скопировать mp3-файлы с фоновым звуком. ffmpeg должен лежать также в папке с Demagog.
Скрипты для Demagog
Добавлено: 01 дек 2018 01:56
tonio_k
balaamster, сначала создаем как обычно книгу в mp3,wav,ogg со своими настройками в изменении скорости воспроизведения (-af atempo=1.1)
Потом запускаем Ваш скрипт, который запускает converter.exe задает вопросы и начинает конвертировать по второму кругу.
Я правильно понял?
Отправлено спустя 4 минуты 12 секунд:
тогда "до кучи" может и (-af atempo=1.1) в скрипт добавить?
Отправлено спустя 11 минут 45 секунд:
Интересно, а можно как то "присобачить" mp3info.exe как Custom Encoder Напрямую в настройки к Демагогу может он какие то ini файлы поддерживает?
В одном окне открыт словарь, он отмечен в Панели словарей.
flegont, именно это для меня самое большое неудобство. Постоянно висит словарь среди основных. Можно про него забыть и он может сработать с основными словарями, а потом ищи где и почему не так работает .
Вот готовый вариант скрипта по тестированию правил по шаблону REX.
Плюсы: можно вводить сразу несколько строк правил rex - что бы увидеть как они в совокупности отрабатывают. Минусы: - в обрабатываемом тексте не должен присутствовать знак равенства (=).
Знак равенства для скрипта является критерием отличия правила REX от обрабатываемого текста. Зато нет необходимости в разделителях между правилами REX и обычным текстом. Правило REX можно вводить как перед так и после обрабатываемого текста.
Если в всплывающем окне сравниваемые тексты не вмещаются, то их копия находится в окне статистики
Скрипты для Demagog
Добавлено: 01 дек 2018 12:50
flegont
Скромненько, но со вкусом Всё работает как надо. А в новой версии, которую я сейчас тестирую, достаточно, введя правило и текст, нажать Shift+F2 для получения ответа.
(Shift+F2 - хоткей для прикрепления к нему какого-нибудь, часто используемого скрипта. Вот я и проверил, прикрепив .ТЕСТ REX ПРАВИЛА.lua )
получается "быстрый запуск скрипта" назначается только для одного любого скрипта? Или, например, Shift+F3 для ещё одного и так далее для нескольких скриптов?
Скрипты для Demagog
Добавлено: 01 дек 2018 13:08
flegont
Пока тестовый вариант прикрепления только для одного скрипта. Но хочется чего-нибудь вроде:
Базовый хоткей+0
Базовый хоткей+1
...
Базовый хоткей+9
Так сказать, чтобы можно было назначить TOP-10 самых нужных скриптов. Этого - более чем достаточно.
Что выбрать для базового хоткея - еще надо подумать. Практически все комбинации уже задействованы в тех или иных пунктах меню. Ну а F2 изначально использовалась для запуска скрипта из окна, может, из нее и надо что-то строить...
Отправлено спустя 1 час 31 минуту 6 секунд:
P.S. Прикинул, TOP-5 дефолтных скриптов будет достаточно, имхо
сначала создаем как обычно книгу в mp3,wav,ogg со своими настройками в изменении скорости
Сразу не описал порядок действий, в голове то у меня картина есть, а то что надо описать как оно работает - забыл
► Показать
сначала создаём серию в mp3,wav,ogg
запускаем "converter.lua"
выбираем папку, где лежит серия - формат, в котором создана серия
выбираем целевую папку - целевой формат - битрейт
с фоном или без
выбираем желаемый темп речи.
смотрим выбранные параметры, принимаем решение.
Дополнил скрипт выбором темпа речи.
Заменил mp3info на более тяжеловесный MediaInfo, который может получить длительность не только mp3, но и других форматов.
Интересно, а можно как то "присобачить" mp3info.exe как Custom Encoder
Теоретически можно.
В CustomEncoder прописать bat-файл, который будет получать имена входного и выходного файла, а вся сценарная логика обработки будет прописана в bat. Это максимально неудобный вариант. Работа со строками в bat реализована отвратительно, по сравнению с другими скриптовыми языками. Да и много других неудобств будет при реализации скрипта.
В CustomEncoder прописать bat-файл, который будет получать имена входного и выходного файла.
Папку Demagog дополнить интерпретатором lua.exe и из bat вызывать lua-скрипт.
Возможно, попробую реализовать какой-нибудь вариант. При наличии свободного времени.
Отправлено спустя 1 день 2 часа 53 минуты 19 секунд:
Интересно, а можно как то "присобачить" mp3info.exe как Custom Encoder Напрямую в настройки к Демагогу может он какие то ini файлы поддерживает?
Сделал интеграцию Mediainfo и FFmpeg через bat-сценарий.
Теперь всё как обычно:
распаковываем conv.bat в папку с Demagog. (Mediainfo.exe и FFmpeg.exe должны также лежать там)
прописываем полный путь к conv.bat (просто conv.bat у меня не работает)
в строку параметров конвертера: %1 %2 64 1.0
порядок параметров получается такой: путь_входного_файла путь_выходного_файла битрейт темп
формат прописываем mp3 или ogg