[TC] Настройка синтезатора rudts

Приветствую участников рассылки! Подскажите, как изменить тембр голоса в
сапи версии указанного синта?

Ответить   Sat, 6 Nov 2021 10:24:27 +0300 (#3679316)

 

Ответы:

Приветствую уважаемую рассылку!
Некоторое время назад я задавал вопрос по округлению чисел средствами
Jaws скриптов.
Тогда в частности мне ответил Анатолий К.
Скрипт дали классный как образец. сразу его взял за основу и начал активно
пользоваться, там, где нужно было применять числа с точкой.
Тут перешёл на win10, а затем обновился до win11 и узнал, что такой
способ на 64 разрядной системе win11 домашней перестал работать.
Вычленел место из скрипта, так сказать виновника.
оказывается перестал работать вот такой образец Jaws скрипта:
Это именно тот образец, что предлажил Анатолий по округлению числа с
точкой.
Ещё рас подчеркну, что на win7 из под Jaws2019 32 разрядная всё OK.
Итак, сам скрипт образец которому уже не один год:
Script experiment ()
Beep ()
; округляем до двух знаков после запятой, число и так далее ниже
var
string s, string n,
object o
let s = "75.0903"
let n = "2"
let o = CreateObject("ScriptControl")
let o.Language = "jscript"
let s = FormatString ("var v=%1; v.toFixed(%2).toString();", s, n)
say(o.Eval(s),0);
EndScript
==
Как это дело победить?
Почему на win7 это работает из под Jaws2019, а win11 домашния
64 разрядная не хочет
отрабатывать из под Jaws2022.
С Jaws2021 тоже не работает. Чудеса в решете.
Спасибо.

-Случайный афоризм-
Семья из пяти студентов снимет комнату. Или койку. Или угол в койке.
С уважением,
Grolin mailto:Grolin20***@y*****.ru

Ответить   Sat, 6 Nov 2021 17:52:32 +0300 (#3679328)

 

Здравствуйте, Grolin.

Потому что библиотека MSScript.ocx, порождающая com-интерфейс ScriptControl, даже в 64-разрядных Windows является 32-разрядной, поэтому его вызов из 64-разрядного процесса JAWS приводит к ошибке.
В общем полагаться на ScriptControl в 64-разрядных приложениях не стоит. Он остался в системе для обратной совместимости со старыми 32-разрядными приложениями.
Есть сторонний 64-разрядный аналог MSScript.ocx, который нужно отдельно скачать, положить в 64-разрядную систему и зарегистрировать - https://tablacus.github.io/scriptcontrol_en.html
Если есть желание связываться, то можно решить проблему через него.
Ещё можно написать просто vbs/js-файл, которому параметров вызова передать данные, а ответ он вернёт через com-интерфейс JAWS.
Но вообще не так уж сложно написать собственную функцию округления, чтобы не зависеть в этом вопросе от внешних компонентов. Равно как реализовать вычисление со сдвигом точки по числу наибольшего разряда дробной части всех участвующих чисел, чтобы выполнить преобразование дробных чисел в целые, произвести все вычисления, а потом сдвинуть точку обратно на нужное число разрядов, вернувшись к дробным значениям.
Хотя в большинстве случаев необходимость выполнять операции с дробными числами в скриптах JAWS означают использование этого инструмента не по назначению, так что есть повод задуматься, не лучше ли использовать что-то другое.
Успехов. Никита.

Ответить   Sat, 6 Nov 2021 19:19:48 +0300 (#3679330)

 

Здравствуйте, Nikita.

Вы писали:

Есть сторонний 64-разрядный аналог MSScript.ocx, который нужно
отдельно скачать, положить в 64-разрядную систему и зарегистрировать -
https://tablacus.github.io/scriptcontrol_en.htmlЕсли есть желание
связываться, то можно решить проблему через него.

обязательно почитаю. Сегодня уже устал от этих американских горок.
Буду пробовать.

Вы писали:

Ещё можно написать просто vbs/js-файл, которому параметров вызова
передать данные, а ответ он вернёт через com-интерфейс JAWS.

В первом чтении я подумал, что можно воспользоваться другим объектом.
:)
Но на вскидку это очень не плохая альтернатива.
Накидать VBS или JS скрипт я смогу.
Запустить из под Jaws cскрипта с помощью функции run Js скрипт с
параметрами тоже реально.
А вот как получить в Jaws cскрипт ответ это для меня не очевидно. :)
Может есть маленький пример?
можно чуть поподробние об
Цитата:
"а ответ он вернёт через com-интерфейс ".
Конец цитаты.
Как этореализуется?
Кстати, я подчёркивал, что этот скрипт был для меня шаблоном.
Округление взято условно. На самом деле я делаю вычисления процентов.
Взял шаблон, добавил свои значения и прочее, получил результат.
Понимаю, что это не очень красиво проделывать с помощью Jaws скриптов,
но этот язык я более менее помню.
JS и VBS конечно самостоятельно изучал, но как говорится, это было
давно и это было не правда. :)
Спасибо, Никита, что откликнулись.
Удачи.

