RISC World



!Speech is a program designed to allow your computer to speak to you. !Speech can either read out text files that are dragged to the !Speech icon on the icon bar or can be used in your own programs to add speech. For example to read out the results of a calculation, or even to read out RISCWorld. !Speech is copyright Superior Microcomputing Ltd, 1991 and 1994 ,all rights reserved. This copy is supplied exclusively for the use of RISCWorld subscribers.

This is the last full version of !Speech and includes a number of improvements over earlier versions:

  • A new word editor which allows you to add or delete words.
  • The exception dictionary now includes over 4000 "words" giving much improved speech.

  • Supports interactive help via the !Help application. .

  • Accented characters are now accepted. (In the Dictionary file, accented characters are included in the "other" section.) .

  • Four new phonemes have been added for use with foreign languages. These are "NQ, OO, UI and UR". See the !Help file in the !Speech! application for further details on these phonemes.

!Using Speech with PenDown

In order to over-ride the speech module in either "Talking Pendown" or "Full Phases", first load in that program, then double-click on a Speech! module on your working disc, either the Speech! module provided in the !Speech! application directory (double-click on the !Speech! application with the Shift key held down in order to open that directory), or your own modified Speech! module.

Word Editing

Speech! Version 2 contains a new user-friendly word editor, which allows you to add (or delete) "separate words". By "separate word" is meant a word which is preceded and followed by a space. (Such words appear in the dictionary as "word< > ".) .

The phoneme definition for a "separate word" only applies to that word and no derivatives (e.g. the plural) with the exception of 's. Punctuation (including ') is taken by the program as being equivalent to a space.

To illustrate the above, take as an example a word such as "cat". Using the new editor one can include a definition for cat as a "separate word". The definition will then always apply if the word "cat" appears, provided there is a space or punctuation before and after. It would not apply to words such as "cats" or "tomcat", which would have to be entered separately using the editor. .

To edit a dictionary file, drop it on the Icon Bar or into any Speech! window. Enter the word into the Word input box, using lower case letters.

When RETURN is pressed, the Editor searches the dictionary file in memory. If a match is found as a "separate word", then the phoneme definition will appear in the Previous box, and also in the Phonemes box ready for editing.

The caret will be placed at the end of the phoneme string. If the word could not be found as a "separate word", then the phoneme definition will be presented in the Phonemes box. In both cases the word will be spoken.

Pressing RETURN from the Phonemes box will also speak the phonemes.

Alternatively, click on the little "speaker" icons to hear either the current phonemes for the word, or, if present, the Previous phonemes. This is useful for comparison purposes when editing the phonemes in the Phonemes box. Phonemes must be entered in upper case letters. The up/down cursor keys can be used to move between the Word and Phoneme boxes.

The grid in the lower part of the Editor window lists all 52 phonemes. Use SELECT to enter the phoneme into the Phonemes string or ADJUST to hear the phoneme.

(You can drop text files on to the icon bar as normal and also on to the Editor window. This will take you back to control mode and open the Control window. If the dictionary file in memory has been modified, then an error box will give you the opportunity to cancel the text load and hence save the modified module/dictionary.).

The option buttons have the following functions:

Add - used to add a word/phoneme combination to the dictionary file in memory. If the word already existed as a "separate word", then this will display Change instead of Add, because you would be changing the phonemes used for this word.

Delete - used to delete a "separate word" from the dictionary file in memory.

Quit - used to exit the dictionary editor. If the dictionary file in memory has been modified, you will be warned via an error dialogue box. Save - pops up the Save dialogue box, which operates as normal. The Save box can also be accessed via the menu system as with most other applications. .

The dictionary file is automatically updated when you save the new Speech! module, so some care has to be taken in determining where files are kept in order to avoid disc errors (e.g. removing the disc the dictionary file was loaded from). The Speech! module in the !Speech! application is not updated. Remember, you can use !Help to assist you.

Changing the Dictionary

If you wish simply to add words to the dictionary as "separate words" then use the editing feature described in the Edit_Help file in the root directory. The procedure described here is used to make more fundamental changes and should be used with care. To produce a new Speech! module from a modified dictionary, simply drop the dictionary file on to the icon bar or any Speech! window, and then use the Editor Save option. However, please note that the Speech! module in the !Speech! application is not automatically updated by this procedure. If you wish the default Speech! module in the !Speech! application to be changed to the new modified Speech! module, then simply copy the new Speech! module to that directory by the usual procedure. This should only be done on your working disc and not on the original program disc.

All the words are put in alphabetical order. The group called "other" is used by anything that doesn't start with "a" to "z" i.e. "0-9, =, +" etc., and also accented characters.

All entries are in the following format:

"(user input)_(Speech! phoneme output)|"

The input always has to be in lower case. The "_" divides the input and the output of the translation, and the "|" divides each entry.

To translate the word "ARE" you might use the entry:

"are_AA4AX|" in the ".aa" group.

Whenever "Speech!" finds the text "are/ARE" in you *SAY command then it will be translated into "AA4AX" and sent to the *SPEAK command.

To build up a more complicated rule set, you can include checking for before and after characters.

To check for a space either side of the "ARE" use the entry:

"are< > _AA4AX|" in the ".aa" group.

The "<" means before and ">" means after. The "<" must always be before the ">" if both are to be included.

The characters for "<" must be read from right to left, for example, to make the "S" in the the word "RIVERS" sound like a "Z" use the entry:

"s _Z|" in the ".ss" group.

This will first find the "S", then back-track finding the "R" then the "E".

If the parser then finds a space to the right of the "S" then a match has been found. If no longer fitting entry can be matched, then this one is used.

You can use wildcard characters, but only in the "<" & ">" checking stage.

".>*_POY7NT|" in the ".other" group will check for any number to the right of the "." If there is one, then say "POINT"

"a>#e_AY|" will check for a consonant after the "A" followed by an "E".

If correct then speech will say the "A" as in "TAME"

"i>#ing_IY4|" will check for a consonant after the "I" followed by "ING".

This is for words like "WRITING".

"the> @_DHEE|" will check for a word starting with a vowel after the word "THE"

The "\" means check for the same character again, for example:

"ed<#\_D|" will check for two consonants that are the same before the "ED". For instance, this entry will be true for "slaMMED" .

If a word (either a letter or a group of letters) is satisfied by more than one input definition, then the longer input definition (ignoring the < and > symbols, but including spaces) will take precedence. If two or more input definitions which satisfy the word are the same length, then the first that appears will take precedence.

Try to put wildcarded entries near the end of each group so that all the exceptions will be found first.

For convenience when using the word editing facility, all the "separate words" in a group are placed at the start of that group.