Скрипты для Demagog

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

Модератор: flegont

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

Скрипты для Demagog

#301

Сообщение tonio_k » 14 апр 2019 16:18

Пожелание, а есть возможность добавить что-то вроде показателя прогресса?
Пока висят консольные запросы на Яндекс, создается ощущение, что они ... "висят/зависли" :smile1:
Например, количество полученных аудиофайов из количества временных текстовых файлов.
(Получено 3 из 263)
Короче, что бы что-то двигалось, при условии, что действительно что-то в плане файлов двигается :big_smile:


Отправлено спустя 5 минут 42 секунды:
Может это сделать как отдельную утилиту (еще одно окно консоли)? Которая вызывается YaTTS после разбития на сериалы и занимается только сравнением содержимого временных файлов. И при их равенстве сама закрывается.

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

Скрипты для Demagog

#302

Сообщение wasyaka » 14 апр 2019 19:31

tonio_k писал(а):
14 апр 2019 16:24
Пожелание
А зделать, чтобы:
Открываем обработанный текст, заглавной буквой ударения, - универсализм - далее или на Макса- Таню или...
подключаем словари для Яндеса и обработка этими словарями с последующей записью одним целым действием? :thank:

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

Скрипты для Demagog

#303

Сообщение tonio_k » 14 апр 2019 20:01

wasyaka писал(а):
14 апр 2019 19:31
Открываем обработанный текст, заглавной буквой ударения
можно по пунктам как вы хотите что бы работало?

Если я правильно понял, в папку dic вы хотите добавить свои словари (rex, dic).
В Демагоге открыть текст, в котором предварительно уже проставили все ударения заглавными буквами (как для Максима).
И теперь нужно, что бы к открытому тексту в Демагоге, Запустить всего один скрипт, который обработал текст вашими подключичными словарями и начал его отправлять на Яндекс и получать mp3?

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

Скрипты для Demagog

#304

Сообщение wasyaka » 14 апр 2019 21:30

tonio_k писал(а):
14 апр 2019 20:01
И теперь нужно, что бы к открытому тексту в Демагоге, Запустить всего один скрипт, который обработал текст вашими подключичными словарями и начал его отправлять на Яндекс и получать mp3?
В точку.
После первичной обработки текста словарями добиваю раставляю омографы вручную в Homograph, а после одним действом, если исключить Homograph, то получится - всавил текст -
включил скрипт - получил запись...

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

Скрипты для Demagog

#305

Сообщение tonio_k » 14 апр 2019 23:05

Пока готовил скрипт под вашу просьбу, всплыла проблема Version 7.29.370 при работе скрипта со словарями. flegont я проблему описал. Скрипт уже готов. Как проблема решится - сразу скину сборку с комментариями для редактирования

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

Скрипты для Demagog

#306

Сообщение flegont » 15 апр 2019 00:13

Завтра буду разбираться с 370-й, сравню по архиву версий :thinking:
UPDATE: исправил, версия обновлена до 371

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

Скрипты для Demagog

#307

Сообщение tonio_k » 15 апр 2019 00:36

wasyaka писал(а):
14 апр 2019 21:30
- всавил текст -
включил скрипт - получил запись...
Решил не дожидаться исправления и сделал сборку на основе предыдущей версии 7.29.369
черновик

Инструкция:
1) Кроме файла СПИСОК СЛОВАРЕЙ.lua содержимое папки \Demagog-Yandex\dic - можно удалить
2) Помещаем свои словари в папку \Demagog-Yandex\dic\
3) Открываем через блокнот (удобнее через Notepad++) \СПИСОК СЛОВАРЕЙ.lua
4) Редактируем только строки начинающиеся с

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

WFilter(0,0,dic..
путем удаления ненужных строк и вставки наименование файлов своих словарей.
Строки можно сортировать в той последовательности, в которой нужно что бы словари сработали.

Что бы не путаться, можно везде поставить выбор алгоритма применения словаря:

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

false)  --перебором (галочка убрана)
если словарь rex, то false) или true) можно поставить любой - ошибкой не будет

После редактирования СПИСОК СЛОВАРЕЙ.lua
1) запускаем Демагог
2) Ctrl+F2 - запускаем YaTTS_configure.lua и сохраняем настройки. (сохранённые настройки будут применяться для всех последующих запусков Демагога.)

Теперь сама процедура:
3) Открываем/перетаскиваем/вставляем текст книги в любое окно кроме 0-статистика
4) Ctrl+F2 - запускаем 20_ОКНО ОБРАБОТАТЬ СЛОВАРЯМИ и получить MP3.lua
- выбираем папку куда сохранить mp3
- измененный словарями текст будет сохранен в файл \Demagog-Yandex\temp\0.txt
5) Ждем завершение работы скрипта (по готовности в окне статистики появится лог информация)
6) находим наши MP3 в папке которую ранее выбирали :wink:

