# General Instrument SP0256

GI SP0256 refers to a family of closely related NMOS LSI chips manufactured by General Instrument in the early 1980s, able to model the human vocal tract by a software programmable digital filter, creating a digital output converted into an analog signal through an external low-pass filter. The SP0256 includes 2 KB of mask ROM. The various versions of SP0256 differ primarily in the voice data programmed into their mask ROMs.

## Architecture overview

The SP0256 (and its predecessor, the SP0250) implements a 12-pole, Linear Predictive Coding (aka LPC-12) all-pole Vocal Tract Model (VTM). The SP0256 generates speech with a 10 kHz sample rate. The SP0256 realizes its 12-pole filter with a series of cascaded 2-pole IIR filter sections. This is in contrast to its contemporaries, such as Texas Instruments LPC Speech Chips, which used an 8 kHz sample rate with a 10-pole model, and realized their VTM with a lattice filter.
The SP0256 combines the VTM with a simple controller that loads compressed coefficient data into the VTM, either from the on-chip ROM, external speech ROMs such as the SPR-128, or in the case of the Intellivoice, an SPB640 speech data FIFO.

## SP0256 variants

General Instrument made several variants of the SP0256. These variants differed primarily in their mask ROM content. Listed below are some known variants. Others likely exist that aren't listed on this page.

### SP0256-AL2

The SP0256-AL2 is perhaps the most commonly encountered variant. It contains 59 allophones primarily intended for use with English language phrases and five pauses in its internal 16 Kb (2 KB) ROM. The SP0256-AL2 needs the control of an external microprocessor to concatenate allophones into words.
The SP0256-AL2 was available in home brew kits for speech synthesis published in specialized magazines for microcomputers such as the VIC-20, and Atari 8-bit computers. Other companies produced add-ons for various 8-bit microcomputers, like Currah MicroSpeech and the Tandy Speech/Sound Program Pak for the TRS-80. The chip was also sold under the Archer brand by RadioShack stores as the "Narrator Speech Processor" (part number 276-1784), where earlier documentation incorrectly identified it as the SPO256 (with the letter "O" instead of the numeral "0").
The SP0256-AL2 has been most recently used in Rare Waves' MIDI Narrator. This device allows you to address the allophones through MIDI note information and adjust pitch information through pitch bend messages.

### SP0256-012

Mattel's Intellivoice attachment for its Intellivision video game system uses the SP0256-012. This variant contains only Mattel-specific game phrases, including the energetic phrase "Mattel Electronics Presents", phrases for digits, and a couple of additional game phrases. It does not contain the allophones found in the SP0256-AL2 or SP0256-019. Mattel only released five games with support for this device.

### SP0256-017

The SP0256-017 comes from a talking clock and contains phrases specific to the talking clock. The SP0256-017 was sold by Radio Shack under the Archer brand as part number 276-1783. The part set also contained the SPR016-117, an external serial speech ROM. The vocabulary included the numbers (in combination) through 59, appropriate for a spoken clock. The onboard memory also provided for synthesizing the following phrases: A.M., P.M., It is, Hour, Minute, Hundred Hour, Good Morning, Attention Please, Please Hurry, and three Melodies named A, B, and C.

### SP0256-019

The Magnavox Odyssey²'s "The Voice" attachment uses the SP0256-019. This variant included the same allophones as the SP0256-AL2 (but an external ROM IC is required for the allophones), along with some Odyssey²-specific game phrases.

### SP0264-021

Used in a prototype Fuzzbuster radar detector, the SP0264-021 has relevant phrases and is pin compatible to the SP0256 series.

## FPGA emulation

An FPGA implementation of a classic eighties speech synthesizer SP0256, done for the Retro Challenge in October 2017 by Niels Moseley, is available on his GitHub account.github