Lisner and AppleTalker
Tic-Tac-Talker and Spectrum Analysis
I did not scan the items, but I did put the programs
onto bootable Dos3.3 DSK images with Integer BASIC.
Bob Bishop did some amazing things with the Apple II. Here are
four of them. Voice recording/playback through the cassette ports,
and SPEECH RECOGNITION through the cassette ports!
Converted to text by: Michael J. Mahon
Conversational Tic-Tac-Toe for your Apple // (24K)
Software Speech Recognition and Voice Response
TIC-TAC-TALKER /SPECTRUM ANALYSIS
TIC-TAC-TALKER IS A CONVERSATIONAL SOFTWARE PACKAGE WHICH PITS
YOU AGAINST THE COMPUTER IN A "VERBAL" GAME OF TIC-TAC-TOE. AUDIO
INFORMATION IS ENTERED INTO THE APPLE II* THROUGH THE CASSETTE
INPUT PORT USING YOUR CASSETTE TAPE RECORDER OR OTHER SUITABLE
AMPLIFIER. YOUR CASSETTE RECORDER SHOULD BE PLACED IN THE RECORD
MODE WITHOUT A CASSETTE TAPE IN PLACE. THE USE OF AN EXTERNAL
MICROPHONE IS RECOMMENDED.
YOU BEGIN BY TRAINING THE PROGRAM TO UNDERSTAND YOUR VOICE. JUST
FOLLOW THE COMPUTER'S "VERBAL" PROMPTS AND REPEAT THE WORDS
CLEARLY AND CONSISTENTLY. SOON THE COMPUTER WILL DRAW THE FULL
COLOR GAME BOARD AND YOU ARE READY TO PLAY. BUT DO NOT TOUCH THE
KEYBOARD!! JUST "TELL" THE COMPUTER WHICH NUMBERED SQUARE YOU
WISH TO OCCUPY. IT WILL LISTEN TO YOU, CONFIRM YOUR MOVE IN ITS
OWN VOICE, AND THEN MAKE A MOVE OF ITS OWN. DON'T BE DISTRACTED
BY THE COMPUTER'S VOICE OR IT JUST MIGHT BEAT YOU!
THE SPECTRUM ANALYSIS PROGRAM GRAPHICALLY REPRESENTS THE PRINCIPLES
INVOLVED IN SPEECH RECOGNITION. AFTER THE COMPUTER PROMPTS YOU
TO SPEAK, IT WILL ACCEPT AUDIO INFORMATION THROUGH THE CASSETTE
PORT. IT THEN DISPLAYS ITS FREQUENCY AND DURATION IN COLOR ON
THE LOW-RES SCREEN.
*APPLE II IS A REGISTERED TRADEMARK OF APPLE COMPUTER, INC.
All of SOFTAPE'S Conversational SoftwareTM uses the cassette input port
of your Apple II Computer to enable it to recognize your voice and respond
to it with a voice of its own!! Some amplification of the input signal is
required. This is generally accomplished by using the amplifier contained
in your cassette tape recorder. The recorder is connected to the Apple in
the normal manner. Make sure the cable connects between the cassette input
jack of the Apple and either the earphone or output jack on your recorder.
In order to enter the amplifying mode on your recorder you must
press both the "PLAY" button and the "RECORD" button down at the same
time. (NOTE: Some machines may require only pressing a single "RECORD"
button down). This can only be done if there is no cassette in the recorder
and if the "WRITE PROTECT FEELER" is pressed in at the same time. This
"FEELER" is located directly opposite and to the left of the recording
heads as you look down on the machine. Set your volume control at a fairly
low level and the tone at about mid-range.
You are now ready to run the program. In order for the program to
understand you, it must be "trained" to your voice. This is done by
saying each word to be recognized into the external microphone during the
"training period". The program may be set up to train on each word or
phrase one time or many times. Redundancy gives you a greater probability
of recognition. The Apple-lis'ner routines allow for up to 31 words.
When you train the program as prompted, it is desirable to be in as quiet
an environment as possible. Any extraneous noise will confuse the program
and cause false input. This makes consistent recognition impossible. For
this reason, the use of built-in condenser microphones found on most
cassette players is not recommended. Optimum results can be obtained by
using an external, noise-canceling microphone (SOFTAPE #NCM-179). Using
this type of microphone you can be sure that only those sounds you desire
will reach the computer.
If you find that the program is prompting you for input for the next word
too soon, it is possible that the spinning cassette motor is causing
excessive noise. You will notice this during the training portion of
the program. Some tape recorders have a pause control which will stop
the motor from turning. Turning your volume control down all the way may
also help. The auto-leveling feature on some recorders may also prove to
be a problem. It will amplify background noise when you are not speaking
into the microphone. If these problems exist it may be necessary for you
to use a compatible preamplifier instead of a tape recorder to amplify
your input. When you are not talking to the computer, it should just sit
there and be quiet!
When you train and run the program, try to use a normal speaking voice
and consistent vocal inflections. Each word or phrase should be entered
with the same duration for best recognition. The program responds to
the beginning and ending sounds of a phrase when placing it into a
table. Therefore, you must "blend together" multi-syllable words so
they are placed together in the same table. When the program asks for
words to be trained more than once it is possible to have more than one
person train the program and achieve recognition. If the words used in
the program are unique in sound, recognition may be possible even if
the person speaking them did not train originally. Avoid training with
words which sound similar but are different in meaning. Remember, also,
the Apple is multi-lingual and will understand foreign languages!!
When the program Prompts you for voice input, use only those words you
trained it with. These are the only words it understands. Using other
words may produce inaccurate, but humorous, results!! Also, wait until
the computer has stopped talking before you speak and don't get excited if
it doesn't understand you the first time. It will have even more trouble
understanding your excited voice which it has never heard before! If you
get consistently wrong responses try training the program again.
The machine language subroutines found in all Conversational Software are
copyrighted by the author and SOFTAPE. Any use of these routines for any
commercial use is strictly prohibited. It is intended strictly for the
private use and entertainment of the purchaser. However, if you wish to
have a Conversational Software product of your own creation distributed,
please contact us.
Converted to text by: Kevin Greene
SIDE 1 TM SIDE 2 APPLE-LIS'NER APPLE-LIS'NER PREFIX
10756 Vanowen, North Hollywood, Ca. 91605
by Bob Bishop
Software speech recognition for your Apple II Make your own "us 'ner"
"Your Apple's Ears"
"CASSETTE = TM ALB-978 =
TM APPLE.LIS'NER DESCRIPTION
APPLE-LIS'NER IS A SOFTWARE PACKAGE THAT ALLOWS YOU TO PERFORM VOICE
RECOGNITION EXPERIMENTS WITH YOUR APPLE II* COMPUTER. IT HAS THE ABILITY
TO RECOGNIZE UP TO 31 DIFFERENT "WORDS". EACH "WORD" CAN BE A SOUND OR
A SERIES OF CONTINUOUS SOUNDS OF UP TO ABOUT 5 SECONDS DURATION. THE
AUDIO INFORMATION IS ENTERED INTO YOUR COMPUTER THROUGH THE CASSETTE
INPUT PORT. YOUR STANDARD CASSETTE RECORDER IS USED AS AN AMPLIFIER WHEN
PLACED IN THE RECORD MODE. THE INFORMATION IS DIGITIZED AND STORED IN
NUMBERED TABLES IN YOUR COMPUTER'S MEMORY (RAM). IT IS LATER USED DURING
THE "RECOGNITION MODE" WHEN NEW AUDIO INFORMATION IS COMPARED WITH THAT
STORED IN MEMORY DURING THE "LEARNING MODE".
THE SOFTWARE ROUTINES RESIDE ON MEMORY PAGE NINE (HEX LOCATIONS $0900 TO
$09FF), AND THE RECOGNITION TABLES ARE LOCATED FROM $0A00 TO $0AFF. THUS,
APPLE-LIS'NER USES VERY LITTLE MEMORY TO MAKE YOUR COMPUTER "LISTEN"! AS
AN ADDED CONVENIENCE, WE HAVE INCLUDED AN APPLE-LIS'NER PREFIX. THIS PREFIX
MAY BE APPENDED TO YOUR INTEGER BASIC PROGRAMS. (NOTE: APPLE-LIS'NER CANNOT
BE USED WITH APPLESOFT* BASIC DUE TO MEMORY ALLOCATION CONFLICTS). THIS
PREFIX AUTOMATICALLY SETS LOMEM AND MOVES THE MACHINE LANGUAGE SUBROUTINES
INTO THEIR PROPER LOCATIONS FOR EXECUTION. USING THIS PACKAGE AND A
FEW LINES OF-BASIC, YOU CAN GIVE ANY APPLE PROGRAM THE POWER OF VOICE
RECOGNITION WITHOUT HARDWARE COSTS.
*APPLE II AND APPLESOFT ARE REGISTERED TRADEMARKS OF APPLE COMPUTER, INC.
TM USING APPLE-LIS'NER SUBROUTINES
1. ROUTINES MUST BE RESIDENT IN MEMORY AT HEX LOCATIONS $0900 TO $09FF.
2. LOMEM MUST BE SET AT 2816 DECIMAL ($B00 HEX).
3. CONDITIONS 1 AND 2 ABOVE ARE MET WHEN USING THE PREFIX PROGRAM. IT
ALLOWS YOU TO MAKE THE ENTIRE PROGRAM LOAD IN BASIC.
4. THE FIRST LINE OF THE PROGRAM SHOULD READ: 0 LEARN = 2304 : RECOG = 2307 :
BUILD = 2425 : SAVE = 2313
WHEN YOU TEACH THE APPLE-LIS'NER A WORD, IT IS IDENTIFIED BY AN INTEGER
NUMBER FROM 1 TO 31. POKE DECIMAL 16 WITH THE I.D. NUMBER FOR THE WORD
AND THEN CALL LEARN (CALL 2304) IN YOUR PROGRAM. THE COMPUTER WILL WAIT
FOR YOU TO SPEAK. AFTER IT DETECTS THE END OF THE "WORD" (INDICATED BY
THE ABSENCE OF SOUND), IT WLL STORE A REPRESENTATION OF THE "WORD" IN
THE I.D.th PORTION OF THE RECOGNITION TABLES AND THEN RETURN TO YOUR
example: 10 POKE 16, n : CALL LEARN
AFTER ALL "n" WORDS (1 <= n <= 31) HAVE BEEN TAUGHT, THE COMPUTER CAN NOW BE
PUT INTO THE RECOGNITION MODE. SIMPLY POKE DECIMAL 16 IN MEMORY WITH THE
TOTAL NUMBER OF WORDS, 'n", AND THEN CALL RECOG (CALL 2307). THE
COMPUTER WILL AGAIN WAIT FOR YOU TO SPEAK. THIS TIME IT WILL COMPARE THE
INPUT "WORD" WITH THE "WORDS" IN THE RECOGNITION TABLES TO FIND WHAT IT
THINKS IS THE CLOSEST MATCH. THE I.D. NUMBER OF THIS MATCHED "WORD" WILL
BE STORED IN DECIMAL LOCATION 16 OF MEMORY ($10 HEX) AND A 16 BIT
MEASURE OF THE ERROR WILL APPEAR IN LOCATION 17 ($11 HEX) AND 18 ($12
HEX).** THIS PERMITS USER SELECTABLE TOLERANCE RANGE FOR RECOGNITION.
(NOTE: THE RECOGNITION PROCESS INVOLVES SEARCHING THE RECOGNITION TABLES
FROM 1.D. = 1 TO I.D. = n. THUS YOU MUST NOT LEAVE ANY "HOLES" IN THE
TABLES WHEN INITIALLY TEACHING THE WORDS TO THE COMPUTER; ie., ALL I.D's
BETWEEN 1 AND n MUST BE SPECIFIED AT LEARN TIME).
example: 20 POKE 16, n : CALL LEARN
30 I.D. = PEEK (16) : ERR = PEEK (17)
40 IF PEEK (18) > 0 THEN 20
BUILD MODE (OPTIONAL)
THIS WILL ACCEPT VOICE RESPONSE AND BUILD A RECOGNITION TABLE BUT NOT
PERMANENTLY STORE IT.
example: 50 CALL BUILD
SAVE MODE (OPTIONAL)
THIS WILL TAKE THE TEMPORARY DATA LIST BUILT AND STORE IT IN LOCATION n
(n = 1 TO 31)
example: 60 POKE 16,n : CALL SAVE
USING THE APPLE-LIS'NER PREFIX
THIS PROGRAM LOADS FROM INTEGER BASIC AND CAN BE APPENDED TO YOUR BASIC
PROGRAM TO MAKE IT LISTEN. THE FIRST LINE OF THE USER PROGRAM SHOULD
ALWAYS BE 0 OR A ** BAD BRANCH ERR ** WILL OCCUR WHEN YOU TYPE RUN. IF
YOU HAVE AN APPEND PROGRAM THEN:
1. RUN RENUM/APPEND PROGRAM
2. SELECT APPEND FUNCTION
3. LOAD IN USER PROGRAM
4. APPEND APPLE-LIS'NER PREFIX (LOAD)
5. SAVE FINISHED PROGRAM TO TAPE OR DISKETTE
IF YOU DO NOT HAVE A RENUMBER/APPEND PROGRAM, THEN BY HAND:
1. LOAD USER PROGRAM
2. CALL -35 (IGNORE HEX DUMP AND BELL)
3. TYPE FROM MONITOR *CA.CB (RETURN). THE APPLE WILL PRINT:
00CA- XX YY (THESE ARE VARIABLES FOR STEP 5)
4. TYPE FROM MONITOR *4C.4D (RETURN).THE APPLE WILL PRINT:
004C- AA BB (THESE ARE VARIABLES FOR STEP 9)
5. TYPE FROM MONITOR *4C: XX YY (RETURN). THIS SETS HIMEM.
6. TYPE A CONTROL C AND RETURN TO GO TO BASIC
7. LOAD APPLE-LIS'NER PREFIX PROGRAM (LOAD)
8. CALL -35 (IGNORE HEX DUMP AND BELL)
9. TYPE FROM MONITOR *4C: AA BB (RETURN).THIS RESETS HIMEM.
10. TYPE A CONTROL C AND RETURN TODD TO BASIC
11. SAVE FINISHED PROGRAM TO TAPE OR DISKETTE
** STRICTLY SPEAKING. THE ERROR IS ACTUALLY: ERROR PEEK (17) + PEEK (18)
* 256 BUT LOCATION 18 SHOULD ALMOST ALWAYS HAVE A ZERO IN IT.