Dk'tronics Speech Synthesizer based on SPO256 (-AL2, presumably?) chip.
Overview
The DK'tronics speech synthesizer came with the standard handbook which gave instructions for all DK'tronics add-ons. The speech synthesizer also had the classic DK'tronics casing as all their CPC products had, with the exception of a fly-lead which could be connected to the stereo output of the CPC. It also had two mono outputs for the supplied speakers, a volume control on the right hand side and the balance could be adjusted with a small screw-driver through a hole below the volume. Two versions of the synthesizer were available. One where the software was supplied on a cassette and a second version with the software on an internal ROM within the unit. When the ROM version was connected and working properly, it reported the message 'Speech ROM Ver. 1.1' on the screen.
DK'tronics changed suppliers of the speakers more than once, so several different versions of the speakers exist, including one version with a swiveled bracket for wall or desk mounting.
Software
The software supplied on cassette or ROM gave the user 11 new RSX (bar) commands to manipulate the SPO256 either directly or using it's 'text to speech' ability (with questionable success). The commands available were:
- |SPEAK - Loaded the ROM software, listed the commands and said the sentence 'DK'tronics speech synthesizer' (badly)
- |SPON - Used to turn on the read buffers interrupt
- |SPOF - You can guess what that one did yourself
- |FEED,n - Feed data directly into the speech buffer (up to 30 comma separated values between 5 and 63)
- |FLUS - Cleared both the speech and text buffers
- |SPED,n - Controls the speed of the text (n being a value between 0 and 15 where 0 is the fastest speed)
- |OUTM,1 - Redirected the print command's output to the speech to text converter
- |OUTM,2 - Redirect both the print and all other text (List etc.) to the converter
- |OUTM,3 - Redirected all text (as with 2), but also printed to the screen in parallel
- |LEFT,v - Reported the available memory left in the buffer (where v is a variable)
- |SAY, "x" - Was the standard command to send text to the synthesizer (where x is the text to be spoken)
However on the 464 the user was required to assign the text to a variable, whereas 664 and 6128 users could
use the command directly:
464 a$="Sample text": |Say, @a$
664/6128 |Say, "Sample text"
Although the speech to text converter was very much a hit and miss affair (some words sounded perfect, whereas other words were barely recognisable), with some careful mis-spelling of words and a little speed manipulation, it was possible to achieve clear and understandable sentences.
Another method of producing speech without loading the software, was to feed the buffer directly. This could be done by polling the address &FBFE for it to drop below the value 128 and then feeding the buffer directly by outputting a value to the same address. This loop had to be repeated for each value.
The values (known as allophones) where included in a table in the handbook along with examples of common words.
The handbook also included programming examples in both BASIC and Assembly.
Technical
Uses I/O port: #FBFE
Port FBFEh READ:
bit7 status (1=busy, 0=ready/data request) (probably LRQ or maybe SBY) bit6-0 unknown/unused
Port FBFEh WRITE:
bit7-6 unknown/unused (maybe SPED related?) bit5-0 allophone number
The clock frequency (passed to the speech chip) is variable (can be changed via |SPED command), the exact frequency values are unknown?
The I/O port/bits used to change the clock frequency is unknown (?)
Note: Changing the clock frequency allows to change the intonation.
Supported Games
- Jumpjet (Anirog Software)
Other speech synthesisers for the CPC
- Amstrad SSA-1 Speech Synthesizer
- TMPI speech synthesizer (TechniMusique)
Pictures
Downloads
Reviews
On Page 11 in Amstradbladet 1985, Issue 3 (Danish)