SmoothTalker / Синтезатор Dr. Sbaitso для NVDA

Синтезатор речи для 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 &lt;joshknnd1982@gmail.com&gt;.

Интерфейс движка — 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 содержат список полей этой структуры.