Watford Electronics Speech Synthesiser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ACCESS TO THE SOFTWARE ====================== Commands: *TALK [word/allophone],[word/allophone],[word], . . . *FX 25, [word number] , [library number] SOUND 8192, [word number] , [library number] OSWORD 25 OSBYTE 25 *TALK COMMAND ------------- Each allophone or library word has a spelling convention and associated number as shown in appendixes 1 and 2. If a word is in the library then the simplest way to speak it is with the command: *TALK [word],[word],. . . eg. *TALK I AM A COMPUTER This can be issued in any language which passes '*' commands to the operating system line interpreter. It can also be used to construct words from allophones and to mix your own words with library words. For instance to speak ' THE NAME IS DAVID ' use : *TALK THE NAME IS DD2 EY PA1 VV IH DD1 Inflexion can be used by typing a '+' or '-' after an allophone eg. DD2-, EY+ would speak a low DD2 and a high EY. If the word or allophone is unrecognized then control is passed through a vector at &230. The two bytes at addresses &B4 (low) and &B5 (high) make up the address of a table in RAM. The table is in the format shown below in the section on OSWORD. The user can therefore write a routine to deal with extra words and place its start address at &230. If you wish to fabricate a *TALK command with a parameter string then you may of course use OSCLI to send the command. It is more elegant to use OSWORD 25, but easier to use: OSCLI("*TALK "+A$) - This will only work for issue 2 Basic, for issue 1 you must fabricate an OSCLI equivalent so it is probably easier to call OSWORD 25. *FX25 and OSBYTE ---------------- The format is *FX25,X,Y. If Y=0 then X is an allophone number (see appendix 1). This allophone number may have 128 added to lower the pitch or 64 added to increase the pitch. X can also contain a continuation pause code in the range &C0 to &CA, or a synchronization code (&FE). (see appendix 1 ) If Y=1 or 2 or 3 then X is the number of a word in the Yth dictionary. If Y>3 then the instruction is ignored by the Watford speech software but will be passed round all the sideways ROMS in case any of them wish to respond. This means you could add your own ROM dictionaries by looking for an unwanted *FX25, trapping it, interpreting it and passing the correct allophone data back to the Watford software via FX25,X,0. SOUND 8192,X,Y,0 - OSWORD 7 --------------------------- This command can be used from BASIC. However from BASIC it is the most adaptable of the possible commands. *TALK and *FX cannot easily be used with BASIC variables but this command can. X and Y obey the same rules as shown under the *FX section above. OSWORD 25 --------- This enables machine code users to pass library words in ASCII to the speech software. X (low) and Y (high) point to a table in the format shown. XY+0 LSB -- Address XY+l ! of XY+2 ! data XY+3 MSB -- XY+4 Flag XY+5 LSB -! Length of XY+6 MSB -! data If FLAG=0 then the address in the table indicates the start of a second table containing values for X and Y registers to be used in a series of *FX25 commands. The value in the length of data positions indicates the number of *FX25 commands to be carried out and hence that number of values for each of X and Y should be placed in your table. In your table the order is Xl,Yl,X2,Y2,X3,Y3,. . . .,Xn,Yn. This will then have the effect of issuing *FX Xl,Yl *FX X2,Y2 *FX X3,Y2 . . . . *FX Xn,Yn after a single JSR OSWORD. If FLAG=80 then the address points to the ASCII of a word or allophone ( or series of them ) which is ended by a CR or 00. The sentence will then be spoken as with the *TALK command. If FLAG=C0 then the address points to the ASCII of a word or allophone ( or series of them ) which is of length contained in XY+5 and XY+6. For calls &80, &C0 the bit of value 8 selects ignore unrecognised word mode. If, say, &80 is used, unrecognised words will be spelled out letter by letter, if &88 were used instead nothing would be spoken for an unknown word. If a word is unrecognized then control is passed through a vector at &230. MEMORY LOCATIONS USED --------------------- A8-AF *TALK B0-B2 OSBYTE B3-B9 OSWORD BA-BF For use during unrecognised words 100 OSBYTE In detail for OSWORD B3-B4 Line pointer B5 Type B6-B7 Line length B8-B9 Word length BA-BB Library pointer BC Temporary line letter BD Temporary word letter