Skip to content

About

The SSI-263 speech chip, emulated, with the original firmware of the Speak-Out, Braille Lite, Accent-mini and Accent SA driving it. NVDA add-ons.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

ssi263-speech

I'm Tamas, and I spend a lot of my spare time getting old speech synthesizers talking again. This one is a little different: instead of one synthesizer, it's the chip that sat inside a whole family of them.

The Silicon Systems SSI-263 (Votrax sold it as the SC-02, Aicom called it the AI901) was the voice of a lot of blind people's computers in the late 80s and 90s. This project is a register-level emulation of that chip, and around it, the original firmware of four talking devices, running unchanged and driving the emulated chip:

Voice Its own software Runs in
Speak-Out talking box (GW Micro, 1995) its NEC V40 firmware MAME's V40, inside NVDA
Blazie Braille Lite 2000 in speech-box mode the June 2003 firmware MAME's Z180
Aicom Accent-mini Aicom's DOS device driver SPKEMS.DVC (Accent-EMS V4.5) MAME's 8086, with emulated expanded memory
Aicom Accent SA the box's own 8085 firmware and dictionary ROMs (1986–1989) MAME's 8085

The pronunciation rules, the number reading, the intonation and the timing are all the devices' own. The chip model makes every sample: nothing is recorded or concatenated.

Why the chip, and not a recording

Every one of these boxes wrote the same five registers. If the chip is right, every box that ever drove it can talk again, and each one sounds like itself, because its own rules are doing the talking. So the chip comes first. It's built from the evidence, not by ear alone:

  • the phoneme ROM, read by Astra from Visual6502.org's die shots, and checked against Rob Elmer's Casso;
  • the data sheet and the chip family's ISSCC paper;
  • 63 minutes of my own Braille Lite 2000 recorded from its line out, used for development;
  • a frozen hold-out set of other recordings that nothing is ever tuned on.

Where a measurement and my ears disagree, my ears win. So far they've been right every time.

Getting the add-ons

Download the latest release. There are three NVDA add-ons, and they can all be installed together:

Add-on What you get Settings
speakout-ssi263 Speak-Out rate 0–9, pitch 0–9, tone A–Z as the variant
blazie-ssi263 Braille Lite / Braille 'n Speak rate 1–16, pitch 1–63, tone 1–25 as the variant
accent-ssi263 two voices, Accent-mini and Accent SA the Accent's own commands: rate R0–H, pitch P0–9, voice V0–9 as the variant, inflection from monotone to full

They run on NVDA 2021.1 through 2026.1, 32- or 64-bit, on Windows 7 and later, and now on Windows on ARM too. You don't need numpy or a Visual C++ runtime. All three support capital pitch change. The Braille Lite and Accent have an option to read numbers as words, because the Accent reads 100 as "one zero zero" and the Braille Lite stops short of trillions.

BT Speak and BT Braille emulator

The Blazie Mode frontend runs the original Blazie firmware, with a menu for the installed Braille Lite 2000, Braille 'n Speak 2000, and Type 'n Speak models and languages, with direct six-dot keyboard input and its SSI-263 voice. Build with ./build_linux.sh, then run ./build/linux/blazie_emu_bt from a Blazie Mode terminal. M-chord with Dot 7 opens the host menu. Braille Lite's own 18-cell output appears on BT Braille, with L2/R2 for back and L3/R3 for forward. Speech-only models clear the cells; host menus use the device's normal speech and braille dialogs.

About the firmware

The released add-ons carry each device's firmware, because without it there's no voice. It isn't ours. It's here so these machines can speak again, and any of it will come down if its rights holders ask.

This repository only keeps Aicom's software in the tree. Aicom stopped making the Accent line around 2000, and by 2001 even its own customers couldn't find anyone to ask. firmware/AICOM.txt has what we know and where each file came from. The Speak-Out and Braille Lite firmware stay out of git: to build those two add-ons yourself, put your own copies in firmware/gw-micro-speakout/ and firmware/blazie/. The README in each folder says which files, with their checksums.

Documentation

Layout