Ответить   Sat, 6 Nov 2021 21:10:15 +0300 (#3679336)

 

Здравствуйте, Grolin.

Всё необходимое описано здесь - http://win.tiflocomp.ru/docs/jfwapi3.php
Если вам достаточно просто озвучить результат вычислений, то можно параметрами передать данные в vbs/js-скрипт, там всё вычислить, а потом всего лишь дёрнуть готовый метод .SayString().
Если же потом с вычисленными данными ещё надо проделать какие-то преобразования, то надо в скриптах JAWS создать точку входа в виде функции или скрипта, принимающих параметры, ну и из vbs/js вызвать именно эту функцию/скрипт через методы .RunFunction() или .RunScript(), передав туда вычисленные данные.
Вот пример VBS, который принимает строку ключом запуска или явным вводом, после чего произносит её через JAWS:

Set oArgs = Wscript.Arguments
If oArgs.Count > 0 Then
sMessage = oArgs(0)
Else
sMessage = InputBox("Enter message for JAWS: ")
End If
Set oJawsApi = CreateObject("FreedomSci.JawsApi")
oJawsApi.SayString(sMessage)

Имейте ввиду, что готовый метод .SayString() выводит строку только через синтез речи. Если вам нужно, чтобы сообщение также отображалось на брайлевском дисплее, то надо параллельно выполнить метод .RunFunction(), дёрнув через него соответствующую встроенную функцию скриптов JAWS, то есть что-то типа BrailleMessage().
Успехов. Никита.

Ответить   Sat, 6 Nov 2021 22:36:32 +0300 (#3679342)

 

Здравствуйте, Nikita.

Вы писали 6 ноября 2021 г., 22:36:32:

Никита, ссылка крайне полезная. Безусловно эту статью Анатолия я не
видел, в противном случаи таких смешных вопросов не задавал бы.
Кстати, пример тоже наглядный. Крайне признателен вам за такой
подробный ответ по этой теме.
Думаю, что для "пионеров" типа меня он будет крайне полезен.
Да, наверное одним скриптом JS для вычислений я не обойдусь ибо в JS и
VBS хорошего вывода многострочных редакторов так и не нашёл.
Не посоветуете что-нибудь?
В Jaws гораздо всё наглядней для многострочных редакторов.
Фокус попадает в редактор и навигация по редактору крайне удобна.
Ещё рас спасибо.
Удачи.

Ответить   Wed, 17 Nov 2021 10:56:05 +0300 (#3680036)

 

Здравствуйте, Grolin.

Не знаю, что вы подразумеваете под "многострочными редакторами". Так обычно называется multiline edit, то есть то, что составляет основную область ввода, например, Блокнота. В JAWS такого напрямую нет, так что вы вряд ли об этом.
Возможно вы об окнах виртуального просмотра JAWS, типа того, которое показывается по командам JAWSKey+W или JAWSKey+H.
Это чисто функциональность JAWS, поэтому прямых аналогов за его пределами нет.
Однако можно передать данные в VBS, там их обработать, а потом через метод .RunFunction() вернуть результат в заранее подготовленную функцию внутри JAWS. Эта же функция внутри JAWS будет принимать данные и отображать в окне виртуального просмотра.
Вот доработанный пример VBS-части:

Set oArgs = Wscript.Arguments
If oArgs.Count > 0 Then
sMessage = oArgs(0)
Else
sMessage = InputBox("Enter message for JAWS: ")
End If
Set oJawsApi = CreateObject("FreedomSci.JawsApi")
oJawsApi.RunFunction("ShowMessageInUserBuffer (""" & sMessage & """)")

А вот такая функция должна быть внутри JAWS:

void Function ShowMessageInUserBuffer (string sMessage)
If UserBufferIsActive () Then
UserBufferDeactivate ()
EndIf
SayFormattedMessage (OT_USER_BUFFER, FormatString ("%1\n\nНажмите клавишу Escape, чтобы закрыть это сообщение.", sMessage))
EndFunction

Успехов. Никита.

Ответить   Wed, 17 Nov 2021 15:53:28 +0300 (#3680049)

 

Здравствуйте, Nikita.

Вы писали 17 ноября 2021 г., 15:53:28:

Именно об этом я и говорю.
Да, аналогов нет, но даже близко тоже нет.
Например в JS:
WScript.Echo
Крайне не удобен для чтения
, нужно переходить на Jaws курсор или что-то типа этого, конечно если
не вертуализировать и вам надо подробно изучить материал окна.
Аналогично в vbs:
MsgBox
Получше, но это строка для вывода и как из неё сделать многострочность я не
понял. Перепробовал все варианты написания, но увы и ах. :)
Фокус попадает в редактор и вроде всё OK, но для счастья не разобрался
как организовать перенос строки в этом операторе VBS.
Никита, спасибо за подробные ответы и примеры.
Я все свои задачи реализовал и получил кучу бонусов в виде знаний.
Удачи.

Ответить   Thu, 18 Nov 2021 11:10:53 +0300 (#3680118)

 

Здравствуйте, Grolin.

Виртуальный просмотр JAWS или режим обзора NVDA - это в сущности применение специальной техники обеспечения доступности веб-страниц.
Зрячим подобное не нужно, поэтому в стандартных классах элементов графического интерфейса Win32 API аналогов и нет. Впрочем, на уровне Win32 API есть возможность создать окно с HTML-содержимым, что может стать функциональным аналогом.
Также можно было бы создать окно с многострочным полем ввода, в которое добавить текст и назначит режим read only.
Однако из JS или VBS создавать полноценные многокомпонентные окна - это сильное переусложнение.
На уровне скриптов можно просто записать большую выдачу в текстовый файл и потом инициализировать его открытие в редакторе, или записать в HTML-файл и также инициализировать его открытие в браузере.

Надо добавлять в строку любой из символов переноса по их коду:

MsgBox "One" & ChrW(10) & "Two" & ChrW(13) & "Three"

Успехов. Никита.

Ответить   Sat, 20 Nov 2021 01:12:28 +0300 (#3680284)

 

Здравствуйте, Nikita.

Вы писали:

Есть сторонний 64-разрядный аналог MSScript.ocx, который нужно
отдельно скачать, положить в 64-разрядную систему и зарегистрировать -
https://tablacus.github.io/scriptcontrol_en.html

я скачал по вашей ссылке архив:
tsc64_1240.zip
на сколько я понял из текстового файла для установки надо запустить
файл:
setup.exe
а в чём заключается регистрация?
или это будет всё при запуске этого установочного файла?
Я имею ввиду так сказать эту регистрацию?
кстати, не понял, а для чего в архиве лежит файл:
check_version.js
Что он проверяет?
Спасибо.

Ответить   Sat, 6 Nov 2021 21:26:06 +0300 (#3679339)

 

Здравствуйте, Grolin.

Регистрация тут не в смысле какой-то лицензии или чего-то в этом роде, а в смысле регистрации динамической библиотеки в системе Windows.
Там есть библиотека tsc64.dll. Вот она как раз и реализует 64-разрядную версию ScriptControl.
Системные библиотеки обычно кладутся по пути
%windir%\System32
для 32-разрядных, и
%windir%\SysWOW64
для 64-разрядных.
Ну а потом их надо зарегистрировать в системе при помощи системной утилиты regsvr32, которой передать в качестве аргумента путь к регистрируемой библиотеке.
Можете нажать Windows+R, ввести
regsvr32,
и нажать Enter. Вам покажут диалог с текстом, как пользоваться regsvr32.
Файл setup.exe из архива просто делает это всё за вас. Если библиотека не зарегистрирована, то регистрирует, а если уже зарегистрирована, то наоборот удаляет её регистрацию.

Он просто вызывает ScriptControl, исполняя через него кусочек VBS-кода с выводом информации о ScriptControl.
То есть это пример и тест работоспособности ScriptControl: либо встроенного от Microsoft, либо подменяющего из этой библиотеки.
Успехов. Никита.

Ответить   Sat, 6 Nov 2021 23:04:10 +0300 (#3679344)