MathCAT (Речь и брайль из MathML)
- Автор: 'Neil Soiffer
- Исходный код дополнения: Посетить Web-сайт MathCAT
Краткое описание
Дополнение MathCAT предназначено для того, чтобы в конечном итоге заменить MathPlayer, поскольку MathPlayer больше не поддерживается.
MathCAT генерирует речь и брайль из MathML.
Речь для математики, создаваемая MathCAT, улучшена просодией, чтобы звучать более естественно.
Речью можно управлять в трёх режимах, используя те же команды, что и в MathPlayer.
Кроме того, узел навигации указывается на брайлевском дисплее.
Поддерживаются как Немет, так и UEB Technical.
MathCAT имеет ряд параметров конфигурации, которые управляют речью, навигацией и брайлем.
Многие из них можно установить в диалоговом окне настроек MathCAT (находится в меню «Параметры» NVDA).
Для получения дополнительной информации об этих настройках смотрите документацию MathCAT.
Основная информация
| Название | Версия | Совместимость с API NVDA | Последняя протестированная версия NVDA | Минимальная версия NVDA | Дата загрузки в каталог | Размер | Лицензия |
|---|---|---|---|---|---|---|---|
| MathCAT | 0.7.3 | 2025.1 | 2025.3 | 2025.1 | 08-10-2025 19:45:19 | 2603 Кб. | GPL v2 |
Информация о локализации на русский язык
🔝 Назад к оглавлениюСкачать
⬇ Перейти к истории версий 🔝 Назад к оглавлениюРазделы
🔝 Назад к оглавлениюСправка
Подробнее
MathCAT (Речь и брайль из MathML)
- Автор: Neil Soiffer
- Совместимость с NVDA: 2018.1 или новее (в более ранних версиях не тестировалось)
- Скачать [стабильную версию][1]
MathCAT предназначен для того, чтобы в конечном итоге заменить MathPlayer, поскольку MathPlayer больше не поддерживается. MathCAT генерирует речь и брайль из MathML. Речь для математики, создаваемая MathCAT, улучшена просодией, чтобы звучать более естественно. Речью можно управлять в трёх режимах, используя те же команды, что и в MathPlayer. Кроме того, узел навигации указывается на брайлевском дисплее. Поддерживаются как Немет, так и UEB Technical.
MathCAT имеет ряд параметров конфигурации, которые управляют речью, навигацией и брайлем. Многие из них можно установить в диалоговом окне настроек MathCAT (находится в меню «Параметры» NVDA). Для получения дополнительной информации об этих настройках см. документацию MathCAT. Документация включает ссылку на таблицу со всеми командами навигации в MathCAT.
Примечание: MathCAT — это общая библиотека для генерации речи и брайля из MathML. Она используется другими проектами вспомогательных технологий, помимо NVDA. Для получения информации о проекте MathCAT в целом см. главную страницу документации MathCAT.
Кому следует использовать MathCAT:
- Тем, кто использует следующие языки для речи или брайля:
- Языки: китайский (Тайвань), английский, финский, индонезийский, испанский, шведский, вьетнамский
- Брайль: CMU (португальский, испанский), финский AsciiMath, LaTeX (как используется в немецком брайле), Немет, шведский, UEB, вьетнамский
- Тем, кому требуется брайль по Немету высокого качества (Немет в MathPlayer основан на генерации Немета в liblouis, которая содержит ряд значительных ошибок, технически сложных для исправления).
- Тем, кто хочет опробовать новейшие технологии и готов помочь, сообщая об ошибках
- Тем, кто использует голос Eloquence
Кому НЕ следует использовать MathCAT:
- Всем, кто использует MathPlayer с языком, который ещё не поддерживается MathCAT, и не чувствует себя комфортно с речью на одном из поддерживаемых языков.
- Всем, кто предпочитает Access8Math, а не MathPlayer (из-за речи или других функций)
Правила речи в MathCAT пока не так обширны, как правила MathPlayer, хотя они уже близки к этому — это может быть ещё одной причиной остаться с MathPlayer. MathCAT используется как испытательный полигон для идей для MathML 4, которые позволяют авторам выражать своё намерение, чтобы двусмысленные обозначения могли быть озвучены правильно, а не угаданы. Я воздерживался от добавления слишком большого количества правил, поскольку архитектура MathCAT сосредоточена вокруг использования и вывода намерения автора, а эти вопросы ещё не полностью урегулированы.
Перевод
- Валентин Куприянов: Русский язык
- Поддержка перевода с версии 0.3.8.
Журнал обновлений MathCAT
Версия 0.7.2
- Добавлен немецкий перевод. Работа над ним ещё продолжается, но сообщают, что он пригоден для использования.
- Добавлен норвежский перевод.
- Улучшено чтение «нейтральных» единиц измерения.
- Изменены формулировки для некоторых символов («тогда и только тогда, когда», «влечёт за собой», «треугольник»).
- Исправлены проблемы с zip-файлами и региональными вариантами. Это должно сделать доступными en-gb и zh-tw.
- Исправлены ошибки в навигации в символьном режиме и простом режиме.
- Изменены названия некоторых символов на более семантические (например, «длинная двусторонняя стрелка влево-вправо» — это «тогда и только тогда, когда»).
- Добавлены некоторые «буквальные» (не семантические) названия символов для LiteralSpeak и навигации.
- Исправлены некоторые ошибки, связанные с «intent».
- Исправлена ошибка с генерацией id, которая могла вызывать сбой примерно один раз каждые 36^4 раз.
- Добавлена ещё одна эвристика, чтобы предотвратить распознавание чего-либо как потенциальной функции (когда имя потенциальной функции встречается внутри аргумента).
- Исправлено чтение символа градуса, за которым следует «F» или «C».
- Исправлено правило для допустимых значений «intent».
- Улучшены правила вывода для единиц измерения (поддерживается «mi», если он помечен как «normal»).
- Исправлена ошибка навигации с log, ln и lg.
- Улучшены сообщения об ошибках — они должны помочь в сообщении о проблемах с речью и навигацией.
- Улучшена речь для дробей, включающих единицы измерения («метров в секунду»).
- Многочисленные улучшения в распознавании химических формул.
- Исправлена ошибка в Немете, когда выдавались индикатор конца нижнего индекса/верхнего индекса и базовой линии, хотя ни того, ни другого быть не должно.
- Добавлен символ varepsilon в UEB.
- Исправлена ошибка на единицу при вычислении того, что нужно выделить в брайле.
- Добавлены определения для «ⅆ», «ⅇ», «ⅈ» в коды брайля.
Версия 0.6.10
- Обновлен манифест для указания совместимости с 2025.1, внешних изменений нет.
- Из-за внутренних изменений в NVDA в некоторых речевых движках вам может потребоваться настроить параметр MathCAT «PauseFactor».
- Внутренние улучшения в аннотациях типов и строках документации благодаря @seanbudd и @RyanMcCleary.
Версия 0.6.9
- Обновлен манифест для указания совместимости с 2025.1.
- Исправлено необработанное исключение при открытии нового файла пользовательских настроек.
- Удалены '_' и '-' из неподходящих имён намерений (и литералов). Например, «my-function» должно стать «my function».
- Добавлено правило для «x check» (инвертированная крышка).
- Добавлено правило для периодических десятичных дробей для 'en'. Оно обрабатывает только черту над повторяющейся частью, а не другие обозначения.
Версия 0.6.8
Множество изменений, так как с момента последнего официального выпуска прошло много времени.
Речь
- Добавлен стиль «LiteralSpeak», который не выводит смысл математического выражения и, следовательно, не определяет, как этот смысл следует озвучивать.
- Добавлен шведский язык в список поддерживаемых.
- Добавлен финский язык в список поддерживаемых.
- Для вьетнамского языка добавлено опциональное изменение высоты тона и звуковой сигнал для заглавных букв.
- MathCAT будет переключать голос при чтении математики, если в диалоговом окне настроек был установлен язык, отличный от текущего голоса.
- Добавлен вариант en-UK с некоторыми британскими способами произношения скобок.
- Добавлены английские правила для div, grad и curl (математический анализ).
- Добавлено английское правило для $P(A|B)$, чтобы | озвучивалось как «given» (при условии).
- Добавлены дополнительные случаи, когда озвучивается невидимый знак умножения (перед корнями).
- В кратком режиме целочисленные индексы озвучиваются как «x 1» вместо «x sub 1».
- Добавлена возможность для авторов вставлять паузы (пока только для английского).
- Добавлена пауза перед метками строк/уравнений/линий.
- Изменено произношение для ≈ с «congruent to» на «approximately equal to».
- Добавлен вывод для векторного произведения и скалярного произведения.
- Добавлен вывод для div, grad и curl.
- Добавлено специальное произношение для нулевых, единичных и диагональных матриц на английском.
- Более строгие правила при выводе таблицы.
- Изменено произношение для общих случаев
moverиmunderс «modified x with y above it» на «quantity x with y above it». - Улучшено правило для {}, чтобы оно не всегда озвучивалось как «set of ...». Это могут быть просто символы группировки.
- Настроено произношение для ∈ внутри множества, чтобы слово «is» опускалось при части множества — «the set of all x is an element of ...» звучит плохо.
- Улучшено правило распознавания химических формул для атомных номеров.
- Обновлены названия свойств речевых подсказок в предлагаемом списке свойств MathML Core.
- Добавлено произношение для координат («the point at 1 comma 2»).
- Добавлены паузы для «,».
- Добавлены экспериментальные
:pause-long,:pause-medium,:pause-shortдля intent. - Добавлена пауза 'xlong'.
- Увеличены значения коротких/средних/длинных пауз со 150 мс/300 мс/600 мс до 200 мс/400 мс/800 мс. Как всегда, они масштабируются в соответствии со скоростью речи.
- В MathML 4
mlabedtrобъявлен устаревшим. Обходной путь — использовать свойство intent:equation-labelнаmtd, и теперь это поддерживается. - Добавлено произношение для единиц измерения (например, «km», «in») — не будет работать для однобуквенных единиц, таких как «m» и «s», если они не помечены как единицы измерения.
- В кратком режиме теперь говорится «of» для функций, кроме тригонометрических и логарифмических. Раньше он был немного слишком кратким.
Навигация
- Добавлен пункт «Speech» в меню копирования при навигации, чтобы можно было скопировать текст, используемый для озвучивания текущей точки фокуса в исследуемом выражении.
- Существенная переработка правил навигации, чтобы они следовали выведенному смыслу. Например, если MathCAT говорит «absolute value of x» и вы «приближаетесь» (zoom in), то вы перемещаетесь к «x», а не к вертикальной черте. Другой пример: если MathCAT определяет, что таблица состоит из строк уравнений, навигация не будет объединять столбцы, так что таблица ведёт себя так, как если бы в ней был только один столбец.
- «Speak Overview» ничего не делал (исправлено). Обзоры остаются слаборазвитыми.
Брайль
- Добавлена поддержка финской версии брайля AsciiMath.
- Добавлена поддержка шведского брайля.
- Добавлена поддержка позиционирования вьетнамских акцентов для вьетнамских брайлевских гласных «рифм».
- Добавлены настройки, позволяющие пользователям Немета переназначать типформы (например, сопоставлять BlackBoard Bold с другим символом).
- Изменён индикатор типформы Blackboard для повторного использования индикатора курсива вместо повторного использования индикатора надстрочного/подстрочного индекса. Изменив значения типформ Немета в подкаталоге дополнений NVDA
addons\MathCAT\globalPlugins\MathCAT\Rulesprefs.yamlили добавив их в%AppData%\MathCAT\prefs.yaml, вы можете восстановить старое сопоставление.
Другое
- Все файлы правил для языков и брайля заархивированы по каталогам и распаковываются по требованию.
- В настоящее время это экономит ~5 МБ, когда Rules.zip распакован, и сэкономит ещё больше по мере добавления новых языков и кодов брайля.
- Если вы знаете, что определённые языки или коды брайля точно будут использоваться (например, это значение по умолчанию), то файлы в этих каталогах можно распаковать вручную, чтобы сэкономить несколько десятков миллисекунд при первом использовании этого языка/кода брайля данным пользователем.
- Добавлена новая настройка DecimalSeparator.
- Значение по умолчанию — Auto, другие значения — «.», «,» и «Custom». Первые три значения устанавливают DecimalSeparators и BlockSeparators.
- Auto устанавливает эти настройки на основе значения настройки Language. Для некоторых языков, таких как испанский, в одних странах используется «,», а в других — «.». В этом случае лучше установить язык, включающий также код страны (например, es-es или es-mx), чтобы обеспечить использование правильного значения.
- Добавлено больше символов Юникода, включая все символы Юникода, помеченные как «Sm», и те, у которых есть mathclass (кроме Alphabetic и Glyph классов) в стандарте Юникода.
- Добавлена поддержка некоторых (предстоящих) новых символов Юникода (стрелок равновесия и других), используемых в химии, в UEB и Немет.
- Исправлена ошибка с двойными зачеркнутыми цифрами для Немета.
- Несколько исправлений для распознавания химических формул.
Исправления
- Исправлена ошибка с eSpeak, когда он замедлялся.
- Забыли реализовать относительное замедление при навигации — исправлено.
- Исправлен индикатор sans-serif для брайля Немета.
- Исправлена ошибка, когда озвучивались пустые ячейки в таблице, которая является кусочной, m:system-of-equations или строками.
- Исправлена ошибка, когда открытые/закрытые интервалы выводились при вложенности скобок/круглых скобок (не может быть интервалом).
- Исправлена ошибка в UEB, где для заглавных букв должен был использоваться режим passage.
- Исправлен сбой в UEB при определённых условиях с последовательностями заглавных букв.
- Исправлена ошибка в навигации по таблицам (ранее сообщалось «Error in Navigation»).
- Исправлена ошибка при перемещении к предыдущему/следующему столбцу в таблицах при нахождении на уровне строки таблицы.
- Исправлена ошибка при попытке исправить плохое представление MathML для химических формул внутри основания надстрочного/подстрочного индекса.
- Исправлен вьетнамский брайль для «/».
- В коде диалогового окна для поиска файлов Rules и prefs теперь используются расположение файла и %APPDATA%.
- После изменения работы настроек в предыдущей версии я забыл изменить MathRate и PauseFactor на числа, а не строки.
- Исправлена ошибка в правилах брайля (пропущенное изменение из более ранней версии), где при поиске значения определения следовало передавать третий аргумент, указывающий на просмотр в файлах Braille definitions.yaml, а не в речевых.
- Улучшено использование definitions.yaml.
- Исправлены некоторые ошибки в очистке MathML для разделителей десятичных дробей «,».
- Обнаружена ошибка в выделении брайля, когда ничего не выделено (возможно, никогда не происходит, поэтому я не видел этого на практике?).
- Исправлен режим «Describe», чтобы он работал — он всё ещё очень минимален и, вероятно, пока не полезен.
- Добавлен пробел после математической речи, чтобы обойти ошибку MS Word, которая присоединяет следующий символ в тексте к математическому выражению.
Версия 0.5.6
- Добавлено «Копировать как...» (Copy As...) в диалоговое окно MathCAT (на панели «Навигация»).
- Исправлена ошибка, когда язык возвращался к английскому при изменении стилей речи.
- Исправлена ошибка с навигацией и брайлем.
- Исправлены некоторые проблемы с пробелами в Asciimath.
- Улучшено распознавание химических формул.
- Обновлён MathCAT в соответствии с новой спецификацией BANA Nemeth для химии (по-прежнему обрабатываются только однострочные формулы и особые случаи изменений стиля/шрифта не обрабатываются).
- Исправлен сбой при использовании не-ASCII цифр (например, жирных цифр) в числах.
- Не использовать индикаторы курсива в кодах брайля при использовании математических алфавитно-цифровых курсивных символов.
- Некоторые другие небольшие исправления ошибок, о которых не сообщали пользователи.
Версия 0.5.0
- Добавлен немецкий брайлевский код LaTeX. В отличие от других брайлевских кодов, он генерирует символы ASCII и использует текущую таблицу вывода брайля для преобразования символов в брайль.
- Добавлен (экспериментальный) брайлевский код ASCIIMath. Как и брайлевский код LaTeX, он генерирует символы ASCII и использует текущую таблицу вывода брайля для преобразования символов в брайль.
- Добавлена настройка «CopyAs», которая поддерживает копирование как MathML, LaTeX или ASCIIMath с помощью Ctrl+C при фокусе на MathML (как и раньше). Копируется текущий сфокусированный узел. Примечание: это указано только в файле prefs.yaml и (пока) не представлено в диалоговом окне настроек MathCAT.
Версия 0.4.2
- Исправлено переключение языка при изменении голоса и установленном языке MathCAT «Auto».
- Добавлены дополнительные проверки на
$Impairmentsдля улучшения чтения, когда оно не установлено для незрячих пользователей. - Немет: исправление для «~», когда она не является частью
mrow. - UEB: добавлены символы, исправление пробела для «~», если это префикс, исправление для xor.
- Очистка MathML для акцентированных гласных (в основном для вьетнамского языка).
- Основная переработка кода чтения/обновления настроек с большим ускорением — добавлена настройка
CheckRuleFilesдля контроля того, какие файлы проверяются на обновления. - Добавлено два новых вызова интерфейса — позволяет устанавливать местоположение навигации от курсора брайля (ещё не является частью дополнения MathCAT).
Версия 0.3.11
- Обновлено до Python 3.11 и проверена работа с NVDA 2024.1.
- Исправлены ошибки во вьетнамском брайле, а также в речи, в основном для химических формул.
- Исправлен некорректный брайль, когда код брайля и зависимый язык не совпадают (конкретно вьетнамский брайль и вьетнамская речь).
- Исправлена ошибка с пробелами в HTML внутри токенов.
- Улучшено распознавание римских цифр.
Версия 0.3.9
- Добавлен перевод на традиционный китайский (спасибо Hon-Jang Yang).
- Исправлена ошибка с навигацией в основание выражения с надстрочным/подстрочным индексом, имеющего круглые скобки.
- Существенно изменён способ обработки пробелов. Это в основном влияет на вывод брайля (пробелы и обнаружение «пропусков»).
- Улучшено распознавание химических формул.
- Исправления для UEB, возникшие при добавлении примеров по химии.
- Исправления для UEB, связанные с добавлением вспомогательных круглых скобок в некоторых случаях.
Версия 0.3.8
Брайль:
- Диалоговое окно интернационализировано для нескольких языков (большое спасибо переводчикам!).
- Начальная реализация CMU — брайлевского кода, используемого в испаноязычных и португалоязычных странах.
- Исправлены некоторые ошибки UEB и добавлены некоторые символы для UEB.
- Значительные улучшения для вьетнамского брайля.
Другие исправления:
- Изменён ползунок относительной скорости в диалоговом окне, чтобы максимальное значение было 100% (теперь позволяет устанавливать только более медленные скорости). Также добавлены шаги, чтобы было проще значительно увеличивать/уменьшать скорость.
- Исправлена ошибка eSpeak, когда иногда обрывалась речь при изменении относительной скорости.
- Улучшения для вьетнамской речи.
- Исправлена ошибка с голосами OneCore, произносящими «a».
- Исправлены некоторые ошибки навигации, когда
AutoZoomOutимеет значение False (не по умолчанию). - Исправлено обновление при изменении языка и некоторых других изменений в диалоговом окне, чтобы они вступали в силу сразу после нажатия «Применить» (Apply) или «OK».
- Добавлена опция «Use Voice's Language» (Использовать язык голоса), чтобы из коробки MathCAT говорил на правильном языке (если есть перевод).
- Несколько улучшений для очистки некорректного кода MathML.
Версия 0.3.3
Этот выпуск содержит ряд исправлений ошибок. Основные новые функции и исправления ошибок:
- Добавлен испанский перевод (спасибо Noelia Ruiz и María Allo Roldán).
- Изменена навигация, чтобы она начиналась с одного уровня приближения.
- Добавлено сочетание Ctrl+Alt+стрелка как способ навигации по табличным структурам. Эти клавиши должны быть более запоминающимися, поскольку они используются для навигации по таблицам в NVDA.
- Обход ошибки NVDA для голосов eSpeak, которая вызывала их замедление, когда относительная MathRate была установлена медленнее, чем скорость речи для текста.
- Обход проблемы с голосами OneCore, чтобы они произносили долгий звук 'a'.
Много небольших корректировок речи и некоторые исправления ошибок как для Немета, так и для UEB.
Примечание: теперь есть возможность получать брайль по вьетнамскому стандарту в качестве вывода. Это всё ещё работа в процессе и содержит слишком много ошибок для использования, кроме как для тестирования. Ожидается, что следующий выпуск MathCAT будет содержать надёжную реализацию.
Версия 0.2.5
- Дальнейшие улучшения для химических формул.
- Исправления для Немета:
-
- Добавлены правила «пропусков».
-
- Добавлены некоторые правила для индикаторов английского языка.
-
- Добавлены дополнительные случаи, когда требуется многоцелевой индикатор.
-
- Исправления, связанные с Неметом и пунктуацией.
Версия 0.2
- Множество исправлений ошибок.
- Улучшения речи.
- Настройка для управления длительностью пауз (работает с изменениями относительной скорости речи для математики).
- Поддержка распознавания химических обозначений и их правильного озвучивания.
- Переводы на индонезийский и вьетнамский языки.
Среда разработки
Как настроить среду разработки:
- Установите Python 3.11 (32-битная версия).
- Настройте виртуальное окружение.
python -m venv .venv
- Установите зависимости Python в
.venv.- Активируйте виртуальное окружение
.venv\Scripts\activate - Установите зависимости для линтинга
pip install ruff==0.8.1 pre-commit==4.0.1 pyright==1.1.396
- Активируйте виртуальное окружение
- Импортируйте код NVDA.
- Исходный код NVDA должен быть доступен для получения подсказок типов, разрешения пространств имён, завершения кода и других подсказок IDE.
- Относительный путь
../nvda/sourceвключён в конфигурацию pyright вpyproject.toml. - Репозиторий NVDA должен быть клонирован в тот же родительский каталог, т.е. быть соседним для этого репозитория.
В качестве альтернативы обновите
../nvda/sourceвpyproject.tomlна другое место, куда был клонирован репозиторий NVDA.
История версий
Список версий
- MathCAT-V.0.7.3.nvda-addon
- MathCAT-V.0.6.9.nvda-addon
- MathCAT-V.0.6.8.nvda-addon
- MathCAT-V.0.6.6.nvda-addon
- MathCAT-V.0.6.10.nvda-addon
- MathCAT-V.0.5.6.nvda-addon
- MathCAT-V.0.5.1.nvda-addon
- MathCAT-V.0.5.0.nvda-addon
- MathCAT-V.0.4.2.nvda-addon
- MathCAT-V.0.3.9.nvda-addon
- MathCAT-V.0.3.8.nvda-addon
- MathCAT-V.0.3.6.nvda-addon
- MathCAT-V.0.3.5.nvda-addon
- MathCAT-V.0.3.3.nvda-addon
- MathCAT-V.0.3.2.nvda-addon
- MathCAT-V.0.2.5.nvda-addon
- MathCAT-V.0.2.1.nvda-addon
- MathCAT-V.0.2.0.1.nvda-addon
- MathCAT-V.0.1.2.nvda-addon
- MathCAT-V.0.1.14.nvda-addon