The VoiceBox is an allophone based speech synthesizer based on the SP0256 speech processor.
It comes complete with its own driver software which enables you to type in English text, which is converted to speech.
Uploaded disk image is the original one shipped, a later one with graphics by Patrick Griffiths was also released.
Full Instructions from PDF Manual Scan at www.samcoupe-pro-dos.co.uk
Blue Alpha Electronics
Ynysforgan Farm, Morriston, Swansea SA6 60L
Tel : (0792) 310865
Thank you for buying 'The VoiceBox' for your SAM Coupe. We hope that you are pleased with your purchase and that you will continue to support us in supporting your home computer. Please do not forget to send us your guarantee card as soon as possible.
The VoiceBox is an allophone based speech synthesizer It comes complete with its own driver software which enables you to type in English text, which is converted to speech. A written description of software to drive the VoiceBox from your own BASIC or machine code programs is given in this document.
What you should have.
This manual, a guarantee card, a white plastic box with a connecter on one side, and a disk (or tape).
Connecting to the Coupe.
Switch your computer OFF at the mains. Never connect or disconnect any interface to your computer with the power on, as this could damage your interface and/or your computer. Plug the VoiceBox into the Expansion Euroconnecter (see your Coupe User Guide) at the rear of your machine (If you have any other interfaces connected to the Euroconnecter, you will have to disconnect them). Now switch on your Coupe. You should get the normal start-up message.
Hearing your Coupe speak.
Turn the volume up on your TV, monitor or stereo. If you have a tape based system, press F7 and start the tape deck. If you have a disk based system, boot the system from one of your own, bootable disks, and then insert the VoiceBox disk in the. left hand drive and press F9. A demonstration of the Coupe speaking should now be loading. It autoruns when loaded. The text to speech converter will then load automatically.
You may now type English text and upon pressing RETURN, the computer will convert the English to a phonetic representation of the speech, and then say the speech. You may vary the speed by pressing 1 to 5 followed by RETURN at the "Enter your text :" prompt. The program may be exited by typing 'STOP.' (without the quotes). Quite often the correct speech will be obtained by an irregular spelling of the words. If you can not hear the speech by following the above procedure, please check that you have followed the above instructions exactly, and if it still does not appear to work, please ring us on the above number.
Theory of operation.
It is important to understand the operation of the VoiceBox before attempting to drive it from within your own programs. The VoiceBox can be interrogated as to whether it is connected to the computer. If it is connected, it can be sent a code corresponding to an allophone, and then polled to see if it has finished saying the current allophone, and then sent the next allophone. (An allophone is a basic building block of speech, from which any word can be constructed.) An example of a BASIC subroutine to accomplish this is given in the next section. It should be noted that the letters which make up an English word are not necessarily the same as those suitable to be sent to the VoiceBox
Using the VoiceBox from your own programs.
The VoiceBox appears to the computer as a single IO mapped port, at the IO address FF7F Hex, or 65407 Decimal. The input port responds with the VoiceBox signature of 24 on its uppermost 7 bits, and the Least Significant Bit (LSB) is the BUSY status of the VoiceBox. The VoiceBox must be sent a silence code ( 0 ) [EDIT: Actually a 10ms pause] at the end of each word, or the last allophone will be repeated indefinitely.
For full handshaking operation, the VoiceBox should be driven as shown in the following BASIC subroutine:
1. Poll port 65407. 1000 LET inport = IN 65107 2. Is the VoiceBox 1010 LET sig = inport BAND 254 connected ? 1020 IF sig <> 24 THEN stop 3. Is It still speaking? 1030 LET busy =IN 65407 BAND 1 1040 IF busy =1 THEN GOTO 1030 4. Output the allophone. 1050 OUT 65407,allophone 1060 RETURN
Where : allophone, busy, sig and inport are variable names.
This subroutine should be called for each allophone In the speech to be said. Machine Code programmers should easily be able to convert the above into the corresponding Z80 mnemonics.
The allophones thus far referred to may be found in the final section of this manual. Each letter is followed by the allophone occurrence In an example word, followed by the corresponding code.
Rumour has it that no commercial software at all was released to use the Voicebox. The only known examples are the talking clock on Fred 17, VoiceBox Demo and Immortal Combat on Fred 59 - if you know different then update this entry!
Allophone list from http://www.cpcwiki.eu/index.php/SP0256_Allophones
SP0256-AL2 Allophone List
Num Name Example Funny Actual Num Name Example Funny Actual 00h PA1 PAUSE 10ms 6.4ms 20h /AW/ Out 370ms 254.8ms 01h PA2 PAUSE 30ms 25.6ms 21h /DD2/ Do 160ms 72.1ms 02h PA3 PAUSE 50ms 44.8ms 22h /GG3/ Wig 140ms 110.5ms 03h PA4 PAUSE 100ms 96.0ms 23h /VV/ Vest 190ms 127.4ms 04h PA5 PAUSE 200ms 198.4ms 24h /GG1/ Got 80ms 72.1ms 05h /OY/ Boy 420ms 291.2ms 25h /SH/ Ship 160ms 198.4ms 06h /AY/ Sky 260ms 172.9ms 26h /ZH/ Azure 190ms 134.1ms 07h /EH/ End 70ms 54.6ms 27h /RR2/ Brain 120ms 81.9ms 08h /KK3/ Comb 120ms 76.8ms 28h /FF/ Food 150ms 108.8ms 09h /PP/ Pow 210ms 147.2ms 29h /KK2/ Sky 190ms 134.4ms 0Ah /JH/ Dodge 140ms 98.4ms 2Ah /KK1/ Can't 160ms 115.2ms 0Bh /NN1/ Thin 140ms 172.9ms 2Bh /ZZ/ Zoo 210ms 148.6ms 0Ch /IH/ Sit 70ms 45.5ms 2Ch /NG/ Anchor 220ms 200.2ms 0Dh /TT2/ To 140ms 96.0ms 2Dh /LL/ Lake 110ms 81.9ms 0Eh /RR1/ Rural 170ms 127.4ms 2Eh /WW/ Wool 180ms 145.6ms 0Fh /AX/ Succeed 70ms 54.6ms 2Fh /XR/ Repair 360ms 245.7ms 10h /MM/ Milk 180ms 182.0ms 30h /WH/ Whig 200ms 145.2ms 11h /TT1/ Part 100ms 76.8ms 31h /YY1/ Yes 130ms 91.0ms 12h /DH1/ They 290ms 136.5ms 32h /CH/ Church 190ms 147.2ms 13h /IY/ See 250ms 172.9ms 33h /ER1/ Letter 160ms 109.2ms 14h /EY/ Beige 280ms 200.2ms 34h /ER2/ Fir 300ms 209.3ms 15h /DD1/ Could 70ms 45.5ms 35h /OW/ Beau 240ms 172.9ms 16h /UW1/ To 100ms 63.7ms 36h /DH2/ Bath 240ms 182.0ms 17h /AO/ Aught 100ms 72.8ms 37h /SS/ Vest 90ms 64.0ms 18h /AA/ Hot 100ms 63.7ms 38h /NN2/ No 190ms 136.5ms 19h /YY2/ Yes 180ms 127.4ms 39h /HH2/ Hoe 180ms 126.0ms 1Ah /AE/ Hat 120ms 81.9ms 3Ah /OR/ Store 330ms 236.6ms 1Bh /HH1/ He 130ms 89.6ms 3Bh /AR/ Alarm 290ms 200.2ms 1Ch /BB1/ Business 80ms 36.4ms 3Ch /YR/ Clear 350ms 245.7ms 1Dh /TH/ Thin 180ms 128.0ms 3Dh /GG2/ Guest 40ms 69.4ms 1Eh /UH/ Book 100ms 72.8ms 3Eh /EL/ Saddle 190ms 136.5ms 1Fh /UW2/ Food 260ms 172.9ms 3Fh /BB2/ Business 50ms 50.2ms
- Mind that completion of an allophone doesn't mute the voice generator (it'll keep repeating the end of the allophone until receiving a new allophone). To mute the voice generator, output a short pause (eg. PA1) after your last allophone.
- The "Funny" timings are from the SP0256-AL2 data sheet (these values are totally wrong).
- The "Actual" timings are calculated from the pitch/repeat values in the AL2 ROM (these values should be 100% correct).