MacinTalk (outSPOKEN, 1984)

The speech engine that introduced the Macintosh in January 1984, written by Joseph Katz and Mark Barton. This add-on runs the original 68000 code under the Musashi CPU emulator, inside NVDA's own process.

You must supply the engine

This add-on contains no part of MacinTalk or outSPOKEN, and never will. You provide it from your own copy.

The engine folder moved in 0.10.0. If you already had one it is moved for you the first time this version speaks — a rename, not a copy, so it is instant and cannot half-happen. The old outspoken-roms folder is still read if the move cannot happen, and a text file is left beside it naming where the engine went.

That text file, outspoken-roms.txt, is what lets an older version of this add-on still find your engine if you ever go back to one. It is the only reason it sits in the configuration folder rather than tidily inside macintalk, where nothing older would look for it. Deleting it is safe unless you plan to roll back.

Put these three files in macintalk\outspoken inside your NVDA configuration folder:

They may sit loose in that folder or in a macintalk1 subfolder; subfolders are searched. The tools/extract_rom.py script in the project repository pulls them out of a disk image or an outSPOKEN file for you, and produces exactly that layout. On first run the add-on offers to open the folder in Explorer.

The folder lives in NVDA's configuration directory rather than inside the add-on, because updating an add-on deletes and recreates its own folder and would take your engine with it.

Voices

Thirty-four, across four engines — whichever of them you have extracted. Any one alone is enough; a voice is only ever offered if the engine that speaks it is present and the voice itself is complete.

Settings

Rate and pitch both work on every engine. Pitch is an offset from each voice's own natural pitch — an octave either way — so the middle of the slider is the voice exactly as it was recorded, whichever one you pick. NVDA's capital pitch change percentage is honoured too.

Volume works on every engine and every voice. It is applied by the driver rather than by the engine, because all four of them produce eight-bit audio and turning it down inside one would cost you bits; done afterwards, quarter volume is still the full detail of the original. There is no boost: 100 is the engine's own level, which is where this add-on has always been.

Inflection sets how far the voice's pitch is allowed to move. The middle of the slider is the voice exactly as Apple recorded it, and each voice has its own natural amount — Fred and Ralph use four times as much as Albert. There are limits worth knowing:

Read numbers as words is on by default. None of these engines can read a number: the 1984 rules know the ten digit names and nothing else, so 30 is spoken “three zero”. Turning it off gives you the engine exactly as it was, which is genuinely easier to follow for version strings and phone numbers.

Notes

The 1984 engine speaks phonemes and nothing else; its own English front end was a separate component that outSPOKEN supplied. English is converted here by an interpreter written for this project, reading the letter-to-sound rules out of your own RULZ resource. The later three engines each bring their own front end.

MacinTalk Pro is the slowest of the four, and noticeably so on a long passage. Its SpeakBuffer analyses the whole text before producing a single buffer, so there is a pause before a long paragraph begins that the other engines do not have. That is the engine, not the driver: it was written in 1993, when nothing was going to hand it a screenful of somebody's timeline.

The same engine, 67.8% byte-identical, shipped as the Amiga's narrator.device. If the voice sounds familiar, that is why.

Credit

Engine: Joseph Katz and Mark Barton, 1984. CPU core: Musashi, by Karl Stenerud. NVDA driver: tgeczy. With thanks to Jayson Smith (@jaybird110127) and his work on EchoTalk, which is the pattern this project follows.