Native Speech Generation для NVDA
Автор: Muhammad Gagah muha.aku@gmail.com
Native Speech Generation — это дополнение для NVDA, которое интегрирует Google Gemini AI для генерации высококачественной, естественно звучащей речи непосредственно в NVDA.
Оно предоставляет чистый, полностью доступный интерфейс для преобразования текста в аудио, поддерживая как повествование от одного диктора, так и динамические диалоги с несколькими дикторами.
Это дополнение разработано для удобного рабочего процесса, доступного взаимодействия и гибкого управления голосом, подходящего для повествования, диалогов и создания аудиоконтента.
Возможности
Высококачественная генерация речи
Режимы одного и нескольких дикторов
- Режим одного диктора для стандартного преобразования текста в речь.
- Режим нескольких дикторов (2 диктора) для диалогов с различными голосами.
Расширенное управление голосом
Доступный и чистый интерфейс
- Полностью доступен для экранных диктофонов.
- Расширенные настройки размещены в сворачиваемой панели, чтобы основной диалог оставался простым и сфокусированным.
Бесшовный рабочий процесс
- Аудио воспроизводится автоматически после генерации.
- Сгенерированное аудио можно воспроизвести заново или сохранить как высококачественный
.wav-файл.
- Разработано для минимального трения при многократной генерации и воспроизведении.
Умная загрузка голосов и кэширование
- Доступные голоса динамически получаются из Gemini API.
- Данные голосов кэшируются на 24 часа для уменьшения количества вызовов API и ускорения запуска.
Разговор с ИИ (Живой диалог)
- Голосовой чат в реальном времени: Ведите естественный разговор с Gemini с низкой задержкой.
- Привязка к Google Search: Включите возможность для ИИ получать актуальную информацию из интернета во время вашего чата.
- Возможность прерывания: Вы можете прервать ИИ в любой момент, заговорив или нажав «Остановить диалог».
- Настраиваемость: Использует выбранный вами голос и инструкции по стилю.
- Управление уровнем мышления: Выберите
No Thinking (Без мышления), Low (Низкий), Medium (Средний) или High (Высокий) в зависимости от желаемой глубины рассуждений.
- Непрерывность при переподключении: Недавний контекст разговора автоматически восстанавливается после переподключения, без отдельного переключателя памяти.
- Более стабильная потоковая передача: Улучшено поведение при переподключении (экспоненциальная задержка + повторные попытки) и адаптивная буферизация аудио для лучшей устойчивости при нестабильных сетях.
Требования
- NVDA 2024.1 или новее, протестировано до NVDA 2026.1.
- Активное подключение к интернету.
- Действительный ключ Google Gemini API.
Установка
- Загрузите последний пакет дополнения со
страницы релизов:
https://github.com/MuhammadGagah/native-speech-generation/releases
- Установите его как стандартное дополнение NVDA.
- Перезапустите NVDA при появлении запроса.
Настройка ключа API (Обязательно)
- Создайте ключ API в Google AI Studio:
https://aistudio.google.com/apikey
- Откройте NVDA и перейдите в:
Меню NVDA → Сервис → Native Speech Generation
- Нажмите «Настройки ключа API».
- Это откроет настройки NVDA непосредственно в категории Native Speech Generation.
- Вставьте ваш ключ Gemini API в поле GEMINI API Key.
- Нажмите OK, чтобы сохранить.
Сохранённые ключи хранятся в безопасности с помощью Windows DPAPI, поэтому зашифрованное значение не может быть расшифровано на другом компьютере с Windows или учётной записи пользователя.
Для расширенных развёртываний вы также можете предоставить ключ через переменную окружения GEMINI_API_KEY. Дополнение будет использовать его автоматически, если сохранённый ключ отсутствует.
Как использовать
Откройте диалог с помощью:
- NVDA+Control+Shift+G, или
- Меню NVDA → Сервис → Native Speech Generation
Основные элементы интерфейса
- Текст для преобразования
Введите или вставьте текст, который вы хотите преобразовать в речь.
- Инструкции по стилю (необязательно)
Предоставьте указания по тону, эмоциям или манере подачи.
-
Выбор модели
-
Flash 3.1 Preview
- Flash 2.5
- Pro 2.5 (Высокое качество)
-
Режим диктора
-
Один диктор
- Несколько дикторов (2)
Генерация речи
Режим одного диктора
- Выберите Один диктор.
- Выберите голос из раскрывающегося списка Выберите голос.
- Введите ваш текст.
- При желании добавьте инструкции по стилю.
- Нажмите Сгенерировать речь.
- Аудио воспроизведётся автоматически после генерации.
Режим нескольких дикторов
- Выберите Несколько дикторов (2).
-
Для каждого диктора:
-
Введите уникальное Имя диктора.
- Выберите отдельный Голос.
- Отформатируйте текст так, чтобы каждая строка начиналась с имени диктора, за которым следует двоеточие.
Пример:
Алиса: Привет, Боб, как у тебя дела сегодня?
Боб: У меня всё отлично, Алиса! Погода замечательная.
- Нажмите Сгенерировать речь.
Голоса будут назначены автоматически на основе имён дикторов.
Разговор с ИИ (Живой режим)
Ведите естественный двусторонний голосовой разговор с Gemini.
- Настройте желаемый Голос и Инструкции по стилю в основном диалоге.
(Примечание: «Разговор с ИИ» в настоящее время поддерживает только режим одного диктора)
- Нажмите Разговор с ИИ.
- В новом окне:
- Начать диалог: Начинает сеанс. Говорите в микрофон.
- Остановить диалог: Завершает сеанс.
- Привязка к Google Search: Установите этот флажок, чтобы разрешить Gemini искать ответы в интернете (например, текущие новости, погоду).
- Примечание: Этот флажок скрыт, пока активен диалог. Остановите диалог, чтобы изменить его.
- Уровень мышления: Выберите
No Thinking (Без мышления), Low (Низкий), Medium (Средний) или High (Высокий).
- Переключение микрофона: Включите/выключите микрофон.
- Громкость: Регулируйте громкость воспроизведения голоса ИИ.
Расширенные настройки
Обзор кнопок
- Сгенерировать речь — Начать генерацию речи.
- Воспроизвести — Воспроизвести последнее сгенерированное аудио.
- Разговор с ИИ — Открыть интерфейс голосового диалога в реальном времени.
- Сохранить аудио — Сохранить последнее аудио как
.wav-файл.
- Настройки ключа API — Открыть конфигурацию дополнения в настройках NVDA.
- Просмотреть голоса в AI Studio — Открывает Google AI Studio в браузере.
- Закрыть — Закрыть диалог (или нажмите
Escape).
Жесты ввода
Настраивается через:
Меню NVDA → Параметры → Жесты ввода → Native Speech Generation
Жест по умолчанию:
- NVDA+Control+Shift+G — Открыть диалог Native Speech Generation.
Руководство по разработке и внесению вклада
Если вы хотите разрабатывать или модифицировать это дополнение, выполните следующие шаги.
Настройка окружения
- Python, соответствующий вашей целевой среде выполнения NVDA
- Используйте Python 3.13 64-bit при тестировании или упаковке зависимостей для NVDA 2026.1 и новее.
- Используйте Python 3.11 32-bit только при упаковке зависимостей для старых поддерживаемых сборок NVDA.
- uv для закреплённой сборки и цепочки инструментов линтинга.
uv sync
uv run pre-commit run --all-files
uv run scons
uv run scons pot
SCons 4.10.1, Markdown 3.10, Ruff 0.14.10, Pyright 1.1.407 и другие инструменты сборки устанавливаются из uv.lock.
* GNU Gettext Tools (опционально, рекомендуется для локализации)
Дополнительные зависимости
Только для локальной разработки установите зависимости «Разговора с ИИ» (только аудио) напрямую в путь библиотеки дополнения, используя версию Python и архитектуру, соответствующие тестируемой среде выполнения NVDA:
python.exe -m pip install google-genai pyaudio --target "D:/myAdd-on/Native-Speech-Generation/addon/globalPlugins/NativeSpeechGeneration/lib"
Откорректируйте путь в соответствии с вашей локальной директорией исходного кода дополнения.
Для текущей реализации «Разговора с ИИ» (только аудио) вам не нужны opencv-python, pillow или mss.
Для релизных пакетов дополнение загружает последний проверенный архив зависимостей на основе запущенной версии NVDA:
lib.zip для NVDA 2025.3.3 и старых поддерживаемых сборок.
lib64.zip для NVDA 2026.1 и новее.
Дополнение считывает SHA-256 данные из последнего релиза зависимостей на GitHub, используя дайджест релизного ассета или файлы контрольных сумм. Встроенные утверждённые контрольные суммы сохраняются только как запасной вариант для первой установки, когда поиск последнего релиза не удаётся. Ручная переустановка библиотек требует последнего проверенного релиза. Извлечённая папка всегда устанавливается как addon/globalPlugins/NativeSpeechGeneration/lib.
Затем скопируйте следующее из вашей установки Python в:
addon/globalPlugins/NativeSpeechGeneration/lib
- папку
zoneinfo
- файл
secrets.py
Внесение вклада
Приветствуются вклад, предложения и сообщения об ошибках.
- Откройте Issue для ошибок или запросов функций.
- Отправьте Pull Request для внесения кода.
Контакты