Path What it is
src/ssi263/ The chip. chip.py is the reference, params.py holds every uncertain constant tagged by its source, native.py is the same chip in C behind the same interface
src/csrc/ The chip in C99, the device boards, and the extracted MAME CPU cores with their BSD notices
src/hosts/ The firmware hosts and native-board bindings. MAME is the default for all four devices; old cores are development references only
src/data/rom_bits.csv The phoneme ROM
src/HOLDOUT.md The hold-out rules, and a log of every change to the chip and every look at the hold-out
docs/ The documentation (see above)
tools/ Research and check tools: comparisons against the recordings, the C/Python gate, renders
nvda/ The three NVDA drivers, their builds, and the driver test rig
firmware/ Aicom's software, and the places the other firmware goes
third_party/casso/ From Rob Elmer's Casso (MIT): the ROM extraction the die reading was checked against

Building

You'll need 64-bit and 32-bit Python 3.13, and w64devkit GCC in both its x86_64 and i686 builds. The research tools also want numpy, scipy, soundfile and librosa.

Nothing in the repository assumes where those live. Copy paths.local.example to paths.local (it stays out of git) and fill in the keys you need, or set the same keys as SSI263_<KEY> environment variables. A script that needs a missing key says which one. python tools/check_no_machine_paths.py makes sure no one's own paths get committed.

python src/csrc/build_native.py      # ssi263.dll, 64- and 32-bit, static
python nvda/build_speakout.py        # every build checks the C chip against chip.py first
python nvda/build_blazie.py          # native board and pipe host both use MAME's Z180
python nvda/build_accent.py

The add-ons land in nvda/dist/. python nvda/build_release.py builds all three together, sharing native builds and chip checks. Every shipping CPU uses the extracted MAME core: Z180, V40, 8086 and 8085. Packages include both Windows architectures and their MIT/BSD notices. Unicorn, z180emu and the Python 8085 remain development comparison references; they are not runtime payloads and no environment switch is needed for MAME.

Testing

Command What it checks
python tools/check_native_core.py The C chip against chip.py: internal state exact, PCM identical, under every parameter switch
python tools/check_no_machine_paths.py No tracked file names a folder on anyone's own machine
python -S nvda/tools/driver_sim.py speakout|blazie|accent|accentsa|both "C:\Program Files\NVDA" tag A built driver against stand-in NVDA modules, importing only from NVDA's own library
python nvda/tools/pitch_bug.py speakout|blazie|accent Capital pitch is never left raised

Credits

  • Engine, hosts and drivers: Tamas Geczy (tgeczy), with Claude.
  • Visual6502.org: the SSI-263P die shots that everything here was read from. Greg James photographed the die in 203 images, and Christian Sattler corrected and stitched them into one 17265 × 14313 picture, from chips an anonymous donor sent them. The same page keeps the SSI-263A data sheets and programming guide. Without it there would be no ROM, and no chip.
  • The die: Astra read the SSI-263's phoneme ROM from those shots, reviews the engine, and found the Windows-on-ARM fix.
  • Casso: Rob Elmer, MIT (third_party/casso/LICENSE).
  • MAME's CPU cores: BSD-3-Clause, with each core's authors and pinned source recorded under src/csrc/cpu/mame_*. Their license notices accompany the add-ons.
  • Unicorn 2.1.4 and z180emu: GPL development references for migration comparisons, outside the 0.7 release payloads.
  • The Accent SA ROMs were shared by spacepup.
  • The firmware belongs to its makers: the Speak-Out to GW Micro (hardware by Daniel Weirich, software by Douglas Geoffray), the Accent to Aicom Corporation. The Braille Lite's firmware is shared with permission.
  • The whole story, day by day and with who found what, is in docs/history.md.
  • Thanks, Derek, for your contributions.
  • And thanks to everyone listening, testing and telling me what sounds wrong. That's how a chip model turns into a voice you can read with.

License

The code in this repository is MIT: see LICENSE. That covers our code only. The shipping CPU cores retain MAME's BSD-3-Clause terms; Casso retains its MIT notice. Firmware and the unshipped Unicorn/z180emu development references keep their own terms.

About

The SSI-263 speech chip, emulated, with the original firmware of the Speak-Out, Braille Lite, Accent-mini and Accent SA driving it. NVDA add-ons.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages