Pravka TTS — это дополнение для программы экранного доступа NVDA (NonVisual Desktop Access), которое кардинально расширяет возможности управления речью. Основная задача дополнения — предоставить пользователю возможность использовать разные голоса и синтезаторы для различных типов текста в автоматическом режиме.
Представьте, что вы читаете документ, содержащий текст на нескольких языках. Обычно NVDA использует один голос для всего текста, что может приводить к некорректному произношению слов на других языках. С Pravka TTS вы можете настроить автоматическое переключение:
Дополнение работает как интеллектуальный диспетчер, анализируя каждый фрагмент текста и направляя его в нужный синтезатор с правильным голосом.
Чтобы начать использовать Pravka TTS, выполните следующие шаги:
Активируйте дополнение:
Откройте настройки дополнения:
Выберите основной движок:
Настройте голоса для разных типов текста:
Сохраните настройки:
Готово! Теперь NVDA будет автоматически переключать голоса в зависимости от типа текста.
Окно настроек Pravka TTS открывается из меню «Сервис» NVDA. Оно содержит три основных раздела.
В верхней части окна расположена панель выбора основного речевого движка. Это обязательная настройка, определяющая, какой синтезатор будет использоваться по умолчанию.
Что здесь настраивается:
- Выпадающий список со всеми доступными в системе синтезаторами
- Выбранный движок будет использоваться для всех типов текста, для которых не назначен отдельный голос
Важно: При изменении основного движка автоматически перезагружаются списки голосов на всех вкладках.
Эта вкладка содержит настройки голосов для различных типов текста (скриптов — в терминологии Unicode).
Поддерживаемые типы текста:
| Тип текста | Описание | Примеры языков |
|---|---|---|
| Текст на латинице | Все языки, использующие латинский алфавит | Английский, французский, немецкий, испанский |
| Текст на кириллице | Языки с кириллическим письмом | Русский, украинский, болгарский, сербский |
| Арабский текст | Арабское письмо | Арабский, персидский, урду |
| Текст на хинди/деванагари | Письмо деванагари | Хинди, санскрит, маратхи |
| Цифры | Числовые символы 0-9 | Все языки |
| Эмодзи и символы | Эмодзи, спецсимволы, пиктограммы | — |
| Греческий текст | Греческий алфавит | Греческий |
| Китайские иероглифы | Китайское, японское, корейское письмо | Китайский, японский, корейский |
| Тайский текст | Тайское письмо | Тайский |
Как настроить:
1. Для каждого типа текста представлен выпадающий список голосов
2. Изначально списки отображают «(Загрузка…)» — это нормально, подождите несколько секунд
3. После загрузки выберите нужный голос из списка
4. Если голос не выбран, будет использоваться голос основного движка
Эта вкладка предназначена для создания более сложных правил переключения голосов на основе контекста — символов, окружающих текст.
Основные элементы:
- Таблица со списком созданных правил
- Кнопки управления: «Добавить правило», «Изменить правило», «Удалить правило»
- Информационное сообщение в верхней части вкладки
Структура таблицы правил:
- Включено — отображает, активно ли правило (Да/Нет)
- Имя — название правила для удобства идентификации
- Условие — описание условия срабатывания (например, “starts_ends: ( … )")
- Действие (голос) — какой голос будет использоваться
При нажатии кнопки «Добавить правило» или «Изменить правило» открывается диалог со следующими полями:
Произвольное название, помогающее идентифицировать правило. По умолчанию предлагается «Новое правило».
Флажок, определяющий, активно ли правило. Можно временно отключать правила без их удаления.
Символ или последовательность символов, с которых начинается целевой фрагмент. Можно выбрать из предопределённого списка или ввести свой символ.
Доступные предопределённые символы:
- Круглые скобки: (, )
- Квадратные скобки: [, ]
- Фигурные скобки: {, }
- Угловые скобки: <, >
- Звёздочка: *
- Знак доллара: $
- Амперсанд: &
- Решётка: #
- Собака: @
- Знак процента: %
- Карет: ^
- Вертикальная черта: |
- Обратная косая черта: \
- Косая черта: /
- Нижнее подчёркивание: _
- Дефис: -
- Знак плюса: +
- Знак равенства: =
- Тильда: ~
- Двойные кавычки: "
- Одинарные кавычки: '
- Обратный апостроф: `
- Восклицательный знак: !
- Вопросительный знак: ?
- Двоеточие: :
- Точка с запятой: ;
- Запятая: ,
- Точка: .
Важно: Допускаются только символы пунктуации. Буквы и цифры использовать нельзя — это ограничение предотвращает некорректную работу.
Символ, которым заканчивается целевой фрагмент. Работает аналогично начальному символу.
Голос, который будет использоваться для текста между начальным и конечным символами. Список загружается автоматически после выбора основного движка.
Процесс загрузки голосов:
- Изначально отображается «(Загрузка…)»
- Через несколько секунд появляется список доступных голосов
- Если голосов нет или произошла ошибка, отображается «(Ошибка)»
Для временного отключения правила без удаления:
1. Выберите правило и нажмите «Изменить правило»
2. Снимите флажок «Включено»
3. Сохраните изменения
Правило останется в таблице, но не будет применяться при озвучивании.
Задача: Русский текст должен озвучиваться голосом «Михаил», английский — голосом «David».
Необходимые голоса:
- Установленный русский SAPI5 голос (например, «Михаил» от Microsoft)
- Установленный английский SAPI5 голос (например, «David» от Microsoft)
Настройка:
Откройте настройки Pravka TTS (Инструменты → pravka TTS Settings…)
На вкладке «Основной речевой движок» выберите «SAPI5»
Перейдите на вкладку «Скрипты»
Дождитесь загрузки голосов (около 5-10 секунд)
В разделе «Текст на кириллице» выберите «Михаил»
В разделе «Текст на латинице» выберите «David»
Нажмите «Сохранить»
Результат: При чтении документа, содержащего русский и английский текст, NVDA будет автоматически переключаться между голосами Михаил и David.
Задача: Текст, заключённый в двойные кавычки, озвучивать голосом с более высоким тоном для лучшего восприятия.
Необходимые голоса:
- Основной голос (любой)
- Дополнительный голос с другим тоном (например, «Zira» для английского или «Ирина» для русского)
Настройка:
Откройте настройки Pravka TTS
На вкладке «Основной речевой движок» выберите нужный синтезатор
Перейдите на вкладку «Условное переключение»
Нажмите «Добавить правило»
Заполните диалог:
" - Double Quote" - Double QuoteНажмите «OK»
Нажмите «Сохранить» в главном окне
Результат: Любой текст между двойными кавычками будет озвучиваться выбранным голосом, остальной текст — основным голосом.
Задача: Математические формулы, заключённые в символы доллара (как в LaTeX), озвучивать голосом с чёткой артикуляцией для лучшего восприятия символов и цифр.
Необходимые голос:
- Голос с хорошей дикцией (например, технические голоса или голоса с высоким качеством произношения)
Настройка:
Откройте настройки Pravka TTS
Перейдите на вкладку «Условное переключение»
Нажмите «Добавить правило»
Заполните диалог:
$ - Dollar Sign$ - Dollar SignНажмите «OK»
На вкладке «Скрипты» дополнительно можно настроить:
Нажмите «Сохранить»
Результат: Текст вида $E = mc^2$ будет озвучиваться выбранным техническим голосом, что обеспечит чёткое произношение символов.
Задача: При чтении технической документации фрагменты кода, выделенные обратными кавычками, озвучивать монотонным голосом, а обычный текст — основным голосом.
Необходимые голоса:
- Основной голос (например, «Михаил»)
- Голос с монотонной интонацией (например, некоторые синтезаторы имеют «роботизированные» голоса)
Настройка:
Откройте настройки Pravka TTS
Перейдите на вкладку «Условное переключение»
Нажмите «Добавить правило»
Заполните диалог:
` - Backtick` - BacktickНажмите «OK»
Нажмите «Сохранить»
Результат: Фрагменты кода в обратных кавычках будут чётко выделяться монотонным голосом, что помогает отличать код от описания.
Pravka TTS функционирует как многоуровневый диспетчер речи, перехватывающий весь текст, направляемый NVDA на озвучивание. Рассмотрим этот процесс подробно.
Когда NVDA отправляет текст для озвучивания, он сначала попадает в диспетчер Pravka TTS. Это происходит потому, что в настройках NVDA выбран синтезатор «pravka TTS».
Диспетчер разбивает текст на логические фрагменты и анализирует каждый фрагмент по нескольким критериям:
Анализ типа текста (скрипта):
- Определение, к какому типу письменности относятся символы
- Проверка по категориям: латиница, кириллица, арабское письмо и т.д.
Анализ контекста (условное переключение):
- Поиск открывающих маркеров из активных правил
- Отслеживание состояния — находится ли текущий фрагмент внутри маркеров
- Поиск закрывающих маркеров для завершения специального режима
На основе результатов анализа принимается решение о выборе голоса:
Проверка условных правил: Если текст находится внутри маркеров активного правила, выбирается голос, указанный в этом правиле
Проверка типа текста: Если активных правил нет или текст не соответствует ни одному правилу, проверяется, назначен ли отдельный голос для данного типа текста в настройках
Использование основного голоса: Если ни одно из вышеуказанных условий не выполнено, используется голос основного движка
Выбранный голос принадлежит конкретному синтезатору. Диспетчер:
- Проверяет, загружен ли этот синтезатор
- При необходимости загружает его (если он ещё не использовался)
- Отправляет текст в этот синтезатор для озвучивания
Для оптимизации производительности диспетчер сохраняет ссылки на уже использованные синтезаторы. При повторном обращении к тому же синтезатору загрузка не требуется.
Рассмотрим пример текста: Он сказал: "Hello, world!" и улыбнулся.
Обработка:
1. Фрагмент «Он сказал: » — определяется как кириллица → направляется в русский голос
2. Встречается символ " — активируется правило для кавычек
3. Фрагмент «Hello, world!» — определяется как латиница, но применяется правило → направляется в голос для цитат
4. Встречается закрывающий символ " — правило деактивируется
5. Фрагмент « и улыбнулся.» — снова кириллица → русский голос
Pravka TTS работает с любыми синтезаторами, которые поддерживаются NVDA. Это обеспечивает максимальную гибкость при настройке.
| Тип | Примеры | Особенности |
|---|---|---|
| SAPI5 | Голоса Microsoft, сторонние SAPI5-голоса | Широкий выбор, совместимость со старыми версиями Windows |
| OneCore | Голоса Windows 10/11 (Microsoft David, Zira и др.) | Высокое качество, естественное звучание |
| RhVoice | Голоса RHVoice (Александр, Ирина, Elena и др.) | Бесплатные, хорошее качество, поддержка многих языков |
| Vocalizer | Голоса Nuance Vocalizer | Высокое качество, коммерческие голоса |
| eSpeak | eSpeak NG | Компактный, быстрый, синтез на лету |
| Другие | Любые синтезаторы с драйверами для NVDA | — |
SAPI5 и OneCore:
- Требуют инициализации COM для каждого потока
- При первом обращении может быть небольшая задержка
- Голоса кэшируются после первого использования
RhVoice и Vocalizer:
- Загружаются через собственные драйверы NVDA
- Поддерживают широкий набор языков
- Обычно быстро переключаются
Pravka TTS оптимизирован для минимального влияния на скорость работы NVDA:
Вопрос: Нужно ли устанавливать какие-то дополнительные программы?
Ответ: Нет, Pravka TTS работает с уже установленными в системе синтезаторами. Дополнительного ПО не требуется.
Вопрос: Можно ли использовать Pravka TTS одновременно с другими речевыми дополнениями?
Ответ: Да, Pravka TTS является синтезатором, поэтому он не конфликтует с другими дополнениями. Вы просто выбираете его как основной синтезатор в NVDA.
Вопрос: Влияет ли расширение на скорость работы NVDA?
Ответ: Влияние минимально и практически незаметно. Первое переключение на новый синтезатор может занять доли секунды, но затем все голоса работают с обычной скоростью.
Вопрос: Почему не загружаются голоса в настройках?
Ответ: Это нормально, загрузка может занимать 5-10 секунд. Если голоса не загружаются дольше:
- Проверьте, работает ли выбранный основной синтезатор (переключитесь на него временно в NVDA)
- Убедитесь, что в системе есть установленные голоса
- Попробуйте перезапустить NVDA
Вопрос: Можно ли использовать разные синтезаторы для разных языков?
Ответ: Да, это одна из ключевых возможностей. Например:
- Русский язык: RhVoice (голос Александр)
- Английский язык: OneCore (голос Microsoft David)
- Немецкий язык: SAPI5 (голос Microsoft Hedda)
Вопрос: Почему правило условного переключения не срабатывает?
Ответ: Проверьте следующее:
- Правило включено (флажок «Включено» установлен)
- Начальный и конечный символы указаны правильно
- Символы действительно являются символами пунктуации (не буквами)
- Выбран целевой голос (не осталось значение «(Загрузка…)»)
Вопрос: Можно ли использовать несколько символов в качестве маркера?
Ответ: В текущей версии поддерживаются только одиночные символы. Поддержка последовательностей символов планируется в будущих версиях.
Вопрос: Где взять дополнительные голоса?
Ответ:
- SAPI5 голоса: можно приобрести у различных производителей (Acapela, IVONA, Nuance и др.)
- OneCore голоса: встроены в Windows 10/11, добавляются через параметры речи
- RhVoice голоса: бесплатно на официальном сайте проекта
- eSpeak: встроен в NVDA
Вопрос: Поддерживаются ли голоса с несколькими языками (многоязычные)?
Ответ: Да, многие современные голоса поддерживают несколько языков. Pravka TTS будет использовать их для соответствующих типов текста.
Вопрос: Можно ли настроить скорость и тон для каждого голоса отдельно?
Ответ: В текущей версии скорость и тон настраиваются глобально. Индивидуальные настройки для каждого голоса планируются в будущих версиях.
Возможные причины:
- Не выбран основной движок в настройках
- Проблемы с инициализацией выбранного движка
Решение:
1. Откройте настройки NVDA (NVDA+N → Настройки → Настройки)
2. Переключитесь временно на любой другой синтезатор (например, eSpeak)
3. Убедитесь, что речь работает
4. Снова переключитесь на pravka TTS
5. Если проблема сохраняется, проверьте настройки pravka TTS
Возможные причины:
- Не назначены голоса для типов текста
- Выбранный голос недоступен или не установлен
Решение:
1. Откройте настройки pravka TTS
2. На вкладке «Скрипты» проверьте, что для нужных типов текста выбраны голоса
3. Убедитесь, что выбранные голоса действительно установлены в системе
4. Попробуйте выбрать другой голос для проверки
Возможные причины:
- Проблемы с COM-инициализацией
- Конфликт с другими дополнениями
- Повреждённые голоса в системе
Решение:
1. Перезапустите NVDA
2. Временно отключите другие дополнения для проверки
3. Проверьте работу синтезатора отдельно (выберите его в NVDA без pravka TTS)
4. Если проблема в конкретном синтезаторе, попробуйте переустановить его голоса
Возможные причины:
- Неправильно указаны символы
- Символы экранируются в тексте
- Конфликт между правилами
Решение:
1. Проверьте точность указанных символов
2. Убедитесь, что символы присутствуют в тексте в явном виде
3. Временно отключите другие правила для проверки
4. Создайте простое тестовое правило с круглыми скобками
Возможные причины:
- Очень большое количество голосов в системе
- Проблемы с конкретным синтезатором
- Конфликт с другими дополнениями
Решение:
1. Подождите немного (до 30 секунд) — загрузка может идти долго
2. Перезапустите NVDA в безопасном режиме (с отключёнными дополнениями)
3. Временно удалите неиспользуемые голоса из системы
4. Проверьте журнал NVDA (NVDA+F1) на наличие ошибок
Если проблема не решается, соберите информацию для разработчиков:
При сообщении об ошибке, пожалуйста, укажите:
Мы всегда рады слышать предложения пользователей! Если у вас есть идеи по улучшению дополнения: