Issue
156 July 2003
Stealth
Telephone Screener
Mad
Dash for Flash Cash Grand Prize Winner
by
Richard Wotiz
Tired
of receiving bothersome automated phone calls from
telemarketing companies armed with predictive dialing
systems, Richard decided to fight technology with
technology. The result? A PIC-based call screener
that’s been consistently successful at blocking
unwanted automated calls.
Start
Talking Back Frame
Update Analog
Processing In My Dreams
Sources and PDF
Almost
everyone has been bothered, at some point in time, by
annoying phone calls from telemarketers. After the marketers
had convinced themselves that their time is more valuable
than yours, they began using predictive dialing systems,
which were implemented to place numerous calls at one
time and connect only the first person to answer. The
other calls were dropped, leaving many people to find
only dead air on the line and wonder why so many people
had been hanging up on them. I’ve received my share
of these calls, so I recently decided to do something
about them.
There
are many screening products on the market today. Most
of them require either the caller to know a special
code to dial before connection or the callee to manually
screen the call and press a button to ignore it. Other
systems play a sequence of three special information
tones, which are used to indicate a disconnected number,
in an attempt to fool a dialing machine into hanging
up. I wanted something that would neither require manual
input nor offend people who don’t appreciate being screened—especially
those who would rather not leave a message on an answering
machine if they don’t know a special code.
The
Stealth Screener was born out of these requirements
(see Photo 1). It answers the phone with a natural-sounding
“Hello,” and then waits for a response. A predictive
dialer will remain silent, causing the screener to hang
up after a short delay. If the caller plays an automated
recorded message, the screener will hang up if there
is continuous, unbroken speech for a long period of
time. Otherwise, if it hears an appropriate response,
it will play a second greeting message (e.g., “Just
a minute”), and then initiate ringing tones while ringing
through its internal speaker. Any other phones should
have their ringers turned off, so only the screener’s
ring is heard.
|

(Click
here to enlarge)
|
Photo
1—The prototype was wire-wrapped and installed in
a 5 × 7 plastic box. The high-voltage
components are along the right side next to the
battery compartment. |
A
block diagram of the system is shown in Figure 1. The
hardware is based on a Microchip PIC16F872, which contains
a 10-bit A/D converter and PWM D/A converter. There
are a 128-Kb I2C EEPROM and a pair of MCP6022 dual op-amps.
A 9-V battery powers the entire system.
|

(Click
here to enlarge)
|
Figure
1—The architecture is straightforward. The phone
line isn’t isolated, so be sure to unplug it before
connecting the ICSP cable. |
HEARING
VOICES
The
Stealth Screener’s most important characteristic is
the voice detection algorithm shown in Figure 2. I used
a commonly known method of tracking the audio’s speech
and noise levels and computing a threshold based on
the values.
|

(Click
here to enlarge)
|
Figure
2—The VOX algorithm distinguishes between speech
and background noise levels, and adjusts its thresholds
accordingly. |
The
levels are derived from the root mean square (RMS) energy
of the input signal. As each sample is acquired, its
square is computed and summed. Then, at the end of each
block of 200 samples, the square root of the sum is
computed. I used a reverse look-up table for the square
root because computing it algorithmically would have
been too slow.
The
RMS energy is then run through a pair of averaging filters.
The speech filter has a fast attack time and a slow
decay to track the peaks of the audio envelope. To track
the valleys, the noise filter has a slow attack and
fast decay.
The
VOX turn-on threshold is set to the larger of one-sixteenth
of the speech level and two times the noise level, which
is subject to minimum and maximum limits. After it’s
turned on, the turn-off threshold is one-eighth of the
overall highest speech level. There are various ways
to fine-tune the thresholds beyond the current algorithm,
but they aren’t necessary.