В случае сбоя и расхождения в файлах от Яндекса:
6) открываем в любом окне Демагога файл \Demagog-Yandex\temp\0.txt
7) Ctrl+F2 - запускаем YaTTS.lua

Аватара пользователя
balaamster
Обыватель

Скрипты для Demagog

#308

Сообщение balaamster » 15 апр 2019 16:24

tonio_k писал(а):
14 апр 2019 16:24
Пожелание, а есть возможность добавить что-то вроде показателя прогресса?
Добавил прогрессбар

Обновлённая инструкция.
► Показать
Demagog+YandexTTS.zip
(6.32 КБ) 31 скачивание

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

Скрипты для Demagog

#309

Сообщение tonio_k » 16 апр 2019 19:17

В lua есть возможность вызвать скрипт в параллельном потоке?
Т.е. идет выполнение скрипта 1.
В скрипте 1 вызывается скрипт 2.
При этом, скрипт 1 работает дальше, а скрипт 2 в это время начинает делать свою задачу.

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

Скрипты для Demagog

#310

Сообщение flegont » 16 апр 2019 21:09

Конкретно так - нельзя.
Но в Lua есть понятие "сопрограммы" - coroutine.
Скрипт, в процессе своей работы может создать нужное количество сопрограмм. Каждая сопрограмма может находится в состоянии: выполняется, приостановлена, мертва.
Т.о. скрипт может работать в (псевдо) многозадачном режиме.

Но сопрограммы действуют только внутри виртуальной Lua-машины, и никак не связаны с потоками в операционной системе.
Подробно в этом я пока не разбирался. Надо будет учебник Р. Иерусалимского почитать, и в справочном руководстве Lua 5.3 пошарить. И поискать примеры скриптов с сопрограммами :pardon:

Аватара пользователя
balaamster
Обыватель

Скрипты для Demagog

#311

Сообщение balaamster » 16 апр 2019 21:25

flegont писал(а):
16 апр 2019 21:09
Но в Lua есть понятие "сопрограммы" - coroutine.
Это интересная часть Lua, но, прочитав один раз раздел книги Иерусалимского, так и не разобрался в вопросе. Понял, как можно написать генераторы, подобные генераторам в python, но не более.
Чувствую, что надо ещё раза два прочитать :)

Ещё один способ запустить несколько "потоков" это os.execute()
Но эти "потоки" будут "неконтролируемые".

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

os.execute('start "program1" D:\scripts\script_1.bat parameter1 parameterN')
os.execute('start "program1" "D:\scripts\script 2.cmd" parameter1 parameterN')
os.execute('start "program1" D:\scripts\lua53.exe "D:\script 3.lua" parameter1 parameterN')
Все три скрипта запустятся практически мгновенно друг за другом, так как start без ключа /wait запускает новый процесс и сам завершает работу.
Но, при таком исполнении, надо будет писать функцию, которая будет по какому-то критерию отслеживать завершение работы этих запущенных параллельно скриптов, если в дальнейшем понадобятся данные, произведённые этими скриптами (чтобы быть уверенным, что скрипт вернул все нужные данные или наоборот завершился с ошибкой).

P.S. lua-скрипт, из третьей строки, запустится в "чистом" lua. Ему будут недоступны внутренние функции из Demagog.

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

Скрипты для Demagog

#312

Сообщение tonio_k » 17 апр 2019 14:59

os.execute('start "program1" D:\scripts\lua53.exe "D:\script 3.lua" parameter1 parameterN')
я так понимаю это будет чисто в рамках lua без функций типа RexRepl от demagog?


Отправлено спустя 21 минуту 54 секунды:
Графическая библиотека Demagog дает возможность получать результаты работы скрипта в наглядной форме, в виде графиков и диаграмм. Для подключения в начале скрипта необходимо указать: require "profiles/grafica"

Вопрос, это одноразовое что то типа ShowMessage только выводит график один раз? или параллельная - может менять отображение графика по мере работы основного скрипта? Это я закидываю удочки на счет альтернативного статус бара в виде необычной круговой диаграммы например.

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

Скрипты для Demagog

#313

Сообщение flegont » 17 апр 2019 15:48

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

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

Скрипты для Demagog

#314

Сообщение flegont » 18 апр 2019 10:15

Простой графический индикатор

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

require "profiles/grafica"

-- графический индикатор процесса
-- i изменяется от 1 до imax
function Gauger(i,imax)
    Clear()
    Area(-100,-100,100,100) 
    Pen(Red,1)
    Brush('FFFFA4')
    Ellipse(-80,-80,80,80)
    Brush('')
    Brush(LightGreen)
    Pie(-80,-80,80,80,0,2*math.pi*i/imax)
    Render()
end


