Calling number identification using speech recognition

In a system such as an AUDIX.RTM. voice mail system or answering machine, a caller's telephone number is extracted from a recorded message using voice recognition. The called party initiates automatic dialing of the calling party's number after confirming that the number was correctly recognized by the system.

TECHNICAL FIELD 
This invention relates to a message-taking apparatus, and more 
particularly, to a message-taking apparatus that automatically obtains a 
phone number from a verbal message. 
DESCRIPTION OF THE PRIOR ART 
In the past, a calling party left a verbal message to a called party on an 
answering machine or AUDIX.RTM. voice mail system. That verbal message 
typically included a telephone number at which the called party could 
reach the calling party. Typically, the called party listened to the 
message and then wrote the phone number on a piece of paper so that the 
number would be available when the called party placed a telephone call to 
the calling party. This technique is inconvenient because it requires the 
called party to have a pen and paper available when listening to the 
message. It is also possible for the called party to attempt to memorize 
the phone number while listening to the verbal message. This technique is 
inconvenient because the called party could incorrectly memorize the 
number, and as a result, dial an incorrect number while attempting to 
reach the calling party. Incorrectly memorizing the number creates the 
additional inconvenience of requiring the called party to listen to the 
verbal message a second time in order to make a second attempt to memorize 
the number. 
SUMMARY OF THE INVENTION 
The present invention solves the aforementioned problems by obtaining a 
phone number from a verbal message left by a calling party. The phone 
number is communicated to the called party so that the called party can 
verify the phone number with the phone number recited in the verbal 
message. If the called party is satisfied that the phone number was 
correctly obtained from the verbal message, the called party may issue a 
command that results in the phone number being dialed automatically. 
By automatically extracting a phone number from a verbal message, the 
present invention eliminates the need for the called party to write down 
or attempt to memorize a phone number contained in the verbal message. 
This avoids the inconvenience of requiring the called party to have a pen 
and paper handy, and it also avoids the inconveniences that result from 
incorrectly memorizing the calling party's number.

