Pravka TTS (Интеллектуальная маршрутизация голосов)
Автор:- Исходный код дополнения: Посетить Web-сайт pravka
Краткое описание
Дополнение Pravka TTS позволяет автоматически переключать голоса и синтезаторы речи в зависимости от типа текста: латиница, кириллица, цифры, эмодзи и другие.
Поддерживается создание правил для переключения на основе символов-маркеров (например, для текста в скобках или кавычках).
Работает с любыми SAPI5 и OneCore голосами, а также сторонними синтезаторами.
Идеально подходит для многоязычных пользователей и работы со специализированными текстами.
Функционал подробнее описан в справочном руководстве.
Примечание: Разработчик дополнения PairSynthesizer изменил название и концепцию дополнения, поэтому оно теперь называется PravkaTTS. Перед использованием нового дополнения, предыдущие PairSynthesizer нужно обязательно удалить.
Основная информация
| Название | Версия | Совместимость с API NVDA | Последняя протестированная версия NVDA | Минимальная версия NVDA | Дата загрузки в каталог | Размер | Лицензия |
|---|---|---|---|---|---|---|---|
| pravka | 2.0 | 2026.1 | 2026.1 | 2021.1 | 24-02-2026 12:35:38 | 112 Кб. | GPL v2 |
Информация о локализации на русский язык
🔝 Назад к оглавлениюСкачать
⬇ Перейти к истории версий 🔝 Назад к оглавлениюРазделы
🔝 Назад к оглавлениюСправка
Подробнее
Pravka TTS — интеллектуальная маршрутизация голосов для NVDA
Введение
Pravka TTS — это дополнение для программы экранного доступа NVDA (NonVisual Desktop Access), которое кардинально расширяет возможности управления речью. Основная задача дополнения — предоставить пользователю возможность использовать разные голоса и синтезаторы для различных типов текста в автоматическом режиме.
Зачем это нужно?
Представьте, что вы читаете документ, содержащий текст на нескольких языках. Обычно NVDA использует один голос для всего текста, что может приводить к некорректному произношению слов на других языках. С Pravka TTS вы можете настроить автоматическое переключение:
- Русский текст озвучивается русским голосом
- Английский текст — английским голосом
- Цифры и специальные символы — голосом с чёткой дикцией
- Текст в скобках или кавычках — другим голосом для выделения
Дополнение работает как интеллектуальный диспетчер, анализируя каждый фрагмент текста и направляя его в нужный синтезатор с правильным голосом.
Быстрый старт
Чтобы начать использовать Pravka TTS, выполните следующие шаги:
-
Активируйте дополнение:
- Откройте меню NVDA → «Настройки» → «Синтезатор речи»
- В списке синтезаторов выберите «pravka TTS»
-
Откройте настройки дополнения:
- Меню NVDA → «Сервис» → «настройки pravka TTS...»
-
Выберите основной движок:
- На вкладке «Основной речевой движок» выберите синтезатор, который будет использоваться по умолчанию (например, «SAPI5» или «OneCore»)
-
Настройте голоса для разных типов текста:
- Перейдите на вкладку «Скрипты»
- Дождитесь загрузки списков голосов
- Для каждого типа текста выберите подходящий голос
-
Сохраните настройки:
- Нажмите кнопку «Сохранить»
Готово! Теперь NVDA будет автоматически переключать голоса в зависимости от типа текста.
Интерфейс настроек
Окно настроек Pravka TTS открывается из меню «Сервис» NVDA. Оно содержит три основных раздела.
Основной речевой движок
В верхней части окна расположена панель выбора основного речевого движка. Это обязательная настройка, определяющая, какой синтезатор будет использоваться по умолчанию.
Что здесь настраивается:
- Выпадающий список со всеми доступными в системе синтезаторами
- Выбранный движок будет использоваться для всех типов текста, для которых не назначен отдельный голос
Важно: При изменении основного движка автоматически перезагружаются списки голосов на всех вкладках.
Вкладка «Скрипты»
Эта вкладка содержит настройки голосов для различных типов текста (скриптов — в терминологии Unicode).
Поддерживаемые типы текста:
| Тип текста | Описание | Примеры языков |
|---|---|---|
| Текст на латинице | Все языки, использующие латинский алфавит | Английский, французский, немецкий, испанский |
| Текст на кириллице | Языки с кириллическим письмом | Русский, украинский, болгарский, сербский |
| Арабский текст | Арабское письмо | Арабский, персидский, урду |
| Текст на хинди/деванагари | Письмо деванагари | Хинди, санскрит, маратхи |
| Цифры | Числовые символы 0-9 | Все языки |
| Эмодзи и символы | Эмодзи, спецсимволы, пиктограммы | — |
| Греческий текст | Греческий алфавит | Греческий |
| Китайские иероглифы | Китайское, японское, корейское письмо | Китайский, японский, корейский |
| Тайский текст | Тайское письмо | Тайский |
Как настроить:
- Для каждого типа текста представлен выпадающий список голосов
- Изначально списки отображают «(Загрузка...)» — это нормально, подождите несколько секунд
- После загрузки выберите нужный голос из списка
- Если голос не выбран, будет использоваться голос основного движка
Вкладка «Условное переключение»
Эта вкладка предназначена для создания более сложных правил переключения голосов на основе контекста — символов, окружающих текст.
Основные элементы:
- Таблица со списком созданных правил
- Кнопки управления: «Добавить правило», «Изменить правило», «Удалить правило»
- Информационное сообщение в верхней части вкладки
Структура таблицы правил:
- Включено — отображает, активно ли правило (Да/Нет)
- Имя — название правила для удобства идентификации
- Условие — описание условия срабатывания (например, "starts_ends: ( ... )")
- Действие (голос) — какой голос будет использоваться
Создание правил условного переключения
Диалог добавления/редактирования правила
При нажатии кнопки «Добавить правило» или «Изменить правило» открывается диалог со следующими полями:
1. Имя правила
Произвольное название, помогающее идентифицировать правило. По умолчанию предлагается «Новое правило».
2. Включено
Флажок, определяющий, активно ли правило. Можно временно отключать правила без их удаления.
3. Начальный символ
Символ или последовательность символов, с которых начинается целевой фрагмент. Можно выбрать из предопределённого списка или ввести свой символ.
Доступные предопределённые символы:
- Круглые скобки: (, )
- Квадратные скобки: [, ]
- Фигурные скобки: {, }
- Угловые скобки: <, >
- Звёздочка: *
- Знак доллара: $
- Амперсанд: &
- Решётка: #
- Собака: @
- Знак процента: %
- Карет: ^
- Вертикальная черта: |
- Обратная косая черта: \
- Косая черта: /
- Нижнее подчёркивание: _
- Дефис: -
- Знак плюса: +
- Знак равенства: =
- Тильда: ~
- Двойные кавычки: "
- Одинарные кавычки: '
- Обратный апостроф: `
- Восклицательный знак: !
- Вопросительный знак: ?
- Двоеточие: :
- Точка с запятой: ;
- Запятая: ,
- Точка: .
Важно: Допускаются только символы пунктуации. Буквы и цифры использовать нельзя — это ограничение предотвращает некорректную работу.
4. Конечный символ
Символ, которым заканчивается целевой фрагмент. Работает аналогично начальному символу.
5. Целевой голос
Голос, который будет использоваться для текста между начальным и конечным символами. Список загружается автоматически после выбора основного движка.
Процесс загрузки голосов:
- Изначально отображается «(Загрузка...)»
- Через несколько секунд появляется список доступных голосов
- Если голосов нет или произошла ошибка, отображается «(Ошибка)»
Управление правилами
Добавление правила
- Нажмите «Добавить правило»
- Заполните все поля в открывшемся диалоге
- Нажмите «OK» для сохранения
- Новое правило появится в таблице
Редактирование правила
- Выберите правило в таблице (одиночный клик)
- Нажмите «Изменить правило»
- Внесите необходимые изменения
- Нажмите «OK» для сохранения
Удаление правила
- Выберите правило в таблице
- Нажмите «Удалить правило»
- Подтвердите удаление в диалоговом окне
Включение/отключение правила
Для временного отключения правила без удаления:
- Выберите правило и нажмите «Изменить правило»
- Снимите флажок «Включено»
- Сохраните изменения
Правило останется в таблице, но не будет применяться при озвучивании.
Примеры настройки
Пример 1: Двуязычное озвучивание (русский + английский)
Задача: Русский текст должен озвучиваться голосом «Михаил», английский — голосом «David».
Необходимые голоса:
- Установленный русский SAPI5 голос (например, «Михаил» от Microsoft)
- Установленный английский SAPI5 голос (например, «David» от Microsoft)
Настройка:
-
Откройте настройки Pravka TTS (Инструменты → pravka TTS Settings...)
-
На вкладке «Основной речевой движок» выберите «SAPI5»
-
Перейдите на вкладку «Скрипты»
-
Дождитесь загрузки голосов (около 5-10 секунд)
-
В разделе «Текст на кириллице» выберите «Михаил»
-
В разделе «Текст на латинице» выберите «David»
-
Нажмите «Сохранить»
Результат: При чтении документа, содержащего русский и английский текст, NVDA будет автоматически переключаться между голосами Михаил и David.
Пример 2: Выделение цитат другим голосом
Задача: Текст, заключённый в двойные кавычки, озвучивать голосом с более высоким тоном для лучшего восприятия.
Необходимые голоса:
- Основной голос (любой)
- Дополнительный голос с другим тоном (например, «Zira» для английского или «Ирина» для русского)
Настройка:
-
Откройте настройки Pravka TTS
-
На вкладке «Основной речевой движок» выберите нужный синтезатор
-
Перейдите на вкладку «Условное переключение»
-
Нажмите «Добавить правило»
-
Заполните диалог:
- Имя правила: Цитаты в кавычках
- Включено: установите флажок
- Начальный символ: выберите
" - Double Quote - Конечный символ: выберите
" - Double Quote - Целевой голос: дождитесь загрузки и выберите голос с нужным тоном
-
Нажмите «OK»
-
Нажмите «Сохранить» в главном окне
Результат: Любой текст между двойными кавычками будет озвучиваться выбранным голосом, остальной текст — основным голосом.
Пример 3: Озвучивание математических выражений
Задача: Математические формулы, заключённые в символы доллара (как в LaTeX), озвучивать голосом с чёткой артикуляцией для лучшего восприятия символов и цифр.
Необходимые голос:
- Голос с хорошей дикцией (например, технические голоса или голоса с высоким качеством произношения)
Настройка:
-
Откройте настройки Pravka TTS
-
Перейдите на вкладку «Условное переключение»
-
Нажмите «Добавить правило»
-
Заполните диалог:
- Имя правила: Математические формулы
- Включено: установите флажок
- Начальный символ: выберите
$ - Dollar Sign - Конечный символ: выберите
$ - Dollar Sign - Целевой голос: выберите голос с хорошей артикуляцией
-
Нажмите «OK»
-
На вкладке «Скрипты» дополнительно можно настроить:
- Для «Цифр» выбрать тот же голос, что и для формул
- Для «Эмодзи и символов» также выбрать этот голос
-
Нажмите «Сохранить»
Результат: Текст вида $E = mc^2$ будет озвучиваться выбранным техническим голосом, что обеспечит чёткое произношение символов.
Пример 4: Техническая документация с кодом
Задача: При чтении технической документации фрагменты кода, выделенные обратными кавычками, озвучивать монотонным голосом, а обычный текст — основным голосом.
Необходимые голоса:
- Основной голос (например, «Михаил»)
- Голос с монотонной интонацией (например, некоторые синтезаторы имеют «роботизированные» голоса)
Настройка:
-
Откройте настройки Pravka TTS
-
Перейдите на вкладку «Условное переключение»
-
Нажмите «Добавить правило»
-
Заполните диалог:
- Имя правила: Фрагменты кода
- Включено: установите флажок
- Начальный символ: выберите
` - Backtick - Конечный символ: выберите
` - Backtick - Целевой голос: выберите монотонный голос
-
Нажмите «OK»
-
Нажмите «Сохранить»
Результат: Фрагменты кода в обратных кавычках будут чётко выделяться монотонным голосом, что помогает отличать код от описания.
Принцип работы
Pravka TTS функционирует как многоуровневый диспетчер речи, перехватывающий весь текст, направляемый NVDA на озвучивание. Рассмотрим этот процесс подробно.
Этапы обработки текста
Этап 1: Перехват речи
Когда NVDA отправляет текст для озвучивания, он сначала попадает в диспетчер Pravka TTS. Это происходит потому, что в настройках NVDA выбран синтезатор «pravka TTS».
Этап 2: Анализ текста
Диспетчер разбивает текст на логические фрагменты и анализирует каждый фрагмент по нескольким критериям:
Анализ типа текста (скрипта):
- Определение, к какому типу письменности относятся символы
- Проверка по категориям: латиница, кириллица, арабское письмо и т.д.
Анализ контекста (условное переключение):
- Поиск открывающих маркеров из активных правил
- Отслеживание состояния — находится ли текущий фрагмент внутри маркеров
- Поиск закрывающих маркеров для завершения специального режима
Этап 3: Выбор голоса
На основе результатов анализа принимается решение о выборе голоса:
-
Проверка условных правил: Если текст находится внутри маркеров активного правила, выбирается голос, указанный в этом правиле
-
Проверка типа текста: Если активных правил нет или текст не соответствует ни одному правилу, проверяется, назначен ли отдельный голос для данного типа текста в настройках
-
Использование основного голоса: Если ни одно из вышеуказанных условий не выполнено, используется голос основного движка
Этап 4: Маршрутизация
Выбранный голос принадлежит конкретному синтезатору. Диспетчер:
- Проверяет, загружен ли этот синтезатор
- При необходимости загружает его (если он ещё не использовался)
- Отправляет текст в этот синтезатор для озвучивания
Этап 5: Кэширование
Для оптимизации производительности диспетчер сохраняет ссылки на уже использованные синтезаторы. При повторном обращении к тому же синтезатору загрузка не требуется.
Пример работы
Рассмотрим пример текста: Он сказал: "Hello, world!" и улыбнулся.
Обработка:
- Фрагмент «Он сказал: » — определяется как кириллица → направляется в русский голос
- Встречается символ
"— активируется правило для кавычек - Фрагмент «Hello, world!» — определяется как латиница, но применяется правило → направляется в голос для цитат
- Встречается закрывающий символ
"— правило деактивируется - Фрагмент « и улыбнулся.» — снова кириллица → русский голос
Технические особенности
Поддерживаемые синтезаторы
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:
Асинхронная загрузка
- Списки голосов загружаются в фоновых потоках
- Интерфейс настроек остаётся отзывчивым во время загрузки
- При переключении основного движка загрузка происходит поэтапно, чтобы не блокировать UI
Кэширование синтезаторов
- После первого использования синтезатор сохраняется в памяти
- Повторное обращение происходит мгновенно
- При завершении работы NVDA все синтезаторы корректно выгружаются
Оптимизация для OneCore
- Специальная задержка 0.1 секунды при инициализации OneCore для 64-битных систем
- Предотвращает ошибки загрузки голосов
Минимальные задержки переключения
- Переключение между голосами одного синтезатора происходит без задержек
- Переключение между разными синтезаторами требует загрузки, но это происходит только при первом обращении
Часто задаваемые вопросы
Общие вопросы
Вопрос: Нужно ли устанавливать какие-то дополнительные программы?
Ответ: Нет, 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 не говорит после выбора pravka TTS
Возможные причины:
- Не выбран основной движок в настройках
- Проблемы с инициализацией выбранного движка
Решение:
- Откройте настройки NVDA (NVDA+N → Настройки → Настройки)
- Переключитесь временно на любой другой синтезатор (например, eSpeak)
- Убедитесь, что речь работает
- Снова переключитесь на pravka TTS
- Если проблема сохраняется, проверьте настройки pravka TTS
Проблема 2: Голоса не переключаются автоматически
Возможные причины:
- Не назначены голоса для типов текста
- Выбранный голос недоступен или не установлен
Решение:
- Откройте настройки pravka TTS
- На вкладке «Скрипты» проверьте, что для нужных типов текста выбраны голоса
- Убедитесь, что выбранные голоса действительно установлены в системе
- Попробуйте выбрать другой голос для проверки
Проблема 3: Ошибка при загрузке голосов
Возможные причины:
- Проблемы с COM-инициализацией
- Конфликт с другими дополнениями
- Повреждённые голоса в системе
Решение:
- Перезапустите NVDA
- Временно отключите другие дополнения для проверки
- Проверьте работу синтезатора отдельно (выберите его в NVDA без pravka TTS)
- Если проблема в конкретном синтезаторе, попробуйте переустановить его голоса
Проблема 4: Правила условного переключения работают некорректно
Возможные причины:
- Неправильно указаны символы
- Символы экранируются в тексте
- Конфликт между правилами
Решение:
- Проверьте точность указанных символов
- Убедитесь, что символы присутствуют в тексте в явном виде
- Временно отключите другие правила для проверки
- Создайте простое тестовое правило с круглыми скобками
Проблема 5: Зависание при открытии настроек
Возможные причины:
- Очень большое количество голосов в системе
- Проблемы с конкретным синтезатором
- Конфликт с другими дополнениями
Решение:
- Подождите немного (до 30 секунд) — загрузка может идти долго
- Перезапустите NVDA в безопасном режиме (с отключёнными дополнениями)
- Временно удалите неиспользуемые голоса из системы
- Проверьте журнал NVDA (NVDA+F1) на наличие ошибок
Получение диагностической информации
Если проблема не решается, соберите информацию для разработчиков:
- Откройте журнал NVDA: NVDA+Н (русская раскладка) или NVDA+F1 (английская)
- Скопируйте содержимое журнала
- Выполните действия, приводящие к проблеме
- Снова откройте журнал и скопируйте новые записи
- Отправьте эту информацию в разработчику дополнения
Сообщение об ошибках
При сообщении об ошибке, пожалуйста, укажите:
- Версию NVDA
- Версию Windows
- Версию дополнения Pravka TTS
- Подробное описание действий, приводящих к ошибке
- Содержимое журнала NVDA на момент ошибки
Предложения по улучшению
Мы всегда рады слышать предложения пользователей! Если у вас есть идеи по улучшению дополнения:
- Опишите вашу идею подробно
- Объясните, какую проблему она решает
- Если возможно, приведите пример использования
История версий
История версий
| Версия файла | Тестируемая версия NVDA | Минимальная версия NVDA | Размер файла (КБ) | Ссылка на загрузку |
|---|---|---|---|---|
| 2.0 | 2026.1 | 2021.1 | 112 | Pravka-V.2.0.nvda-addon |