-- пример использования
Show()
imax = 1000
for i = 1,imax do
    Delay(1) -- имитирует процесс неких вычислений внутри цикла
    if i % 50 == 0 then -- достаточно 20 кадров по ходу процесса 
        Gauger(i,imax)  -- отображает готовность i-го шага вычислений
    end
end
Hide()

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

Скрипты для Demagog

#315

Сообщение flegont » 18 апр 2019 10:58

Простой графический индикатор 2
Если в предыдущем примере заменить функцию Gauger на приведенную ниже, то получится индикатор, дополнительно отображающий процент выполнения

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

-- графический индикатор процесса
-- i изменяется от 1 до imax
function Gauger(i,imax)
    Clear()
    Area(-100,-100,100,100) 
    Pen(Red,1)
    Brush('FFFFCE')
    Ellipse(-80,-80,80,80)
    Brush('')
    Brush(LightGreen)
    Pie(-80,-80,80,80,0,2*math.pi*i/imax)
    Brush(White)
    Ellipse(-55,-55,55,55)
    Font('Arial',20,Green)
    TextOut(-15,15,math.floor(100*i/imax))
    Render()
end

Аватара пользователя
balaamster
Обыватель

Скрипты для Demagog

#316

Сообщение balaamster » 23 апр 2019 22:11

Сегодня задался вопросом, почему никто не задал вопрос, о неработающем скрипте для Яндекс TTS.
Ведь по умолчанию выполнение powershell отключено в пользовательских ОС.

Обнаружил интересную особенность. При политиках по умолчанию (запуск скриптов отключен):

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

 Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine      Restricted
Создаём в lib файл test.ps1, с содержимым:

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

get-executionpolicy -List | format-list
pause
Запускаем из окна Demagog по F2:
os.execute('powershell -file '..HomeFolder('lib')..'test.ps1')
Получаем (запуск скриптов включен, подпись не проверяется)

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

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine          Bypass
Получается в библиотеке Lua учтена эта особенность политики по умолчанию и внесена правка?

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

Скрипты для Demagog

#317

Сообщение tonio_k » 23 апр 2019 22:20

На сколько мне известно, powershell запущенный из под cmd не требует включения политик для самого powershell. А os.execute, как я понял, это что то вроде аналога cmd. Может в этом дело?

Аватара пользователя
balaamster
Обыватель

Скрипты для Demagog

#318

Сообщение balaamster » 10 май 2019 21:41

balaamster писал(а):
15 апр 2019 16:24
Demagog+YandexTTS
Обновил скрипты.
  • конфигуратор запроса к TTS-сервису выполнен в виде hta-файла
  • добавлена глобальная переменная clean_start, значение true - очистить папку со временными файлами, перед началом обработки. false (по умолчанию) - папка не очищается.
  • озвучка выделенного фрагмента перенесена в консоль PowerShell.
Способ работы со скриптами.
► Показать
Demagog+YandexTTS.zip
(28.04 КБ) 20 скачиваний

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

Скрипты для Demagog

#319

Сообщение flegont » 10 май 2019 22:22

Обновлена соответствующая ссылка на сайте Demagog.

Аватара пользователя
zhukov23
Наблюдатель

Скрипты для Demagog

#320

Сообщение zhukov23 » 19 май 2019 14:35

Обновил скрипты.
конфигуратор запроса к TTS-сервису выполнен в виде hta-файла
добавлена глобальная переменная clean_start, значение true - очистить папку со временными файлами, перед началом обработки. false (по умолчанию) - папка не очищается.
озвучка выделенного фрагмента перенесена в консоль PowerShell.
Способ работы со скриптами.
Не знаю, конечно, кто может в этом разобраться. Ни одной нормальной инструкции. Откуда взять ключ разработчика? https://cloud.yandex.ru/docs/iam/operat ... key/create здесь я получил ключ, но он вот такого формата:
api_key:
id: ajeke74kbp5bfq7m6ka2
service_account_id: ajepg0mjt06siuj65usm
created_at: "2019-04-09T08:41:27Z"
secret: AQVN1HHJReSrfo9jU3aopsXrJyfq_UHsssT5ICtm

А что вставлять в YATtsConfigurator? Там ключ другого формата.

Аватара пользователя
balaamster
Обыватель

Скрипты для Demagog

#321

Сообщение balaamster » 19 май 2019 19:23

zhukov23 писал(а):
19 май 2019 14:35
Откуда
Текущий формат ключа, выдаваемого Яндексом, подходит только для новой версии сервиса, в котором запрос на озвучку идёт через метод POST.

У меня в скриптах идёт обращение к старой версии сервиса, где запрос через GET и ключ другого формата.

Если нет ранее полученного ключа старого формата, то в конфигураторе можно оставить демо-ключ для ознакомления с сервисом.

Ответить

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