DETAILED DESCRIPTION 
FIG. 1 is a block diagram of the present invention. Telephone network 
interface 10 is used to interface the present invention to a telephone 
network. This network interface can be in the form of many well-known 
circuits such as a hybrid or other circuits that are used to interface to 
a PBX or central office. Recorder 12 is used to record the verbal messages 
left by a calling party and it may be used to play greetings and/or 
prompts to the calling party. Recorder 12 can be analog or digital in 
nature, and can be constructed using a tape recorder, disk memory or solid 
state memory. 
Analog to digital (A/D) converter 14, word recognizer 16 and memory 18 are 
used to extract or obtain a phone number from a verbal message left by the 
calling party. A/D converter 14 converts the analog signal received from 
telephone network interface 10 into a digital signal. It is also possible 
for A/D converter 14 to receive its input from the output of recorder 12. 
Recognizer 16 receives its input from A/D converter 14. Recognizer 16 can 
be any type of word recognizer that can recognize a spoken phone number. 
Recognizer 16 should be speaker independent and it is preferable to 
simplify the recognizer's design by using a recognizer that is only 
capable of recognizing numbers and a limited number of verbal commands. It 
is also possible to use more complex recognizers. A recognizer that 
compares characteristics of an utterance to a stored template, or a 
recognizer such as a neural network implemented in either hardware or 
software may be used to implement recognizer 16. Word recognizers are 
known in the art and a Conversant.RTM. speech processor available from 
AT&T may be used to implement recognizer 16. Memory 18 receives the 
recognized phone number from recognizer 16. The phone number is stored in 
memory 18 until it is needed by the called party. When the called party 
replays the recorded message, the phone number stored in memory 18 is 
displayed on display 20, and may be recited in an audio message using 
speech synthesizer 22. Speech synthesizer 22 may also recite greetings 
and/or prompts to the calling party. Speech synthesizers are known in the 
art and a Conversant.RTM. speech processor available from AT&T may be used 
to implement speech synthesizer 22. It is preferable to display or 
otherwise convey the phone number from memory 18 to the called party 
before replaying the message to the called party. This offers the 
advantage of allowing the called party to see and/or hear the phone number 
before listening to the recorded message. After listening to the recorded 
message and verifying that the phone number from memory 18 is correct, the 
called party can automatically dial the phone number from memory 18 by 
enabling dialer 24. Automatic dialers are known in the art and can be in 
the form of pulse dialers or DTMF (dual tone multiple frequency)dialers. 
Overall control for the invention is carried out by controller 26 which 
comprises microprocessor 28, RAM 30 and ROM 32. Microprocessor 28 can be 
any of the commercially available microprocessors, microcomputers or even 
specialized hardware. RAM 30, which is used as a scratch pad memory, may 
be implemented using any of the widely available random access memories. 
ROM or read only memory 32 can be constructed using any of the 
commercially available ROMS, PROMS or EEROMS to store the overall 
programming for controller 26. Control pad 34 is used by the called party 
to command controller 26. These commands include play, replay, record 
greeting, record prompt, dial and erase message. It is also possible for 
controller 26 to receive commands through telephone network interface 10 
in a form such as DTMF signals that are entered using a telephone keypad. 
This feature enables the called party to access his/her messages and to 
issue commands to controller 26 from a remote location. It is also 
possible for controller 26 to receive verbal commands recognized by 
recognizer 16. 
Controller 26 uses data/control bus 36 to communicate with the different 
components of the present invention. For example, controller 26 uses bus 
36 to transfer a phone number from memory 18 to dialer 24, display 20 and 
speech synthesizer 22. Controller 26 also uses bus 36 to control recorder 
12 and the other components connected to the bus. 
FIG. 2 illustrates a table that microprocessor 28 places in RAM 30 to keep 
track of messages and phone numbers. The called party ID column is used to 
keep track of messages that are addressed to different called parties. 
This column is necessary when the invention is used or located in a public 
exchange such as a PBX or central office. When used or located at a 
customer's premises or in an environment where it is not necessary to 
distinguish between called parties, the called party ID column is 
unnecessary. The second column is used to keep track of individual 
messages when more than one message is left for the same called party. A 
third column is used to store the beginning and end addresses for a voice 
message stored in recorder 12. These addresses can be in a form that 
refers to locations in a RAM or disk memory, or they may refer to 
locations identified by a tape recorder's tape counter. A fourth column is 
used to keep track of the beginning and end addresses that are used to 
locate a phone number within memory 18. The number of memory locations 
used to store the phone number varies with the length of the phone number. 
For example, seven locations are used for a simple local phone number, 
while ten or more locations are used for phone numbers that involve area 
codes, country codes or telephone extensions. 
FIG. 3 illustrates a flow chart for a control loop executed by 
microprocessor 28. Step 60 involves a self-test which is followed by 
decision step 62. In decision step 62, if an incoming call is detected, an 
incoming call routine is executed, and if an incoming call is not 
detected, decision step 64 is executed. In decision step 64, if a command 
is received from control pad 34, the command is executed, and if a command 
is not detected, the loop restarts at self-test step 60. 
FIG. 4 illustrates an incoming call routine. After detecting an incoming 
call in step 62 of FIG. 3, decision step 70 of FIG. 4 is executed. If 
microprocessor 28 detects that the called party picked up the receiver, 
microprocessor 28 returns to the control loop of FIG. 3. When the called 
party does not pick up the receiver, decision step 72 is executed. If an 
incoming command from telephone network interface 10 is detected, that 
command is executed in step 74. After executing the command in step 74, 
decision step 76 is executed to determine whether additional commands have 
been received. If an additional command was received, it is executed in 
step 74, and if no additional commands were received, microprocessor 28 
returns to the control loop. With reference to decision step 72, if a 
command was not received, it is assumed that a calling party is attempting 
to leave a message and step 78 is executed. In step 78, a greeting is 
played to the calling party using recorder 12 or speech synthesizer 22. 
After playing the greeting, step 80 enables recorder 12 to record a 
message from the calling party. After step 80, decision step 82 is 
executed. In decision step 82, if a phone number is not recognized in the 
verbal message provided by the calling party, a "no number" message is 
loaded into memory 18 in step 84. If a number is recognized in the verbal 
message provided by the calling party, the phone number is loaded into 
memory 18 in step 86. After loading memory 18 with the appropriate 
information, step 88 is executed to update the table of FIG. 2. In step 
88, microprocessor 28 returns to the control loop of FIG. 3. 
FIG. 5 illustrates a flow chart for an alternative incoming call routine. 
After executing step 62 of FIG. 3, decision step 100 of FIG. 5 is 
executed. If microprocessor 28 detects that the called party picked up the 
receiver, microprocessor 28 returns to the control loop, and if it detects 
that the receiver is not picked up, decision step 102 is executed. If 
decision step 102 determines that a command was received from telephone 
network interface 10, the command is executed in step 104. After executing 
the command in step 104, decision step 106 determines if additional 
commands have been received. If an additional command was received, it is 
executed in step 104. If no additional command was received, 
microprocessor 28 returns to the control loop. If a command is not 
detected in step 102, a counter is initialized to zero in step 108. After 
executing step 108, step 110 plays a greeting to the calling party using 
recorder 12 or speech synthesizer 22. After playing the greeting, a first 
prompt is played to the calling party in step 112 using recorder 12 or 
speech synthesizer 22. The first prompt is used to prompt the calling 
party to state the phone number at which he or she can be reached. In 
decision step 114 it is determined whether a number was recognized from 
the verbal message provided by the calling party. If a number was not 
recognized, step 116 increments a counter. Decision step 118 determines 
whether the counter has exceeded a maximum count. This counter is used to 
limit how many times an attempt will be made to obtain a phone number from 
the verbal message. A convenient number such as three may be used as the 
maximum count. If the count is less than or equal to the maximum count, 
step 120 plays a repeat prompt using recorder 12 or speech synthesizer 22. 
This prompt requests that the calling party repeat the number at which the 
calling party can be reached. Once again, decision step 114 is executed to 
determine if the number was recognized. If it was not recognized, steps 
116 and 118 are executed again. If step 118 determines that the count has 
exceeded the maximum count, step 122 is executed by loading a "no number" 
message into memory 18. Turning back to decision step 114, if a number was 
successfully recognized in the message provided by the calling party, the 
number is loaded into memory 118 by executing step 124. After executing 
step 124, step 126 plays a second prompt, which asks the calling party to 
provide any additional information that he or she deems necessary, using 
recorder 12 or speech synthesizer 22. After playing the prompt, step 128 
enables recorder 12 and step 130 updates the table of FIG. 2. After 
executing step 130, microprocessor 28 returns to the control loop. 
FIG. 6 illustrates a flow chart of the steps that are executed when the ; 
play message command is received. The play message command is executed 
after decision step 64 of FIG. 3, within execute command step 74 of FIG. 4 
or within execute command step 104 of FIG. 5. The play message command 
begins by executing step 140 during which microprocessor 28 obtains the 
message ID and called party ID from the command. Message ID and called 
party ID can be in a form such as alphanumeric symbols that am entered 
using control pad 34 or a telephone keypad. Using the IDs obtained in step 
140, step 142 reads the message table of FIG. 2. The information in the 
message table provides microprocessor 28 with the start and end addresses 
of the verbal message and phone number stored in recorder 12 and memory 
18, respectively. 
After retrieving the information from the message table, the phone number 
or "no number" message stored in memory 18 is displayed and/or recited by 
executing step 144. After executing step 144, step 146 plays the verbal 
message. After executing step 146, decision step 148 determines whether a 
phone number or a "no number" message was stored in memory 18. If a "no 
number" message was stored, microprocessor 18 returns to the point at 
which it was instructed to execute the play message command. If a number 
was stored in memory 18, decision step 150 is executed. In decision step 
150 it is determined whether the called party has commanded the 
microprocessor to dial the number that was stored in memory 18. If no 
command is received, the microprocessor returns to the point at which it 
was asked to execute the play message command. If the called party 
commands the microprocessor to dial the number from memory 18, the 
microprocessor transfers the phone number to dialer 24 by executing 
command 152. Dialer 24 then automatically dials the number provided by 
microprocessor 28. After executing step 152, the microprocessor returns to 
the point at which it was asked to execute the message command. 
It is possible to provide a variety of additional commands to 
microprocessor 28 by providing the appropriate programming. These commands 
may be similar to commands that are executed by present day answering 
machines and can be programmed by one of ordinary skill in the art.