Синтезатор речи для NVDA, который запускает оригинальный движок First Byte SmoothTalker 3.5 1990 года — голос из Creative Labs Dr. Sbaitso — под эмулятором процессора Unicorn.
Здесь нет никакой перереализации. Настоящий 16-битный код синтезатора выполняется, управляя тем, что он считает звуковой платой Sound Blaster; дополнение эмулирует достаточно DSP и контроллера прямого доступа к памяти 8237, чтобы захватить аудио, которое карта должна была бы воспроизвести, затем преобразует его в 16-битное, передискретизирует до 22050 Гц и передает в NVDA.
NVDA 2026.1 или новее. Начиная с версии 2026.1, NVDA стал 64-битным приложением, поэтому поставляемая сборка Unicorn является 64-битной, и эта версия не будет работать на более ранних, 32-битных выпусках NVDA.
Загрузите sbaitso-1.1.nvda-addon из Releases, затем откройте его или используйте Сервис → Менеджер дополнений → Установить из внешнего источника в NVDA. Перезапустите NVDA и выберите smooth talker в Меню NVDA → Параметры → Настройки → Речь.
Движок хранит свои настройки в блоке из пяти слов, который Dr. Sbaitso заполнял значениями 0, 0, 5, 5, 5. Четыре из этих полей доступны:
| Настройка | Диапазон | Эффект | | --- | --- | --- | | Скорость | 0–9 | от 1,91 с до 0,81 с для фиксированной фразы | | Высота тона | 0–9 | примерно от 41 Гц до 154 Гц | | Тембр | 0/1 | при включении обрезает низкие частоты — более тонкий и яркий звук | | Громкость | 0–9 | от тихого до громкого; без клиппинга |
Ползунки объявлены в собственном диапазоне движка от 0 до 9, а не в обычном для NVDA диапазоне 0–100, поэтому ничего не пересчитывается, и каждое значение, доступное движку, достижимо по отдельности. Настройки изменяются с шагом в одну единицу; клавиши Page Up и Page Down в настройках голоса перемещают на три единицы.
Настройки интонации нет, потому что у движка нет такого управления. Однако он сам производит интонацию — высота тона в пределах одного высказывания колеблется примерно от 48 до 110 Гц в соответствии с правилами просодии SmoothTalker, — но для этого нет регулятора.
manifest.ini манифест дополнения
installTasks.py очистка конфигурации при установке
doc/en/readme.html встроенная справка дополнения
build.py упаковывает .nvda-addon
synthDrivers/smoothtalker.py драйвер NVDA
synthDrivers/_smoothtalker_engine/core.py ядро эмуляции
synthDrivers/_smoothtalker_engine/engine.bin образ памяти движка
synthDrivers/_smoothtalker_engine/lib/ поставляемая Unicorn 2.1.4 (x64)
Название пакета движка начинается с символа подчеркивания намеренно: NVDA сканирует synthDrivers/ в поисках синтезаторов и пропускает имена, начинающиеся с _.
python build.py
Создает sbaitso-<version>.nvda-addon в корне репозитория, читая версию из manifest.ini.
Код дополнения лицензирован под GPL-2.0 — см. LICENSE.
Unicorn, поставляемый в synthDrivers/_smoothtalker_engine/lib/, также распространяется под GPL-2.0.
Поставляемый образ движка не принадлежит мне для лицензирования. SmoothTalker защищен авторским правом © 1983–1990 First Byte. Два патента, которые первоначально покрывали его (US 4,692,941 и US 4,617,645), давно истекли, но код движка и голосовые данные в engine.bin остаются под защитой авторского права, и этот файл получен из оригинального дистрибутива Creative Labs. Он включен сюда, чтобы дополнение работало «из коробки»; имейте в виду, что это распространение материалов, защищенных авторским правом, и правообладатель может попросить GitHub удалить их. Если вы предпочитаете не полагаться на поставляемую копию, удалите engine.bin и предоставьте свою собственную, извлеченную из вашей собственной копии Dr. Sbaitso.
Дополнение от Josh Kennedy <joshknnd1982@gmail.com>.
Интерфейс движка — INT 2Fh AX=0FBFBh, возвращающий ES:BX, точка входа дальнего вызова по адресу [ES:BX+4], текстовый буфер по адресу ES:BX+20h с ведущим байтом длины и блок настроек по адресу buffer+0x200 — был восстановлен путем обратной разработки оригинальных двоичных файлов. Названия полей, используемые в исходном коде (gender, tone, volume, pitch, speed, startpos, action), принадлежат First Byte: как READ.EXE, так и SET-ECHO.EXE содержат список полей этой структуры.