                              DECtalk PC
                      TEXT-TO-SPEECH Synthesizer
                      TECHNICAL REFERENCE  MANUAL

3rd Edition,  August 1993
Copyright c 1993 by Digital Equipment Corporation.
All Rights Reserved.
Printed in U.S.A.

The  reproduction  of this material, in part or  whole,  is  strictly
prohibited.  For  copy information, contact the Assistive  Technology
Group, Digital Equipment Corporation, Maynard, Massachusetts  01754
The information in this document is subject to change without notice.
Digital  Equipment  Corporation assumes  no  responsibility  for  any
errors that may appear in this document.
This equipment generates, uses, and may emit radio frequency  energy.
The  equipment  has  been type tested and found to  comply  with  the
limits  for  a Class B computing device pursuant to Part  15  of  FCC
Rules,  which  are designed to provide reasonable protection  against
such  radio  frequency  interference when operated  in  a  commercial
environment.  Operation of this equipment in a residential  area  may
cause interference, in which case the user, at his own expense,  will
be required to take measures to correct the interference.
Touch-Tone  and  AT&T  are  trademarks  of  American  Telephone   and
Telegraph Company.
IBM and PC are trademarks of International Business Machines, Inc.
The  following  are  trademarks  of  Digital  Equipment  Corporation,
Maynard, Massachusetts.
DECtalkDECUS
FCC COMPLIANCE
FCC id: DTCO7
    This  device  complies  with  Part  15  of  the  FCC  Rules.
    Operation is subject to the following conditions:  (1)  this
    device  may  not cause harmful interference,  and  (2)  this
    device  must  accept  any interference  received,  including
    interference that may cause undesired operation.
This  equipment has been tested and found to comply with  the  limits
for  a  Class B digital device, pursuant to Part 15 of the FCC rules.
These  limits  are designed to provide reasonable protection  against
such  radio  frequency interference.  Any modification  that  is  not
expressly  approved  by  Digital may void  the  user's  authority  to
operate  this equipment. The speaker interconnect cable  as  supplied
with the DTC07 interface card may not be substituted, nor altered  or
modified in any way.
This  equipment  generates, uses and can emit radio frequency  energy
and,  if  not installed and used in accordance with the instructions,
may  cause  harmful  interference to radio  communications.  However,
there  is  no  guarantee  that  interference  will  not  occur  in  a
particular installation. If this equipment does cause interference to
radio  or  television  reception, the user is encouraged  to  try  to
correct the interference by one or more of the following measures:
  o  Orient or relocate the receiving antenna
  o  Increase the separation between the equipment and receiver.
  o  Connect the equipment to an outlet on a circuit different from
   that to which the receiver is connected
  o  Consult the dealer or an experienced radio/television technician
   for additional suggestions.
The  user  may find the booklet How to Identify and Resolve  Radio/TV
Interference   Problems   prepared  by  the  Federal   Communications
Commission helpful. The booklet is available from the U.S. Government
Printing Office, Washington, DC  20402. Stock No. 004-000-00398-5

CAUTION - ELECTRIC SHOCK AND FIRE HAZARD:
In  order  to minimize the risk of a fire, this module is constructed
from a UL Recognized Component Printed Circuit Board. However, it  is
not  to  be  operated as a stand-alone product. It is to  be  mounted
within  a  UL Listed, CSA Certified product that provides it  with  a
full fire enclosure.
In order to minimize the risk of electric shock, this module is to be
powered  from  a power supply output that is provided  with  Overload
Protection  and  supplies Safety Extra Low Voltage  (<60  Vdc  or  30
Vrms).
Note:  All  Personal Computers sold by Digital Equipment  Corporation
meet these requirements.
Warning: Discharges of static electricity (ESD) can damage sensitive
computer components. Do not remove the device from its protective
packaging until actual installation.
                                   
                               CONTENTS
                                   
INTRODUCTION                                             0-5
     ABOUT DECtalk PC                                    0-5
     ABOUT THIS MANUAL                                   0-5
     General Chapter Descriptions                        0-5
CONTENTS                                                 0-7
CHAPTER 1 GETTING TO KNOW DECtalk PC                     1-9
     The DECtalk PC Speech Synthesizer Option            1-9
          DECtalk PC Option Card                         1-9
          DECtalk PC Software                            1-10
          Software Installation.                         1-10
          AUTOEXEC.BAT  Initialization Commands          1-10
          Power-Up Self-Test                             1-10
          Operating Mode                                 1-11
     What's New In DECtalk PC                            1-11
          Latest Version of Speech Synthesis             1-11
               High Quality Speech                       1-11
               Increased Word Pronunciation Accuracy     1-11
               Improved Pronunciation Heuristics         1-11
               Larger User Dictionary                    1-11
               New Name Pronunciation Capabilities       1-12
               Tone Generation Capability                1-12
               Settable Volume Control                   1-12
               Faster Speech Rate                        1-12
               Letter Mode, Word Mode and Clause Mode.   1-12
               Immediate Stop Speaking                   1-13
               Shorter Command Strings                   1-13
               Increased Buffer Size                     1-13
     ADDITIONAL MODIFICATIONS IN V4.1                    1-13
          Speech Functionality Improvements              1-13
               Citation Mode                             1-13
               Pronounce Name Expanded                   1-13
               Punctuation Pronunciation                 1-14
               Spelling Speed                            1-14
               Automatic Homograph Pronunciation.        1-14
          DTDEMO source file                             1-14
          Fast Typing Mode                               1-14
          New TSR Calls and User Commands                1-15
               Rapid Flush-and-Speak-Key                 1-15
               Priority Change                           1-15
               Indexing Function                         1-15
               Digitized Speech Output                   1-15
               DIGITIZED_MODE  (0x18)                    1-15
               TEXT_MODE (0x19)                          1-15
               DIGITIZED_DATA  (0x1a)                    1-15
          Multi-board Support                            1-16
          Windows Support                                1-16
CHAPTER 2 HOW DECtalk PC WORKS                           2-17
     Accepting text and commands                         2-17
     CONVERTING TEXT TO SPEECH                           2-17
          Level 1                                        2-17
          Level 2                                        2-17
          Level 3                                        2-17
     DECtalk PC SOFTWARE PROGRAM                         2-18
          Converting ASCII Text to Phonemic Code         2-18
          Converting Phonemic Code to Synthesizer Control
          Commands                                       2-19
CHAPTER 3 HOW TO COMMUNICATE WITH DECTALK                3-21
     COMMUNICATING WITH THE DECTALK PC                   3-21
     DECtalk Driver - DT_DRIV                            3-21
          Sending ASCII TEXT                             3-21
               Text Processing Rules                     3-21
               Application DICTIONARIES                  3-21
          CONTROL AND STATUS FUNCTIONS                   3-22
          DT_DRIVE Configuration Options                 3-22
     DOS BIOS Calls                                      3-23
          USING DOS COPY and print                       3-23
          Programming DOS BIOS Calls                     3-23
     Communicating Directly with the TSR.                3-24
          2F Multi-threaded Interupt                     3-24
     Embedding DECtalk commands in the text string       3-25
     Mixed Control                                       3-25
     SPEECH CONTROL                                      3-26
          USING Speech Control COMMANDS                  3-26
          SYNCHRONIZING ASYnCHRONOUS COMMANDS            3-26
          Command Errors                                 3-27
     Speech Control commands                             3-27
     DECTALK TSR Commands                                3-54
CHAPTER 4  TEXT PROCESSING                               4-1
     TEXT PROCESSING RULES                               4-1
     NUMBER PROCESSING                                   4-2
          Part Numbers                                   4-2
          Cardinal Numbers                               4-3
          Ordinal Numbers                                4-5
          Fractions                                      4-5
          Money                                          4-5
          Dates                                          4-6
          Time of Day                                    4-6
     ABBREVIATIONS                                       4-6
          Abbreviations Processed by DECtalk             4-6
     WORD SPELLOUT STRATEGIES                            4-7
          Word Spellout Tests                            4-8
     Homographs                                          4-9
CHAPTER 5PHONEMICS                                       5-1
     DECtalk PHONEMIC INPUT                              5-1
     PHONEMIC TRANSCRIPTION                              5-1
     PRONUNCIATION ERRORS                                5-2
          Mispronnouncig a Proper Name                   5-2
          Mispronouncing an Acronym                      5-2
          Mispronouncing an Unfamiliar Word              5-3
          Strings Containg Nonalphabetic Characters      5-3
          Ambiguous Pronunciations                       5-3
          Syntactic Classfication                        5-3
          Incorrect Phrasing                             5-4
     INTRODUCTION TO PHONEMIC THEORY                     5-4
          PHONEMES                                       5-5
               Prounouncing Phonemes                     5-5
               VOWEL AND CONSONANT PHONEMES              5-5
               PHONONEMIC REPRESENTATION                 5-6
          Phonemic Correction the Easy Way               5-6
          The User Dictionary                            5-6
          VOWEL ALLOPHONES                               5-8
               Allophones for  Vowels + [r]              5-8
               The Schwa Allophones [ax] and [ix]        5-8
               Syllabic Consonants                       5-9
          CONSONANTS                                     5-9
               Consonant Allophones                      5-9
               Dental Flap [dx]                          5-9
               Glottal t                                 5-9
               Postvocalic [r]                           5-10
               Postvocalic [l]                           5-10
               Glottal Stop [q]                          5-10
          Controlling Allophone Selection                5-10
          Silence Phoneme [_]                            5-10
          STRESS AND SYNTACTIC SYMBOLS                   5-10
               Primary Stress [']                        5-12
               Secondary Stress [`]                      5-12
               Emphatic Stress ["]                       5-13
               Unstressed Syllables                      5-13
               Pitch Control  [/], [\], [/\]             5-14
               Word Boundary                             5-14
               Syllable Boundary [-]                     5-14
               Morpheme Boundary [*]                     5-14
               Compound Noun [#]                         5-15
               Beginning of Verb Phrase [)]              5-15
               Clause Boundary [,]                       5-16
               Period [.]                                5-17
               Question Mark [?]                         5-18
               Exclamation Point [!]                     5-18
               New Paragraph [+]                         5-19
          DIRECT CONTROL OF DURATION AND PITCH           5-19
          Duration and Pitch [<>]                        5-20
          Singing                                        5-21
               Vibrato                                   5-21
               Assigning Pitch and Duration              5-21
               Sung and Non Sung Pitches                 5-22
               Musical Note Codes                        5-22
CHAPTER 6  MODIFYING THE VOICES                          6-1
     VOICE CHARACTERISTICS                               6-1
          SPEAKING RATE [:ra _]                          6-2
          PAUSE DURATIONS [:pp _] and [:cp _]            6-3
          SELECTING A STANDARD VOICE [:n_]               6-4
     DESIGNING A VOICE                                   6-4
          PARAMETERS [:dv _]                             6-4
          Changing Sex and Head Size                     6-5
               Sex, sx                                   6-5
               Head Size, hs                             6-6
               Higher Formants, f4, f5, b4, and b5       6-7
          Changing Voice Quality                         6-8
               Breathiness, br                           6-8
               Lax Breathiness, lx                       6-8
               Smoothness, sm                            6-8
               Richness, ri                              6-9
               Nopen Fixed, nf                           6-9
               Laryngealization, la                      6-9
          Changing the Pitch and Intonation of the Voice 6-10
               Baseline Fall, bf                         6-10
               Hat Rise, hr                              6-11
               Stress Rise, sr                           6-12
               Assertiveness, as                         6-12
               Quickness, qu                             6-12
               Average Pitch, ap, and Pitch Range, pr    6-12
          Changing Relative Gains and Avoiding Overloads 6-14
               Loudness g5                               6-14
               Sound Source Gains, gv, gh, gf, and gn    6-15
               Cascade Vocal Tract Gains, g1, g2, g3, and g4
               6-15
          The [save ] Parameter and [:nv] Voice          6-16
          Summary oF Speaker-Definition Parameters       6-16
     VOICE COMMAND SYNTAX                                6-17
     TEXT TUNING EXAMPLE                                 6-18
CHAPTER 7  DEVELOPING AN ADVANCED SPEECH APPLICATION     7-21
     Application Control of DECtalk                      7-21
     Electronic Mail Example                             7-21
          Parse Boilerplate                              7-21
          Adding Natural Pauses                          7-21
          Process Punctuation                            7-21
          Application Specific Dictionary                7-21
          Proper Name Processing                         7-22
          Number Processing                              7-22
          Case of Letters                                7-22
     OPTIMIZING THE QUALITY OF SPOKEN TEXT               7-23
          COMMON ERRORS                                  7-24
APPENDIX A  Configuration for the DECtalk PC Board       A-1
APPENDIX B  DECtalk PHONEMIC SYMBOLS                     B-1
     MULTI-CHARACTER ALPHABET -                          B-1
      For USER DICTIONARY and PHONETIC Modifications to TEXT B-1
          Vowels                                         B-1
          Consonants                                     B-2
     ONE-CHARACTER PHONETIC ALPHABET  (FOR REDEFINING TYPING
     TABLES:                                             B-3
          Vowels                                         B-3
          Consonants                                     B-4
     Stress and Syntactic Symbols  (used with both alphabets)
     B-5
     Musical Notes                                       B-5
APPENDIX C  Homographs                                   C-1
     Homographs Defined                                  C-1
     Homograph Processing                                C-1
     Homograph Table                                     C-1
APPENDIX D  VOICE PARAMETERS                             D-1
     Standard VOICES                                     D-1
     Voice Parameters                                    D-1
          Vocal Tract Parameters [:dv  ]                 D-1
          Voicing (Sound Source) Parameters              D-2
          Intonation Parameters                          D-2
          Gain (Adjustment) Parameters                   D-2
          Speaker Definitions for standard (predefined) DECtalk
          Voices                                         D-3
APPENDIX E  Application Dictionary                       E-1
                                   
                             INTRODUCTION
                                   
ABOUT DECtalk PC
Video  terminals  display information from a computer  on  a  screen.
Printers display the same information on paper. These devices   allow
the  user  to communicate with computers through the sense of  sight.
DECtalk  PC   is  another device that allows the user to  communicate
with  computers.  However,  this device speaks  the  information.  It
allows  the  user to communicate through the sense of   hearing  (the
user)   and  speaking  (DECtalk).  DECtalk  PC  is  a  text-to-speech
synthesizer  option card designed to plug into IBM  PC  computers  or
100%  compatibles.  It converts computer text to computer speech with
the  latest  in  DECtalk speech synthesis software.  DECtalk  PC  can
provide a computer with a high-quality synthesized voice.
ABOUT THIS MANUAL
This  manual is intended for software developers who intend to  write
application  programs for the DECtalk and may be used in  conjunction
with the DECtalk PC  Installation Guide.
Chapters 1 and 2 provide a general  description of the DECtalk PC and
how it works.  Chapter 3 describes how to use and program the DECtalk
PC to work with an application.  Chapters 4-7 explain the linguistics
and speech technology capabilities of the DECtalk PC.
The   appendices  at  the  back  of  the  manual  provide  additional
information to  assist the reader to use and program the DECtalk PC.
General Chapter Descriptions
       o Chapter 1, "Getting to Know the System," describes the
          DECtalk PC system and its modules. This chapter also
          provides general operating and testing information.
       o  Chapter  2, How DECtalk Speech Works, describes the DECtalk
           speech generating system and gives an overview of how  the
           system operates.
       o  Chapter 3  How to Communicate with DECtalk,  describes  how
           you  can  communicate with  the DECtalk PC board  via  the
           device driver.
       o  Chapter   4    Text  Processing,   describes  how   DECtalk
           processes   text   and  adopts  various   word   spell-out
           strategies.
       o  Chapter  5   DECtalk  Phonemics and Voices,  describes  the
           sound  system of English. This chapter shows how to modify
           DECtalk's pronunciation to produce high-quality speech.
       o  Chapter  6  Modifying the Voices,  shows how to change  the
           voices  provided by DECtalk and how to create a new voice.
           This  chapter  includes commands to change  the   speaking
           rate and make certain other modifications to the voices.
       o  Chapter  7   Developing  Advanced Applications,   describes
           some  techniques for writing applications.  This   chapter
           also  gives programming  and operating hints to   optimize
           DECtalk performance.
          Appendices
          Index
                                   
                                   
                                   
                                   
                               CHAPTER 1
                      GETTING TO KNOW DECTALK PC
                                   
This  chapter provides a general description of the DECtalk PC speech
synthesizer  which incorporates the latest DECtalk speech  microcode.
It covers configuration, installation and operating mode.
The DECtalk PC Speech Synthesizer Option
DECtalk PC is a speech synthesizer option card intended for use in PC
based  systems. ASCII formatted text,  which is input to the  DECtalk
PC  via  the  PC  internal bus is converted into synthesized  audible
speech heard through an external speaker.
The complete option includes the following components:
       DECtalk PC  speech synthesizer option card
       External Speaker with volume control and headphone jack
       Getting Started Reference Card (print/braille)
       Installation Manual
       Installation Guide Audio Cassette
       DECtalk PC Software Diskettes (3-1/2" & 5-1/4")
       Warranty Registration Card
DECTALK PC OPTION CARD
The DECtalk PC is a full length 8 bit option card which plugs into an
IBM PC or 100% compatible internal bus. The bus may accept XT, ISA or
EISA (8, 16 or 32 bit) options.
The major components on the board are as follows:
       INTEL 80C186 16 bit Microprocessor
       TMS32010 (Digital Signal       Processor)
       1MB of DRAM
       Digital to Analog Converter (DAC)
       Audio amplifier with anti-aliasing
       Output Jack (1/8" mono)
       8 bit IBM PC bus interface
DECTALK PC SOFTWARE
The  microcode for the DECtalk PC option card, the DOS driver and the
installation program are supplied on floppy diskettes. Providing  the
DECtalk  microcode  on  diskettes  provides  the  ability  to  easily
distribute upgrades to the synthesizer functionality.
SOFTWARE INSTALLATION.
The  installation program will prompt the installer, via  both  tones
and  screen  menus,  through the install procedure.  The  instalation
procedure  will load the software onto the system's hard  disk,  load
the  DOS  driver and will initially load the board with its software.
Successful  installation will cause the board to  speak  its  startup
message.
The  install program will also, as a default, update the AUTOEXEC.BAT
file so that the microcode will be automatically downloaded from  the
hard disk to the DECtalk PC upon system startup.
AUTOEXEC.BAT  INITIALIZATION COMMANDS
The  commands  added  to the AUTOEXEC.BAT file  for  the  DECtalk  PC
perform the following functions:
        DT_CONF looks for DECTalk PC option cards installed in the PC
bus.  If it finds any, it will attempt to initialize them and reports
the status.
        DT_DRIV  loads  the DECtalk PC TSR into the PC's  memory.  It
will  not load if DT_CONF was not able to successfully initialize  at
least one DECtalk PC module. This TSR can be loaded into upper memory
(LOADHIGH).
        DT_LOAD loads the 1MB of memory on the DECtalk PC option card
with  all  the  software modules required to implement  the  text-to-
speech synthesis function. Application specific dictionaries can also
be loaded.
       DT_START causes the DECtalk PC to speak it startup message.
POWER-UP SELF-TEST
        Upon successful module initialization and software load,  the
DECtalk will say:
       "DECtalk Version 4.1 is running."
OPERATING MODE
        The  DECtalk  module is ready to operate when the  successful
power-up  message  is spoken.  In this state, the  DECtalk  board  is
controlled via the DECtalk TSR driver, DT_DRIV.EXE.
What's New In DECtalk PC
        Many  users  may  be  familiar with the  serial-line  DECtalk
speech  synthesizer.  The DECtalk PC with DECtalk  V4.x  software  is
compatible  with the linguistic capabilities and high quality  speech
of  other  DECtalks. However, there are a number of  differences  and
improvements.
LATEST VERSION OF SPEECH SYNTHESIS
        DECtalk  software  contains the  latest  version  of  DECtalk
speech  synthesis.  This incorporates a number  of  improvements  and
modifications  to  the  firmware used in earlier  ROM-based  systems.
These include:
     High Quality Speech
        DECtalk's  speech retains its high quality.  In  addition,  a
number  of  improvements  have  been made  in  functionality,  speech
quality and naturalness.
     Increased Word Pronunciation Accuracy
        The  accuracy  of word pronunciation is higher  than  in  any
previous  version of DECtalk. Words are seldom mispronounced.   There
have  been  significant improvements in the accuracy and  quality  of
letter-to-phoneme rules. Also, DECtalk contains a very large built-in
dictionary  which assists both the pronunciation of individual  words
as  well as its rhythmic naturalness. The fixed dictionary in DECtalk
software  is  many times larger than any previous DECtalk  dictionary
and  the  entries  are more complex and contain a  wider  variety  of
information  to  increase naturalness. As in the past,  the  built-in
dictionary  is inaccessible to the user although the user  dictionary
is accessible and modifiable.
     Improved Pronunciation Heuristics
         Certain   heuristics  have  been  improved  and  made   more
intelligent.  For  example, DECtalk is able to better  recognize  and
parse  unpronounceable sequences such an uppercase initialisms  (FBI,
AAA,  etc.) in addition to the normal unpronounceable sequences  such
as those with no vowels (CBS, NBC).
     Larger User Dictionary
        DECtalk PC contains a user dictionary. This dictionary can be
used to load application-specific words, DOS-specific terms, and  the
like.   This dictionary is now much larger than those of the  earlier
DECtalks.  The size is variable and depends upon what other  software
is  resident on the board.  However, the usable space may be as  high
as  350K  bytes and would be sufficient to load thousands  of  words.
Because  of  the  large  dictionary, developers can  now  input  many
keyboard  key names and commonly used DOStm and PC application  words
and commands (e.g., autoexec.bat, config.sys, etc.).
Note:  Dictionaries  are  searched in the order  in  which  they  are
downloaded.
     New Name Pronunciation Capabilities
        One  of  the  items most requested from previous versions  of
DECtalk  has been an improved ability to pronounce proper names  such
as first names, last names and street names.  DECtalk is now capable,
for the first time, of pronouncing proper names with a high degree of
accuracy and greater level of intelligence. The rules behind the name
pronounciation   routines  were  originally   developed   for   large
commercial telecom applications but have now been modified to run  on
the  DECtalk.   This can be run in different modes and  should  be  a
great  help to applications which require peoples names and addresses
to be pronounced correctly.
     Tone Generation Capability
        DECtalk  will generate certain tones (e.g., for margin  bell,
alert  etc.)  in  addition to speech sounds. It  also  maintains  its
ability  to  sing  and  the developer still has  the  flexibility  of
modifying acoustic parameters such as pitch, duration and the like to
create different voice qualities.
     Settable Volume Control
        DECtalk contains settable volume control both in hardware and
in software. There is a volume control on the loudspeaker which comes
with  the  PC-board  and  there is also a  volume  control  which  is
settable by a command sequence.
     Faster Speech Rate
        Speech rate on DECtalk runs from a slow speed of 75 wpm to an
upper  rate of 650 wpm. This is as much as 300 wpm faster than  other
DECtalks  and  thus  is more useful for applications  where  scanning
large bodies of text is necessary.
     Letter Mode, Word Mode and Clause Mode.
        DECtalk  is  able  to  immediately  speak  single  characters
without  waiting for an entire clause to be buffered. This is  useful
in  applications requiring tactile feedback for what was typed on the
keyboard. It also provides normal clause buffering for highly natural
speech.   DECtalk   can  speak  letters,  words,  phrases,   clauses,
paragraphs and whole documents.
     Immediate Stop Speaking
         DECtalk   allows   the  application  to   terminate   speech
immediately  instead of waiting for the buffered  text  to  complete.
Stop  Speaking can be accomplished by commands such as [:pause] which
acts  immediately. DECtalk will still accept commands.  DECtalk  also
has  the  ability to resume speaking where the text last  off  or  to
flush text and immediately start speaking new text.
     Shorter Command Strings
Many of the command strings such as change rate, change voice, start,
stop,   index,  and  index  reply  may  be  shortened   to   simplify
applications.
     Increased Buffer Size
Buffer  size in DECtalk has been significantly increased.  The  input
buffer size is 4Kbytes and the output buffer size is 4Kbytes.
ADDITIONAL MODIFICATIONS IN V4.1
        V4.1 is the latest version of the DECtalk speech synthesizer.
A  number of modifications have been made and new functionality   has
been  added.  These include new TSR calls and user  commands,  multi-
module support and MS-Windowstm support.
SPEECH FUNCTIONALITY IMPROVEMENTS
There  have  been a number of improvements to the speech quality  and
functionality of DECtalk in V4.1. Speech improvements are an on-going
effort  and  each  successive version of  the  software  should  have
improved  functionality  as  well  as  improved  intelligibility  and
naturalness.
Citation Mode
A  Citation  Mode  has  been added for certain  function  words  which
needed to be pronounced differently when used in isolation as in  some
of  the  educational  and literacy applications.  When  this  mode  is
invoked  the word to is pronounced [t'uw], the is pronounced  [dh'ah],
for  is  pronounced [f'or] and so on.  The command to invoke  citation
mode is [:mode citation on].  The default mode is ON.
Pronounce Name Expanded
        In  V4.0,  the  [:pron name] command could  be  used  at  the
beginning of a character string only. This has been expanded so  that
it  will  work  in any syntactic context. Therefore,  if  a  name  is
mispronounced,  or  a  name  field  within  the  application  can  be
identified,  you can now invoke the [:pron name] command anywhere  in
the text, e.g., The customer name is Joseph [:pron name] Carbone.
Punctuation Pronunciation
        The  command  [:punc some] works in a more  intelligent  way:
"period"  is  no  longer  pronounced in any context,  e.g.,  ellipsis
marks.  Spell  mode will no  longer activate except  in  alphanumeric
strings.  [:punc  none]  now  processes  (but   does  not  pronounce)
punctuation  so  that ":", ";", "-" and the like  will  force  pauses
but will not be spoken.
Spelling Speed
        Spelling  speed is tied to speaking speed. No  special  rules
will   be  used  for  spelling more slowly or quickly  than  the  set
speaking  speed. However, the speaking rate can  be easily  increased
or decreased in the normal way.

Automatic Homograph Pronunciation.
In  DECtalk  V4.1 homographs (words which are spelled  the  same  but
pronounced  differently) are chosen automatically thus relieving  the
user of having to decide on the phonetics.
For example, if DECtalk speaks the following pair of sentences:
       I'll refuse the refuse.
       They'll produce the produce.
you  will notice that the correct form is chosen automatically.   Two
other  commands for homographs have been added. These are [:pronounce
primary]   which   provides  the  primary  (usually  more   frequent)
pronunciation,   and  [:pronounce  alternate]  which   provides   the
alternate  pronunciation. Therefore, [:pron prim] august  will  yield
['aogaxst]  'the 8th month of the year,' and [:pron alt] august  will
yield [aog'ahst] 'serious, somber.'
DTDEMO SOURCE FILE
The  source files for DTDEMO are now included for reference  purposes
for programmers and developers.
FAST TYPING MODE
      To  allow typing mode (for audible feedback) to work as fast  as
possible,  a  new TSR call (FLUSH_CHAR) has been added.  (see  below).
This is used in conjunction with a keyboard mapping table which can be
customized  with  a new [:TYPE DD ASKY] command. Also,  the  pitch  of
selected  ASCII characters in the table, such as CAPS, can be modified
using a new command [:pitch dd] where "dd" is  a delta pitch change in
Hertz.
NEW TSR CALLS AND USER COMMANDS
Rapid Flush-and-Speak-Key
      FLUSH_CHAR  (0x2a) provides a rapid flush-and-speak-key function
e.g.  "typing  mode",. When invoked it flushes any pending  speech,  a
built  in translation table is used to convert characters to the sound
equivalence  and  the  results are sent directly  to  the  synthesizer
itself,  bypassing  significant pieces  of  the  DECtalk  code.  .  In
addition, a means of assigning pitch to a character (such as an upper-
case  character) has been provided. Also, the typing table itself  may
be  modified  so  that  keys can be redefined. A  global  delta  pitch
command  is  provided  to  set the change in  pitch  for  emphasis  of
uppercase  characters  and the like. Its  default  is  a  35  a  hertz
increment.
Priority Change
        IO_PRIORITY (0x26) sets the comm task inside DECtalk  to  the
highest  priority. This results in much faster indexing which  should
be the preferred setting in most cases.
Indexing Function
        LAST_INDEX (0x25) returns the last seen index as an  int   in
the  C  register.  It  returns a retry if it has  not  processed  any
indexes since the last request.
Digitized Speech Output
        V4.1  allows for the playback of digitized voice files  which
are  stored  on the PC.  If digitized voice files, e.g. filemane.VOC,
can  be  created  (e.g.,  from  a board which  allows  recording  and
creation of a voice file from that recording), and stored on disk  on
the  PC,   such files can now be played back through the DECtalk  PC.
Files are played back at 10Khz.
Note:  Digitized  voice  is unidirectional on  DECtalk.  Voice  files
cannot  be  created using the board but they can be played  back.  To
create files, another device must be used.
The  new  TSR  commands for implementing the digitized  mode  are  as
follows:
DIGITIZED_MODE  (0x18)
Puts DECtalk into digitized playback mode.
TEXT_MODE (0x19)
Puts DECtalk into text-to-speech mode.
DIGITIZED_DATA  (0x1a)
Sends digitized data to the DECtalk.
There  are also a number of new immediate voice change commands  also
listed in Chapter 3.
MULTI-BOARD SUPPORT
In V4.0 of DECtalk, only one board could be supported per PC system..
In  V4.1,  a multithreaded support has been implemented and four  (4)
DECtalk PC boards can now co-exist in one system. This will be useful
in  the development of multi-line telephone-based applications.   The
limitation  on  the number of boards is based on (a)  the  number  of
available  slots in the PC (up to 4); and (b) the number of available
I/O  addresses.   The switchpack on the DECtalk  PC  allows  for  two
switches (4 positions) for I/O addresses. Thus, the maximum number of
boards currently allowed is 4.  The lowest numbered I/O address (240)
is  module  0.  The  next lowest is module  1,  and  so  on.  In  the
multiboard  mode,  register SI indicates  which  board  you  wish  to
communicate  with on all calls and it must be specified if  there  is
more  than one board installed. If there is exactly one board in  the
system,  SI  is  ignored. To determine the number of  boards  in  the
system, use the GET_STATUS call which returns the number of installed
boards in the SI.
Note:  In  multiboard  operation, the DT_UTIL  and  DT_LOAD  commands
require  an additional argument (-m D where D = 1-4)  which specifies
the appropriate board.
To  demonstrate the use of more than one board, send mul (for  multi-
line)  followed  by  -m, the module number and  the  file  name.  For
example:
       mul_read -m 0 (filenamex), -m 1 (filenamey) -m 2 (filenamez)
The  above  comand would allow three separate files to be  read  from
three boards.
Note: There are no on-board telephonics on the DECtalk board. DECtalk
could be combined with telephonics cards available from a number of
vendors.  Software to interface the DECtalk board with a  telephonics
card is the responsibility of the application.
WINDOWS SUPPORT
        An  MS-Windows DLL (Dynamically Linked Library) is  available
for  DECtalk.  To request more information call the DECtalk  Bulletin
Board at  508-493-0376 and leave a note.
                                   
                               CHAPTER 2
                         HOW DECTALK PC WORKS
                                   
This chapter describes how DECtalk PC converts ASCII data into voice
output.
Accepting text and commands
The  operation  of  the DECtalk PC is dependent  on  its  own  memory
resident  Terminate  and Stay Resident (TSR)  program.  This  program
accepts ASCII text and commands from an application program, such  as
a  Screen  Access program. It then parses the commands  and  in  turn
sends  the appropriate commands and text to the DECtalk PC.  It  also
keeps  track  of  the  status  of  the  DECtalk  board  and  provides
information back to the application program such as replies to  index
queries, etc.
CONVERTING TEXT TO SPEECH
The  text  and commands sent to the DECtalk by the TSR  are  used  to
convert  the text into  speech by a three-level process.The  commands
control  aspects  of  the DECtalk such as the  voice,  speaking  rate
volume, etc.
LEVEL 1
DECtalk  first accepts text from the  PC and converts the  text  from
one  code  into another. The text  is in ASCII format when it  enters
DECtalk, and is  converted to phonemic code for further processing.
Phonemic code uses the phonemic alphabet described below. Each symbol
in the phonemic alphabet has only one pronunciation.  DECtalk uses an
internal dictionary and the rules of English pronunciation to perform
this conversion.
LEVEL 2
The  phonemic code is converted into synthesizer control  parameters.
These  are continuous variables which control  aspects of the  speech
such  as  pitch,  amplitude, duration and the like  for  the  various
DECtalk voices.
LEVEL 3
The  speech  synthesizer uses the control parameters  to  generate  a
speech  waveform.  This waveform is converted  to  an  analog  speech
signal by a D/A converter.
In  Levels 2 and 3, a synthesizer control command (a set of  phonetic
parameters)  is  generated  every 6.4 milliseconds, and  the  digital
signal  processor  generates  a  speech  waveform  value  every   100
microseconds.  This  process  generates "frames" of  speech.  DECtalk
acts  somewhat  like  a  TV  picture in these frames  of  speech  are
presented  to the  listener just as frames of pictures are  presented
to  the  viewer.   In  both  cases,  the  frames  appear  to  be  one
continuous, unbroken  sequence.
DECtalk PC SOFTWARE PROGRAM
The  three-level process described in the last section happens  in  a
number of discrete program modules. Each module is described  briefly
in the following paragraphs.
CONVERTING ASCII TEXT TO PHONEMIC CODE
1.  A sentence parser breaks the input stream into separate words and
locates  some  clause  boundaries (indicated  by   commas  and  other
punctuation  marks  as well as special words).  The  sentence  parser
also  recognizes and deals with phonemic symbols and   commands  that
you may have added to the input text. Phonemics are discussed below.
2.  A  word parser breaks words into their component parts,  yielding
words in their final pronounceable form. Strings of text that do  not
form pronounceable English words are  spelled out letter by letter. A
number  formatter is used if the text contains numerals.  The  number
formatter knows the rules for many common number formats and converts
the numbers into English  words. The number formatter also recognizes
many  common  abbreviations, such as "lb."  for  "pound(s)."  Number-
speaking rules are discussed later in this manual.
3..   A   dictionary   lookup  routine  searches  the   pronunciation
dictionaries. DECtalk has a built-in dictionary of many commonly used
words.   DECtalk  also has definable dictionaries for developers  and
users that can be filled with words specific to an application. These
dictionaries and their loading are described in Chapter  Five.  While
this  version of DECtalk has greater pronunciation accuracy than  its
predecessors, it may sometimes be necessary  to send the DECtalk card
the   correct   phonemics  for  words  important  for  a   particular
application.   This   can  be  done  using  the   developer-definable
dictionary. Dictionaries are searched in the order in which they have
been loaded onto the DECtalk board. The last dictionary loaded is the
first one looked at and so on. The **In what order???LIFO?
4. A letter-to-sound module uses a set of English pronunciation rules
to  assign  phonemic form and lexical  stress patterns to  words  not
found  in  the  dictionary. Chapter 4 describes the  text  processing
rules  for  DECtalk including numbers, abbreviations,  word  spellout
strategies and homographs.   See Chapter 5, Phonemics and Voices  for
ways  to  modify the phonemic form of words, and subsequent  chapters
for special voice qualities (such as  emphasis and singing).
5.  A phrase structure module recombines all phonemic output from the
dictionary search and other modules. Durations  of phonemes and pitch
commands are computed for the  clause, and appropriate sound variants
are  selected for  those phonemes that can be pronounced in more than
one  way.
CONVERTING PHONEMIC CODE TO SYNTHESIZER CONTROL COMMANDS
6.  The  phoneme-to-voice module processes clauses  passed  from  the
phrase structure module and converts them to control  signals for the
speech synthesizer. This module modifies the clauses by changing  the
phonemes/allophones  into  parameters  that  determine  the   natural
resonant  frequencies  of the vocal tract  (formants),  sound  source
amplitudes,  and  the like. The control parameters are  sent  to  the
speech synthesizer for output.
Converting Control Commands to Speech
7.  The  digital speech synthesizer computes a speech  waveform  with
acoustic  characteristics  that are determined  by  the   synthesizer
control commands received. Replicating the sounds of human speech  in
a  natural  way is an extremely difficult task.  Dozens  of  acoustic
parameters  and thousands of values of these parameters  have  to  be
taken  into  account.   DECtalk is widely believed  to  be  the  best
English  language synthesizer available anywhere for  intelligibility
and naturalness.
                                   
                               CHAPTER 3
                    HOW TO COMMUNICATE WITH DECTALK
COMMUNICATING WITH THE DECTALK PC
      The  primary function of the DECtalk PC is to convert ASCII text
files  into synthesized speech output. In addition, a large number  of
control  and status functions are available. These functions are  used
to  modify  the  speech parameters of the DECtalk PC  and  to  provide
status and control to the application program.
DECtalk Driver - DT_DRIV
All text and control communications to the DECtalk PC are done via the
DECtalk Terminate and Stay Resident (TSR) driver, DT_DRIV.EXE.   There
are three basic ways to communicate with the TSR.It can be done by;
     1.  Using the DOS commands COPY and PRINT,
     2.  Using DOS  (Int 86) BIOS calls to a COMM or LPT port
     3.  Interfacing directly with the TSR using Int 2f multithreaded
interrupts.
SENDING ASCII TEXT
It  is  the responsibility of the PC user or the application to insure
that  only  ASCII  based  text is sent to the DECtalk  to  synthesize.
DECtalk  PC includes its own set of built-in rules for text processing
as  well  as  a   large integral dictionary. In addition,  application
specific  dictionaries can be included. All text input to the  DECtalk
are processed based on these rules and dictionaries.
Text Processing Rules
     Many  applications manipulate the text input to  the  DECtalk  to
control  how it is to be spoken. Prior to modifying the text input  to
gain  the desired result, it is important to the application developer
to know the text processing rules that are already programmed into the
DECtalk.  These  rules are described in Chapter 4 and  include  number
processing,  abbreviations, word spellout  strategies  and  homographs
(words  with  two  pronunciations). In every case the  latest  release
notes  should  be  consulted to see if any of these  rules  have  been
modified.
Application DICTIONARIES
      Dictionaries containing words, acronyms, etc. that are  specific
to  an application and that DECtalk needs help in pronuncing correctly
can  be  created and loaded into the  memory on the DECtalk PC  board.
Appendix  E.  describes  the procedure for  creating  and  loading  an
application dictionary.
DECtalk searches dictionaries in the reverse order in which they  were
loaded. Therefore it will search the last loaded dictionary first  and
so  on. If you want to override the pronunciation of a word which  may
be   in  the  internal  dictionary,  DTPC.DIC,  then  the  application
dictionary  must be loaded after it. The DT_LOAD command  is  used  to
load  a  dictionary.  The command can be used anytime  after  the  the
DECtalk  PC  has been initialized and loaded with its basic  opertaing
modules.  Or  the compiled application dictionaries's  file  name  can
added  onto the end of the DT_LOAD command that is included in DECtalk
PC's AUTOEXEC.BAT  file commands.
     Examples:
          DT_LOAD  mydict.dtu
               or
          DT_LOAD  kernel .sys command.com dtpc.dic....... mydict.dtu
CONTROL AND STATUS FUNCTIONS
      In  addition to being able to send ASCII text to the DECtalk for
it to convert into synthesized speech output, there are a large number
of  operating  parameters which can be controlled  by  an  application
program. These parameters include selecting the speaking voice,  rate,
and volume, tone generation, and pause lengths. Various modes can also
be  set  such as punctuation, logging, spelling, and speaking.  Lastly
status  and control functions such as indexing and output control  are
available to the application program. The description and use of these
status and control functions are described later in this chapter.
DT_DRIVE CONFIGURATION OPTIONS
        The  DT_DRIV.EXE program will take various arguments to allow
for  different desired configurations. The default configuration  for
DECtalk is a base address of 340, and serial trapping enabled on port
3  (COM4).  The following is a list of the arguments that the  driver
program accepts.  The I/O address is set via switches 6 and 7 of  the
DIP  switch  pack  on the DECtalk PC board. The DT_DRIV  comand  line
switch options are:
       Table 3.1  DT_DRIV Configuration Options
     -C  DD     Enables com port trapping(01 = COM2, 02 = COM3,
                                              or 03 = COM4)
     -L   DD      Enables parallel printer trapping (01 = LPT2, 02  =
       LPT3)
     -B  XX     Sets the base module address to XX (hex number).
     -R         Removes the driver from memeory
     -V          Calls  for  verbose printout of information  by  the
       driver.

DOS BIOS Calls
        The  DECtalk PC can be treated as a standard ASCII device  as
though  it  was  connected to either a serial com port  (COMx)  or  a
parallel  printer  port  (LPTx). DOS INT86 BIOS  calls  made  to  the
specific  port  are  trapped  by  DT_DRIV  which  then  directs   the
information to the DECtalk PC card on the PC bus.
USING DOS COPY AND PRINT
        The  simplest way to communicate with the TSR is to  use  the
DOS  COPY  command. The DOS syntax  "COPY filename.txt COMx"  can  be
used where filename.txt is a file containing ASCII formatted text and
COMx  is  the COM port that the DT_DRIV driver is trapping calls  to.
The  default  COM port for DECtalk PC is COM4. The PRINT command  can
also  be  used  if the printer switch is activiated  in  the  DT_DRIV
command line.  The ports can be changed using switches in the DT_DRIV
command line.
DT_DRIV  will  trap the BIOS call made to COM4 and instead  send  the
text file to the DECtalk PC installed on the PC bus.  Thr DECtalk  PC
then converts the text into synthesized speech.
PROGRAMMING DOS BIOS CALLS
      The  DECtalk driver will trap any COPY or PRINT BIOS  interrupts
for  whichever  device  it has been configured to  emulate(see  Driver
Configuration Options above) and  should appear to the calling program
just  like  a normal serial or parallel card at the BIOS level.  Since
there isn't any actual parallel or serial hardware,  baud rate and the
like  will be emulated and echoed, but nothing is done with these.  In
emulation  mode,  the DECtalk will operate just as quickly  with  baud
rate set at 110 baud as it will at 19.2kbaud.
      As an example of a COM BIOS call, the status information for the
DECtalk was obtained by an INT14 .
     Example:
          gt_stat(int dtport)
          {
               do{
               RB.ah = _COM_STATUS;
               RB.al = 0;
               RW.dx = dtport;
               RW.si = 0;
               _int86(0x14, &regs, &regs);
               }while(regs.x.ax == TSR_BUSY || regs.x.ax ==
          TSR_RETRY);
               return(RW.ax);
          }

This  manual  will not address how to make BIOS calls to a  serial  or
parallel  device.  That  information is generally  available  and  the
details  are specific to the compiler being utilized, rather  than  to
the  DECtalk. For informational purposes, the definitions for the comm
port bits have been included in the DTTSR.H file which is provided  as
part of the distribution.
NOTE  -  Some communications programs will try to deal directly  with
the  port hardware on the PC thereby bypassing the BIOS. If  this  is
the  case,  the  DECtalk  TSR  will never  see  the  commands.  Other
applications, like KERMIT, will revert to BIOS if it does not see any
hardware  at the designated port. DECtalk PC should work  with  these
types  of  programs as long as the port selected does  not  have  any
physical hardware in the PC designated with the same port name.
Communicating Directly with the TSR.
Application programs can interface directly with the DECtalk  TSR  to
both control the DECtalk PC and to send it text to speak.
2F MULTI-THREADED INTERUPT
        To  interface  directly  with the TSR  driver,  DT_DRIV,  the
application  must utilize the 2F multi-threaded INT86 interrupt.  The
call is made using a INT86 structure with the ah = DECTALK_ID and the
al  =  the command function code. The bl contains any parameters that
need  to be passed along with the command. The Status command returns
the  status  of the DECtalk and not comm status. The dx contains  the
comm  status information in this case, so you can get the comm status
from the GET_STATUS command.
       Example:
       stopit()

{
       do{
       RB.ah = DECTALK_ID;
       RB.al = PAUSE_OUTPUT;
       RW.si = 0;
        _int86(0x2f, &regs, &regs);
       }while(regs.x.ax == TSR_BUSY || regs.x.ax == TSR_RETRY);
       return(RW.ax);
Embedding DECtalk commands in the text string
In  addition to controlling DECtalk directly via TSR commands, it can
also  be  controlled by embedding commands in the ASCII text  string.
These  are  known as "square bracket" commands because the syntax  is
[:CMND DD].
For  example, to change the speaking rate to 220 words per minute the
following  command could be included in the text file  at  the  point
where the change in rate was desired:
               [:Rate 220]
The  "square  bracket"  commands are listed  in  the  Speech  Control
Commands section later in this chapter.
Mixed Control
     Both types of command functionality can be present simultaneously
so it is possible to utilize both types at the same time. For example
the TSR command to send a buffer could include an ASCII string
containing "square bracket" speech control commands. Synchronization
of commands and data if both paths were utilized would be the
responsibility of the application.
SPEECH CONTROL
There are four (4) ways to control speech in the DECtalk PC.
        1.   Through  English  text (sentences  in  standard  English
format  and spelling). DECtalk speaks this text as  written according
to  a  set  of predefined rules. Chapter 4 discusses these rules   in
more detail.
        2.   Through phonemic spelling (sentences or phrases  written
in  phonemic  symbols). Phonemic spelling is  closer  to  the  actual
pronunciation  of the text. Phonemic spelling is always  enclosed  in
square  brackets. E.g., if you were to phonemicize the sentence  This
is  an  example of       phonemic spelling, it would look like  this:
[dh'ihs ihz  axn ixgz'aempel axv  faxn'iymixk sp'ehlixnx]. Chapter  5
Phonemics discusses phonemic control in more detail.
NOTE: To use the Phonemic spelling function it must be turned ON.
        3.  Through voice control, [:dv XX], commands. These commands
control  features  of speech that are not obvious  from  the  visible
text,  such  as  sex  of  the speaker, and excitement  level.   These
commands  are  a   subset  of  the overall speech  control  commands.
Chapter  6   Modifying  the Voices discusses voice  control  in  more
detail.
        4.  Through  speech control commands. These "square  bracket"
([:CMND   XX])  commands  control  the  overall  operation   of   the
synthesizer  as  well as its many special features.  They  allow  the
various  voices to be selected, the speaking  rate and volume  to  be
set and the various operating modes (like spell, log and math, to  be
set.  .  The  also  control  the  generation  of  tones,  punctuation
pronunciation, the length of pauses after periods and  commas.  These
commands are listed in the Speech Control Commands  section  of  this
chapter.
USING SPEECH CONTROL COMMANDS
Speech  control  commands  can  be broadly  defined  as  being  either
synchronous  or asynchronous. Speech control commands are  synchronous
unless  otherwise stated in their individual descriptions. Synchronous
commands  take effect when they are encountered in the text string  by
the  DECtalk  synthesizer. For example a voice change command,  [:nX],
will  take effect at the point the command is encountered in the text.
Asynchronous  commands on the other hand are intended to provide  fast
response  and  therefore  when parsed by  the  DECtalk  TSR  are  sent
directly to the DECtalk synthesizer  for immediate processing.
SYNCHRONIZING ASYNCHRONOUS COMMANDS
         The   immediate  processing  of  asynchronous  commands   is
beneficial when fast response is desired. However caution  should  be
exercised when using commands that are listed as asynchronous and the
intent  is to have them take effect at a specific point in the  text.
If  it  is  desired to synchcronize an asynchronous command then  the
[:SYNCH]  command should be used in conjunction with it. For  example
to  use  the asynchronous PAUSE command to place a pause of 500ms  at
the  begining of a paragraph the following command sequence would  be
used:
       Text of Paragraph 1.
       [:synch :pause 500]  Text of Paragraph 2.
COMMAND ERRORS
If  an incorrect syntax is sent in a command, the closing bracket may
be  ignored as it might be considered part of the illegal string.  To
help  avoid  this  situation,  set the  [:  error  speak  on]  during
development. If a flush occurs in the middle of processing a  command
string,  it will report an error. Therefore, not all reported command
errors represent a problem.
Speech Control commands
The  following is an alphabetized list of the speech control commands
for  DECtalk. Each entry consists of (a) Function:  what the  command
is  supposed to accomplish; (b) Command: the text you type in to tell
DECtalk  what to do. All commands begin with a "[:" and  end  with  a
"]".   Any unique substring of the command is valid, e.g., [:ra  180]
is  equivalent to [:rate 180], (:co is sufficient for [:comma pause],
and  so  on.    (c) Options:  (d) Parameters: the required parameters
for those options;  (e) Default; (f) Examples: (g) Description: a non-
formal  description  of what the command does  along  with   examples
where pertinent.
FUNCTION:                             COMMA PAUSE
COMMAND:                              [:COmma DD]
OPTIONS (XX):                         None
PARAMETERS (DD):                      Pause time increment in
                                       milliseconds
                                      Min -40
                                      MAX  +30000
DEFAULT:                              160 ms.
EXAMPLES:                             [:comma 250]
DESCRIPTION:
Comma  pause may be incremented and decremented. [:cp 0]  resets  the
comma pause to its default state (approximately 160 ms.) Comma pauses
can be incremented by 30000ms and decremented by -40 ms.) All  values
outside legal range will default to the nearest legal values.
Note:  Comma pauses may be lengthened or shortened only by the  above
method. Angle bracket notation using durations may no longer be used.
FUNCTION:                             DEFINE VOICE
COMMAND:                              [:DEfine  XX DD (SAVE)]
                                      [:DV XX DD (SAVE)]
OPTIONS (XX):                         See Chapter 6.
       (SAVE)                         SAVE  saves the specified
                                      parameters into the VAL voice.
PARAMETERS (DD):                      See Chapter  6. Modifying the
                                      Voices
DEFAULT:                              Parameters for Paul Voice
EXAMPLES:                             [:dv ap 120]
                                      [:dv pr 130 SAVE]
DESCRIPTION:
This  command allow the user to set speech parameters such  as  pitch
range  (for  a  greater excitement level), head size  (for  a  deeper
voice)  and  the like. XX is a mnemonic which stands for an  acoustic
parameter. DD is some decimal value of the parameter. See Appendix  D
for  a  list of these parameters. For example, to change the  average
pitch  to  120,  type [:dv ap 120]. To save these parameters  to  the
variable  val voice, you may use the [:dv save] command.  Then,  when
you  type [:nv] or [:name val] these saved parameters will define the
current voice.
Note:  You  should leave a space between the parameter name  and  the
value.  Thus, to set the pitch range to 0, type [:dv pr  0]  and  not
[:dv pr0].
FUNCTION:                             DIAL TONES
COMMAND:                              [:DIal "D,DDD-DDD-DDD"]
OPTIONS (XX):                         None
PARAMETERS  (DD):                      String of dial characters  (0-
9,
                                      A,B,C,D,#,*,(comma))
                                      bounded by quotation marks
DEFAULT:                              None
EXAMPLES:                             [:dial "1,508-555-1212"]
DESCRIPTION:This  command generates tones called Dual  Tone  Multiple
Frequency  (DTMF) Tones or Touch-Tonestm. The tones  are  the  touch-
tones  for  0-9, *, #, "," (comma) and uppercase A,  B,  C,  D   (for
certain  types of  handsets only).  The comma can be used to generate
a 2-second  pause. Quotation marks are required around the digits and
dashes  should  be used where appropriate in telephone  numbers.  The
dial tone command is asynchronous.
Note:  The  DTMF generated by this command are the same  tones  which
are used to dial a telephone. However, tone levels may not always  be
adequate to signal switch DTMF detectors and thus this is not  always
reliable. You can adjust volume using the [:vs XX]  command.
FUNCTION:                             ENABLE
COMMAND:                              [:ENable]
OPTION (XX):                          None
PARAMETERS (DD)                None
DEFAULT:                              On
DESCRIPTION:
Enables speaking after a selective text flush. This command is needed
only  after a flush text command or if a TSR call of FLUSH_SPEECH  is
used.
EXAMPLE:
FUNCTION:                             ERROR
COMMAND:                              [:ERror XX]
OPTIONS (XX):
       Ignore :                Ignore all errors
       TExt :          Send errors back as text strings of the form:
                       [:error <type>]
       Escape :        Send errors back as escape sequences of the
form:
                        ESC P 0 ; 300 ; <error code>
       Speak : Speak error string in current voice, rate, etc.
       TOne :  Generate error tone.
PARAMETERS:                           None
DEFAULT:                              Ignore
EXAMPLE                        [:error sp]
DESCRIPTION:
This  command  sets the error mode for the module.  This  command  is
useful for debugging in an application development setting.
FUNCTION:                             FLUSH
COMMAND:                              [:Flush XX DD]
OPTIONS (XX):
       ALl :  Flush all text. (see the flush_text TSR command above)
       Until : Flush until the specified index mark is found.
       Mask : Flush until mask and index bit coincide.
       AFter : Flush all text after index mark.
       Speech : Flush all speaking but continues to process
commands. This
       mode is ended by the enable ([:enable]) command.
PARAMETERS (DD):                      Index mark value or mask
                                      value
DEFAULT:                              None
EXAMPLES:                             [:flush after 193]
DESCRIPTION:
This  command allows speech to be discarded. All pending but unspoken
text is lost, including index markers that may have been sent by  the
PC. This  command stops speech, even if DECtalk is  in the middle  of
a sentence. Speech stops and all internal buffers are re-initialized.
The flush command is asynchronous.
Note: If a Ctrl K is used to flush text while in phonemic mode,   the
text  will  be  flushed but it may result in an  "error  in  phoneme"
message.
FUNCTION:                             INDEX
COMMAND:                              [:Index XX DD]
OPTIONS (XX):
       Mark:   Insert mark into text at current position.
        Reply:  Insert mark and reply when encountered.  (reply  =ESC
P 0 ; 31 ; DD z)
        Query:  Respond with last encountered index.   (reply =ESC  P
0 ; 32 ; DD z)
PARAMETERS (DD):                      Index Mark Value
                                      Index Reply Value
                                      Index Query Value
RESPONSE:
DEFAULT:                              None
EXAMPLES:                             [:index reply 123]
DESCRIPTION:
Text  sent  to  DECtalk  can  contain index  marks.  The  application
"listens"   to  the  spoken text (by reading the value  of  the  last
index) to  determine how much transmitted text has been spoken. Index
markers  are  truly  marks;  they do not modify  heuristics  or  word
pronunciations in any way.  The mark sequence inserts an index marker
(flag)  in  the  text  stream sent to DECtalk. Mark  simply  marks  a
position  in  the text. Reply marks a position, but also has  DECtalk
inform  the  PC   when the index is spoken. When DECtalk  speaks  the
reply  sequence, it sends a reply to the PC.  Note: The  Index  Reply
will  always  be the same number as the Index.  Index Query  requests
DECtalk  to  reply to the PC with the last index marker spoken  (that
is,  the last portion of spoken  text that had an index marker).   It
will send back [:index xxx].
FUNCTION:                             LOG
COMMAND:                              [:LOg XX YY]
OPTIONS (XX YY):
       XX:
               Text            Log all text except escape sequences
               Phonemes               Log converted phonemic text
       YY:
               ON              Absolute
               OFf             Enable mode
               Set             Disable mode
PARAMETERS :                          None
DEFAULT:                              Off
EXAMPLES:                             [:log text on]
DESCRIPTION:
This commmand sets text logging modes for the module. The log command
controls DECtalk logging of input text. This  command allows  DECtalk
to  send  the phonemes corresponding to the  input text back  to  the
PC.  The PC must be prepared to receive the characters when  they are
sent, or they will be lost
FUNCTION:                             MODES
COMMAND:                              [:Mode XX YY]
OPTIONS (XX YY):
       XX:
               Math    Change interpretation of selected symbols
               Europe  Select European monetary pronunciation
               SPell   Spell all words
                 Name      Pronounce  all  proper  names  (see   also
[:pronounce
                       name])
                  Citation          Say   certain   function    words
differently when said in
                       isolation (Default ON)
               Homograph       Reserved for Future Use
       YY:
               ON      Absolute.
               OFf     Enable mode
               Set     Disable mode
PARAMETERS (DD):                      None
DEFAULT:                              Off (except Citation)
EXAMPLES:                             [:mode spell on]

DESCRIPTION
When  mode  is set to Europe, "," is a separator between the  integer
and  fraction  part  of a number and "."  is a separator  between  3-
digit   blocks.  Ex:  1.255  (US) = 1,255 (Europe);  125,873  (US)  =
125.873  (Europe).   1  =  set;  2 =  clear.   Math  takes  ambiguous
characters   and   pronounces   them  with   mathematical   meanings.
Specifically, the following characters are treated differently:
       Character               Clear (Off)    Set (On)
       +               plus           (no change)
       -               dash           minus
       *               asterisk               multiplied  by
       /               slash          divided by
       xxE-xx          (spelled)              (scientific notation)
       ^               carat          to the power of
       <               left angle bracket     less than
       >               right angle bracket    greater than
       =               equals         (no change)
       %               percent        (no change)
       .               period         point

Mode  NAME allows uppercase words which occur in non sentence initial
position to be interpreted as special cases and pronounced as names.
Note:  Do not enable Mode Name except when pronouncing lists of names
only.  Mode  Name will interpret any uppercase word as a  name.  When
finished, make sure that this mode is set to OFF.  For the occasional
use of this utility,  use the [:pronounce name] command (below).
Mode commands are asynchronous.
FUNCTION:                             PAUSE
COMMAND:                              [:PAuse DDD]
OPTIONS (XX):                         None
PARAMETERS (DD):                      Pause time in ms.
                                      0 = forever.
DEFAULT:                              N/A
EXAMPLES:
                                      [:pause 200]
DESCRIPTION:
This  command pauses the audio output of the module. Any pending  but
unspoken text is retained, including index markers that may have been
sent by the PC.  The user now has the option of flushing all text  or
resuming  speech  where  it  was left  off.   The  pause  command  is
asynchronous.  It  must  be  used in conjunction  with  the  [:SYNCH]
command to have its effect take palce at a certain place in the  text
e,g. [:Pause 500 :Synch]Pause here in the text.
FUNCTION:                             PERIOD PAUSE
COMMAND:                              [:PEriod  DDD]
OPTIONS (XX):                         None
PARAMETERS (DD):                      Increment Pause time in
                                      milliseconds
                                      MIN -380
                                      MAX +30000
DEFAULT:                              640 ms.
EXAMPLES:                             [:pe 250]
DESCRIPTION:
Period  pause may be incremented and decremented. [:pp 0] resets  the
period  pause  to  its default state (approximately 540  ms.)  Period
pauses  can be incremented by 30000 ms. and decremented by -380  ms.)
All   values  outside legal range will default to the  nearest  legal
values.
Note:  Period pauses may be lengthened or shortened only by the above
method. Angle bracket notation using durations may no longer be used.
FUNCTION:                      PHONEME INTERPRETATION
COMMAND:                       [:PHoneme XX YY ON/OFF]
OPTIONS (XX YY ON/OFF):
       XX:
               ASky    Reserved for Future Use
               ARpabet         Set phonemic interpretation to
arpabet
                        phonemic alphabet
       YY:
               SPeak   Speak encountered phonemes
               SIlent  Do not speak encountered phonemes
       ON/OFF:
               ON      Set phonemic interpretation on
               OFf     Set phonemic interpretation off
PARAMETERS (DD):                      None
DEFAULT:                              Off
EXAMPLES:                             [:ph ar sp on]
DESCRIPTION:  When set, this command allows everything within  square
brackets to be interpreted as phonemic text (unless [ is followed  by
:  in  which case it is interpreted as a command). When phonemicizing
text, simply put legal phoneme strings in square brackets. This  will
allow for the preferred pronunciation of a word or phrase.   This  is
an  extremely   important function since it sets the  characters  "["
and  "]" as phoneme delimiters. This means that when this command  is
set,  all  text  and characters which appear between square  brackets
will  be interpreted as phonemic text and will be pronounced as such.
This  is  useful if you do not wish to turn this on but wish to  have
something   read  phonetically. For example, to  say  the  word  red,
simply put the phonemic string [r'ehd] in the text.  Default for this
mode is OFF.
Note:  It   is important to make sure that you close square  brackets
after  phonemic text when this command is set. Otherwise,  if  normal
text appears in square brackets, speech will sound garbled. Also,  in
previous versions of DECtalk, square brackets were nested. This is no
longer  the case. One square bracket is sufficient to close  phonemic
mode.  It  is sometimes useful to  begin a  text file with  a  closed
square  bracket  ("]") to ensure that text will  not  be  interpreted
phonemically.  Also,  the command sequence   consisting  of  an  open
square bracket folowed by a colon ("[:") is always interpreted as the
beginning  of  a  voice command and cannot be interpreted  literally.
Default  for  phonemic mode is OFF and it must  be  turned  on  by  a
special command.
FUNCTION:                             PITCH CHANGE
COMMAND:                              [:PItch DD]
OPTIONS (XX):                         None
PARAMETERS (DD):                      Pitch delta  in Hz.
DEFAULT:                              35Hz
EXAMPLES:                             [:pi   45]
DESCRIPTION:
Allows characters  or  words  specified  in the typing table   to  be
pronounced   with  a  pitch  delta  change. Useful  for  differenting
capitalized         letters         from         lower          case.
FUNCTION:                             PRONOUNCE NAME
COMMAND:                              [:PRonounce XX]Name
OPTIONS (XX):
       Name    Proper name
       Primary
       Alternate
PARAMETERS (DD):                      None
DEFAULT:                              Off
EXAMPLES:                             [:pron name] Iacocca
                                      [: pron  alternate]
DESCRIPTION:
DECtalk is now capable of pronouncing proper names with a high degree
of  accuracy.  This  should  be a great help  to  applications  which
require  peoples names and addresses to be pronounced correctly.  The
command  is  placed  in  front of the  proper  name  that  is  to  be
pronounced.

FUNCTION:                             PUNCTUATION
COMMANDS:                             [:PUnct XX]
OPTIONS (XX):
        None            No puncuation spoken; all punctuation treated
as
                       text breaks
       Some            Standard DECtalk punctuation pronunciation
       All             All  punctuation is spoken.
PARAMETERS (DD):                      None
DEFAULT:                              [:punc some]
EXAMPLES:                             [:pu  n]
DESCRIPTION:
There   are  three  modes  of  punctuation  pronunciation.   (1)   No
punctuation  is  spoken;  (2)  only non  clause-final  puncuation  is
spoken;  (3)  all  punctuation is spoken. The last  function  may  be
useful  in proofreading as well as in those applications when special
characters are encountered as in computer programs and the like.  The
default is that no punctuation is spoken.
Note:  When the [:punc none] command is used, no punctuation will  be
pronounced. This will affect dollar amounts ($3.25), percentages (5%)
and similar sequences normally processed by special rules.
FUNCTION:                             RATE SELECTION
COMMAND:                              [:RAte DD]
OPTIONS:                              None
PARAMETERS (DD):                      Rate in words per minute
                                      MIN  - 75
                                      MAX  - 650
DEFAULT:                              180 wpm
EXAMPLES:                             [:ra 400]
DESCRIPTION:
The speaking rate in DECtalk can be selected from 75 words per minute
to  650 words per minute. All values outside the range of 75-650 will
default  to  the  nearest legal value. Therefore,  if  you  select  a
speaking  rate of [:ra 880] or 880 words per minute, it will  default
to the nearest legal value or 650 words per minute.
FUNCTION:                             SAY MODE
COMMAND:                              [:SAy XX]
OPTIONS (XX):
       Clause  Speak on end of clause
       Word    Speak on end of word
       LEtter  Speak on end of letter
       LIne            Speak on end of line
PARAMETERS (DD):                      None
DEFAULT:                              [:say clause]
EXAMPLES:                             [:sa  w]
DESCRIPTION:
In  DECtalk,  each clause, word, or letter can be spoken as  entered.
In  word and letter mode, DECtalk does not need to wait for a  clause
terminator  to  begin  speaking.  This  command  interacts  with  the
speaking  rate  command so that you can set both  speaking  rate  and
speak word or letter mode for the optimal output. Word mode acts like
letter mode except text is spoken a word at a time.  A white space or
equivalent  after  a  character or string of characters  causes  that
string  to  be spoken.  This mode interacts with speaking  rate  such
that  you can increase or decrease the rate at which letters or words
are  spoken. For example, for rapid feedback of what is being  typed,
try  letter  mode with a rate of 400 wpm.  In clause  mode,  speaking
starts  when  the  PC  is  sent a clause terminator  (period,  comma,
exclamation point, or question mark followed by a white space).  This
is the normal mode where text is spoken a phrase, clause, or sentence
at a time. This mode is the default mode.
Note:  In  [:say letter] mode, the "[" character will be spoken  only
after the next character is typed since DECtalk needs to know whether
or not this is the beginning of a new command.
FUNCTION:                             RESUME
COMMAND:                              [:REsume]
OPTIONS (XX):                         None
PARAMETERS (DD):                      None
DEFAULT:                              N/A
EXAMPLES:                             [:re]
DESCRIPTION:
This  command  allows speech to be resumed where [:PAUSE]  left  off.
Any  pending  but unspoken text is retained, including index  markers
that may have been sent by the PC.  This command is asynchronous
FUNCTION:                             SYNCHRONIZATION
COMMAND:                              [:SYnc]
OPTIONS (XX):                         None
PARAMETERS (DD):                      None
DEFAULT:                              N/A
EXAMPLES:                             [:sy :pause 500]
DESCRIPTION:
The application program can send data to DECtalk faster than  DECtalk
can  speak  it.  If  the  user must carry on  a  dialogue  with   the
application  program,  the  application program should  know  whether
DECtalk has finished speaking the text sent to it. SYNC provides this
coordination between the application program and DECtalk speech. When
the PC sends SYNC, DECtalk finishes speaking  any pending text before
processing  the  next command.. Therefore, the user hears  a  message
before  any  other action starts.  Note that SYNC acts  as  a  clause
boundary, the same as a comma, period, exclamation point, or question
mark  and  a  white  space. SYNC does not reply  when  processing  is
complete.  However, you can arrange to get a reply by  following  the
SYNC  command with an INDEX QUERY command? [:synch] can also be  used
to synch otherwise asynch commands. For example, the PAUSE command is
asynchronous  but  if  it was desired to have a  pause  occur  for  a
specified  amount of time at a given place in the spoken  text,  then
the  following  syntax could be used, [:Pause 500  :SYNCH]Pause  here
before you pseak this text.
FUNCTION:                             TIMEOUT
COMMAND:                              [:TImeout DD]
OPTIONS (XX):                         None
PARAMETERS (DD):                      Timeout in seconds
DEFAULT:                              5 Seconds
EXAMPLES:                             [:timeout 4]
DESCRIPTION:
This  command  sets  the buffer flush timeout value.   DECtalk  is  a
clause  based sythnesizer and therefore looks for a clause terminator
before  starting  to speak. This function allows the  setting   of  a
timer which will cause text in the buffer without a clause terminator
to be spoken  after the specified timeout.
FUNCTION:                             TONE
COMMAND:                              [:TOne DD, dd]
OPTIONS (XX):                         None
PARAMETERS (DD):
       DD:     Tone Frequency in Hertz
       dd:     Tone Duration in milliseconds
EXAMPLES:                             [:tone 500,500]
DESCRIPTION:
This command generates sounds of different frequencies and lengths
depending upon the parameters you set. This command allows you to
make a wide variety of sounds for notification, warning, and margin
bell, for example. This may be useful when someone wishes to work in
a quiet environment without using the PC's speaker.
FUNCTION:                             TYPING  TABLE
COMMAND:                              [:TYpe DD (:) PHONE]
OPTIONS (XX):                         None
PARAMETERS (DD):
       DD      Keyboard Character codes
       :       Apply pitch shift
       PHONE   1-char phonemic alphabet (See Appendix B)
DEFAULT:
EXAMPLE:                              [:TY  32  :hxl'o]
DESCRIPTION:
Provides  the  capability to modify the built-in  typing  table  with
letters  or  words  for  specific  keyboard  codes.  The  1-character
phonemic alphabet is listed in Appendix B. The function also provides
the  capability  to specify if the default (35Hz)  or  defined  pitch
shift  should be applied  to the entry.  The [:Pitch DD]  command  is
used to define the pitch  delta.

FUNCTION:                             VOICE SELECTION
COMMAND:                              [:Name X]
                                      [:NX]
OPTIONS (X):
        Paul , Betty , Harry , Frank , Dennis , Kit , Ursula , Rita ,
Wendy,  Val.
PARAMETERS:                           None
DEFAULT:                              Paul voice
                                      Val = Paul
EXAMPLES:                             [:name harry]
                                      [:nh]
DESCRIPTION:
[:name  X] allows voices to be changed to one of 9 hard-coded  voices
or  to  a special definable voice. X represents the mnemonic for  one
of the voices: P = Paul, H = Harry, F = Frank, D = Dennis, B = Betty,
U  =  Ursula, R = Rita, W = Wendy, K = Kit. and V = Val.  The default
voice is Paul. The parameters of any one voice may be changed by  the
define voice [:dv] command.
FUNCTION:                             VOLUME
COMMANDS:                             [:VOlume XX DD]
OPTIONS (XX):
       Set:    Set the volume to the desired level
       Up:     Increase the volume by the desired amount
       Down:   Decrease the volume by the desired amount
PARAMETERS (DD):                      Volume or delta volume
DEFAULT:                              5
EXAMPLES                              [:volume up 3]
                                      [:vo 20]
DESCRIPTION:
Volume in DECtalk can be controlled by a manual volume control on the
speaker  or by a software-controlled volume setting on the PC  board.
The  volume command controls the setting on the PC board. It sets the
speaker  volume in increments from 0 to 99. Increments or  decrements
of  10 to 20 cause perceptible increase or descrease in volume.   The
default  volume  level  is 5. [:volume set] is an  absolute  command;
[volume  up] and [volume down] are relative commands which  increment
or  decrement the original value respectively. The volume command  is
asynchronous.
Note:  It  is recommended that the normal operation be set below  95.
Volume  above 95 would be excessively loud and an overload  condition
could  result.  No  damage will occur, but the  unit  could  go  into
overload  protection mode. The audio output contains  self-protection
circuitry which guards against shorts or overloads. This will  result
in  reduction or cessation of output and may take several seconds  to
recover  after  the  short  or  excessive  overload  is  encountered.
Thisdelayed recovery is normal.
Note:  The  command [:lo] used in earlier versions of DECtalk  is  no
longer  used  and  has  been replaced by the G5 parameter  used  with
[:define voice]. To adjust the volume on DECtalk other than using the
volume  control knob on the speaker, it is recommended that  you  use
the [:volume] command.
DECTALK TSR Commands
        A  seperate description page is provided for each DECtalk TSR
command.  The format is as follows: COMMAND: The command name,  CODE:
The  command  function  code, FUNCTION: a brief  description  of  the
commands  function; TYPE: The type of command e.g.  Status,  Control,
etc.;  Description:  A  more  detailed description  of  the  commands
function  and  use; Example: An example using  the  command;  Related
Commands: Any commands with related or reciprocal functionality.
COMMANDCode    FUNCTION
BUFF_FREE      0x1d    Bytes remaining in the input buffer
TYPE
Status
Description
Provides the number of bytes remaining in the DECtalk input buffer.
Example
Related Commands
COMMANDCode    FUNCTION
BUFF_USED      0x1f    Input buffer bytes used
TYPE
Status
Description
Provides   the  number  of bytes  being used  in  the  DECtalk  input
buffer.
Example

Related Commands
COMMANDCode    FUNCTION
DECTALK_EXIT   0x01    Remove the TSR
TYPE
Control
Description
       Remove the DECtalk TSR, DT_DRIV, from the PC memory and
restore things to their original state.
Example

Related Commands
COMMANDCode    FUNCTION
DECTALK_ID     0x01    ID for INT2F multithreaded interrupt
TYPE
       Status
Description
ID to pass in the .ah to the multi-threaded interrupt (INT2F)
Example
       RB.ah = DECTALK_ID
Related Commands
COMMANDCode    FUNCTION
DECTALK_RESET  0x27    Reset DECtalk
TYPE
Control
Description
Resets the DECtalk PC module.
Example

Related Commands
COMMANDCode    FUNCTION
DECTALK_TEST   0x02    Test for DECTalk TSR
TYPE

Description
Returns a TSR_SUCESS if a DECtalk TSR is installed.
Example
Related Commands
COMMAND        Code    FUNCTION
DIGITIZED_DATA         0x1a    Send Digitized Data
TYPE
Control
Description
Same as a SEND_BUFF but with digitized data instead of text data.
Example
         digitize (buffer, size of (buffer))
         ,
         ,
         ,
         digitize (unsigned char_far *
Related Commands
COMMAND        Code    FUNCTION
DIGITIZED_MODE 0x18    Digitized Mode
TYPE
Mode
Description
Put   DECtalk  into  digitized  speech  mode.  Once  DECtalk  is   in
DIGITIZED_MODE,  there are only two tasks that can  be  accomplished,
Digitized data can be sent to the DECtalk to be played or the DECtalk
can be switched back to TEXT_MODE.
Example
First, the DECtalk has to be in the DIGITIZED_MODE mode.  This is
done
 by having the al register set to the DIGITIZED mode and the bx
register
 set to 0.
        unsigned int dtpc_cmd(DIGITIZED_MODE)
        unsigned char DIGITIZED_MODE;
        {
               union   _REGS   tsr_regs;
               do {
                       tsr_regs.h.ah = DECTALK_ID;
                       tsr_regs.h.al = DIGITIZED_MODE    /* 0x18 */
                       tsr_regs.x.bx = 0;
                       tsr_regs.x.si = voc_module;
                       _int86(0x2f, &tsr_regs, &tsr_regs);
                       } while (tsr_regs.x.ax == TSR_BUSY);
                return(tsr_regs.x.ax);
        }

The DIGITIZED file then has to be played by the DECtalk.  In dtdemo,
this
is accomplished by the play_sb() function.  This function checks to
see
if it is a playable DIGITIZED file by checking the header of the
file.

After being played, the DECtalk needs to be put back into text mode
before
it can start speaking again.  This is done by the al register being
set to
the TEXT_MODE mode and the bx register being set to 0.

        unsigned int dtpc_cmd(TEXT_MODE)
        unsigned char TEXT_MODE;
        {
               union   _REGS   tsr_regs;
               do {
                       tsr_regs.h.ah = DECTALK_ID;
                       tsr_regs.h.al = TEXT_MODE    /* 0x19 */
                       tsr_regs.x.bx = 0;
                       tsr_regs.x.si = voc_module;
                       _int86(0x2f, &tsr_regs, &tsr_regs);
                       } while (tsr_regs.x.ax == TSR_BUSY);
                return(tsr_regs.x.ax);
        }

Related Commands
TEXT_MODE
DIGITIZED_DATA
COMMANDCode    FUNCTION
FLUSH_CHAR     0x2a    Flush pending and speak character
TYPE
Control
Description
        Flushes  any  speech  pending in the  DECtalk  and  says  the
character.  This provides a rapid flush-and-speak-key function.  This
function  uses a built-in translation table to convert characters  to
the   sound  equivalence,  and  sends  the  result  directly  to  the
synthesizer itself, bypassing significant pieces of the DECtalk code.
.  In addition, a means of assigning pitch to a character (such as an
upper-case character) has been provided.
The  typing  table  itself  may  be modified  so  that  keys  can  be
redefined. A global delta pitch command is also provided to  set  the
change in pitch. Its default is a 35 hertz increment. The syntax  for
changing the typing table is:
               [:type (character in decimal) (1-character phonemics]
For  example, to change the space-bar character from default  to  say
"hello"  with elevated pitch enter the following command.  The  colon
character  specifies elevated pitch (normal pitch plus 35Hz  for  the
default and the apostrophe before the vowel indicates stress.)
               [:type 32 :hxl'o]
The  phonemics  are  represented by a  special  1-character  phonemic
alphabet described in Appendix C.
Example
           case 't':   /* Typing demo.  uses the flush_char function */
             printf("%s\n",typing);
            if (spoken) sendb(typing,sizeof(typing));
            sendb(rate,sizeof(rate));       /* change speaking rate */
                do{
                   inchar = (char)_getch();     /* get character from
keyboard until an '*' */
                   flush_char(inchar) /* used in typing mode to speak faster
*/

flush_char(unsigned char fchar)
{

     RB.ah = DECTALK_ID;
     RB.al = 0x2A;
     RB.bl = fchar;
     RW.si = 0;
     _int86(0x2f, &regs, &regs);
     return(1);
}

Related Commands
COMMAND        Code    FUNCTION
FLUSH_SPEECH           0x1b
TYPE
Control
Description
        Flush  speech but process all commands until an [:enable]  is
seen.  Then  start speaking again. This command is  slower  than  the
flush_text command.
COMMANDCode    FUNCTION
FLUSH_TEXT     0x17    Flush pending text
TYPE
Control
Description
        Flushes  all pending text in the DECtalk buffer. This  is  an
asynchronous  flush and cannot guarantee to flush every character  in
process,  if  sending buffers. This will always work, however,  if  a
flush  is also then inserted in the text stream. The stream flush  is
recommended when it can be used. This function is provided so that if
the  DECtalk is I/O bound with large text buffers, it can be  flushed
quickly,  asynchronously to the text stream.  (See [:flush  all]   in
the Speech Control Commands table).
Example
   case 'f':                          /* Stop speaking and FLUSH */
              sendb (testb,sizeof(testb));
              flush();                        /* asynchronously flush
the dectalk */
              break;


flush()
{
     do{
     RB.ah = DECTALK_ID;
     RB.al = FLUSH_TEXT;
     RW.si = 0;
      _int86(0x2f, &regs, &regs);
     }while(regs.x.ax == TSR_BUSY || regs.x.ax == TSR_RETRY );
     return(1);
}

Related Commands
[:flush all]
COMMANDCode    FUNCTION
GET_BUFF       0x0b    Get a character buffer
TYPE
Control
Description
        Gets  a  buffer  of information from the DECtalk.  Assumes  a
fixed  buffer size of 256. The segment address is in the .dx and  the
offset  address is in the .bx. The segment and offset passed  in  the
.dx   and   .bx  registers  is  a  pointer  to  a  structure   called
DECTALK_CHAR_BUFF found in the DTTSR.H file. It contains a count  and
a pointer to the actual buffer (256 bytes  maximum).
Example

Related Commands
COMMANDCode    FUNCTION
GET_CHAR       0x09    Get a character.
TYPE

Description
        Gets  a  character  from DECtalk. Get a character  may  cause
unpredictable results if the TSR does not have a character.
Example
Related Commands
COMMANDCode    FUNCTION
GET_STATUS     0x03    Get current status
TYPE
Status
Description
Obtain  the  comm status information  from the dx registers  and  the
DECtalk version number from the bx register.
Example
In dtdemo.exe;

status();

status()
{
       do{
            RB.ah = DECTALK_ID;
            RB.al = GET_STATUS;
             RW.al = 0;
             _int86(0x2f, &regs, &regs);
       }while(regs.x.ax == TSR_BUSY || regs.x.ax == TR_RETRY);
       printf("The DECtalk version number is %d \n",RW.cl);
}

Related Commands
COMMANDCode    FUNCTION
IMMD_COMMA     0x23    Immediate comma pause
TYPE
Control
Description
       Change the comma pause at the next clause boundary.
Example

Related Commands
COMMANDCode    FUNCTION
IMMD_PERIOD    0x22    Immediate Period Pause
TYPE
Control
Description
       Change the period pause value at next clause boundary.
Example

Related Commands
COMMANDCode    FUNCTION
IMMD_RATE      0x21    Immediate Speaking  Rate
TYPE

Description
       Change the speaking rate at next clause boundary.
Example

Related Commands
COMMANDCode    FUNCTION
IMMD_VOICE     0x20    Immediate Voice Selection
TYPE
Control
Description
Change the voice at next clause boundary.
Example
Related Commands
COMMAND        Code    FUNCTION
IMMD_RATE_DELTA       0x29
TYPE

Description
Change the speaking rate by a delta  at the next clause boundary.
Example

Related Commands
COMMANDCode    FUNCTION
INSTALL_CHECK  0x00    TSR Installation Check
TYPE
Status
Description
Checks to see if the DECtalk TSR is installed. Returns  INSTALLED  in
the .si if true.
Example  /*
 *...check to see if the tsr is already installed, if so then just
print
 *  the switches and exit ...
 */
       parse_switch(argc,argv);
               RB.ah = DECTALK_ID;
               RB.al = INSTALL_CHECK;
               RW.si = INSTALL_CHECK;
               _int86(0x2f, &tsr_regs, &tsr_regs);
               if (RB.al == INSTALLED)
                       {
                       printf("\nDECtalk tsr already installed");
               usage();
                       }
Related Commands
INSTALLED
COMMANDCode    FUNCTION
INSTALLED      0xFF    Board Installation Status
TYPE
Status
Description
       Returned in the .al
Example
See INSTALL_CHECK.
Related Commands
INSTALL_CHECK
COMMANDCode    FUNCTION
IO_PRIORITY    0x26    Set I/O Priority
TYPE
Control
Description
        Set  the  comm  task inside DECtalk to the highest  priority.
This  results  in much faster indexing which should be the  preferred
setting in most cases. The  .cx must be set to 1.
Example
io_prior()
{
     do{
     RB.ah = DECTALK_ID;
     RB.al = IO_PRIORITY;
     RW.cx=1;
     RW.si = 0;
      _int86(0x2f, &regs, &regs);
     }while(regs.x.ax == TSR_BUSY || regs.x.ax == TSR_RETRY );
     return(1);
}

Related Commands
COMMANDCode    FUNCTION
LAST_INDEX     0x25
TYPE
Control
Description
        Return the last seen index as an int  in the .c  register. It
returns  a  TSR_RETRY if it has not processed any indexes  since  the
last request.
Example
          case 'i':             /* see last indexed processed */
        count=get_index();              /* get index */
         if (count == -1 )
             {
                 printf("%s",nonew);
             if (spoken) sendb(nonew,sizeof(nonew));
             }
             else
            {
            num[0]=(char)count;
            num[1]='\0';
                printf("%s%d",indexnum,count); */
         if (spoken) sendb(indexnum,sizeof(indexnum));   /* print and
say index */
          if (spoken) sendb(num,sizeof(num));
            }
                break;

get_index()
{
     do{
     RB.ah = DECTALK_ID;
     RB.al = LAST_INDEX;
     RW.si = 0;
   _int86(0x2f, &regs, &regs);
     }while(regs.x.ax == TSR_BUSY );
     if ( regs.x.ax == TSR_RETRY )
          {
          return(-1);
          }
     if ( regs.x.ax == TSR_FAILURE )
          printf("tsr get_index failed");
     return(regs.x.cx);
}
Related Commands
COMMANDCode    FUNCTION
PAUSE_OUTPUT   0x15    Pause speech output.
TYPE
Control
Description
Pauses  the output of the DECtalk. Speech can be resumed  by  issuing
the RESUME_OUTPUT command.
Example
stopit()
{
     do{
     RB.ah = DECTALK_ID;
     RB.al = PAUSE_OUTPUT;
     RW.si = 0;
      _int86(0x2f, &regs, &regs);
     }while(regs.x.ax == TSR_BUSY || regs.x.ax == TSR_RETRY);
     return(RW.ax);
}

Related Commands
RESUME_OUTPUT
COMMAND        Code    FUNCTION
Reserved                       0x07   /* allocate memory */
Reserved                       0x0c
Reserved                       0x0d
Reserved                       0x0e
Reserved                       0x0f
Reserved                       0x10
Reserved                       0x11
Reserved                       0x12
Reserved                       0x13
Reserved                       0x14
TYPE
Reserved
Description
Reserved commands
Example
Related Commands
COMMAND        Code    FUNCTION
RESUME_OUTPUT  0x16    Resume Speaking
TYPE
Control
Description
Resume speaking after a pause.
Example
    case 'c':          /* Resume speaking after a stop.*/
              resume();
              break;


resume()
{


     do{
     RB.ah = DECTALK_ID;
     RB.al = RESUME_OUTPUT;
     RW.si = 0;
     _int86(0x2f, &regs, &regs);
     }while(regs.x.ax == TSR_BUSY || regs.x.ax == TSR_RETRY);
     return(RW.ax);

}
Related Commands
PAUSE_OUTPUT
COMMANDCode    FUNCTION
SEND_BUFF      0x0a    Send buffer
TYPE
Control
Description
        Send a character buffer.  Assumes a fixed buffer size of 256.
The  segment address is in the .dx and the offset address  is in  the
.bx. The segment and offset passed in the .dx and .bx registers is  a
pointer  to a structure called DECTALK_CHAR_BUFF found in the DTTSR.H
file.  It  contains a count and a pointer to the actual  buffer  (256
words  maximum). On return, the count is set to the number  of  bytes
actually tranferred.
Example
 case 'l':     /* Send a file to the DECtalk to read*/
               printf("%s\n",name);                /* Prompt */
               if (spoken) sendb(name,sizeof(name));
               sendb(sayl,sizeof(sayl)-1);

sendb(unsigned char __far *thebuf,int count)
{
     struct  dectalk_char_buff   cb;
     struct  dectalk_char_buff   _far *cbp;
     cb.buff=thebuf;
     cb.count=count;
     cbp = &cb;

     do{
     RW.bx = FP_OFF(cbp);  /* put offset to char buff struct in bx */
     RW.dx = FP_SEG(cbp);  /*put segment in dx */
     RB.ah = DECTALK_ID;
     RB.al = SEND_BUFF;
     RW.si = 0;
      _int86(0x2f, &regs, &regs);
     }while (regs.x.ax == TSR_BUSY || regs.x.ax == TSR_RETRY);
     return(RW.ax);

}

Related Commands
COMMANDCode    FUNCTION
SEND_CHAR      0x08    Send a character.
TYPE
Control
Description
       Send the character in the .bl to the DECtalk.
Example
send_char(unsigned char schar)
{

     do {
     RB.ah = DECTALK_ID;
     RB.al = SEND_CHAR;
     RB.bl = schar;
     RW.si = 0;
      _int86(0x2f, &regs, &regs);
     }while( regs.x.ax == TSR_BUSY || regs.x.ax == TSR_RETRY);
     return(RW.ax);
}

Related Commands
COMMANDCode    FUNCTION
TEXT_MODE      0x19    Text Mode
TYPE
Mode
Description
Puts  the DECtalk into text-to-speech mode. This is the default mode.
It  also  has to be issued if the DECtalk had previously been  placed
into the digitized mode.
Example
Related Commands
DIGITIZED_MODE
COMMAND        Code    FUNCTION
VOLUME_DOWN            0x05    Decrease volume.
TYPE

Description
         Decrease  the volume by the amount specified in .bl.
Example
See VOLUME_UP
Related Commands
VOLUME_UP
COMMANDCode    FUNCTION
VOLUME_UP      0x04    Increase volume
TYPE
Control
Description
        Increase  the volume by the amount specified in .bl  Values??
range??**
Example
up_vol()
{
     do {
     RB.ah = DECTALK_ID;
     RB.al = VOLUME_UP;
     RB.bl=1;
     RB.dl=0;
     RW.si = 0;
      _int86(0x2f, &regs, &regs);
     }while(regs.x.ax == TSR_BUSY || regs.x.ax == TSR_RETRY);
     return(RW.ax);
}

Related Commands
VOLUME_DOWN
COMMANDCode    FUNCTION
VOLUME_SET     0x06    Set volume.
TYPE
Control
Description
        Set  the volume to amount specified in  the bl . The range is
0-100 and the default value is 5.
Example
      case 'v':         /* Set the volume to a specific level */
                printf("%s",invol);                       /* Prompt */
                if (spoken) sendb(invol,sizeof(invol));
                i=0;
                while ((chbuf[i] =  (char)_getch()) !='\r')
               {                                     /*Get input */
                   if (spoken) flush();      /*Flush speech if spoken.
*/
                   putchar(chbuf[i]);                    /* Echo input
*/
                   if (spoken) send_char(chbuf[i]);    /* Audible echo
*/
                   send_char('\013');
                   i++;
                   }
                chbuf[i]='\0';
                _cputs("\r\n");
                vol=atoi(chbuf);                /* Convert to a number
*/
                if ((vol > 100) || vol<0)
               {                                 /* Is input in range
*/
                   printf ("%s,%d\n",volset,vol);
                   if (spoken) sendb(volset,sizeof(volset));
                   break;
                   }
                set_vol(vol);                     /* Go set the volume
*/
                break;

Related Commands
                                
                            CHAPTER 4
                          TEXT PROCESSING
                                
         This  chapter  describes how DECtalk processes  numbers,
abbreviations, and acronyms, and how it decides whether a word is
pronounceable. It also includes suggestions for correcting spoken-
output.
TEXT PROCESSING RULES
DECtalk  processes  text to be spoken by applying  the  following
rules in this order:
        1. The input text stream is broken into groups of letters
delimited  by whitespace characters (spaces, tabs,  or   carriage
returns).
         2. If the letter string is not already phonemic text and
is  to  be converted, any understandable numbers are expanded  to
their word equivalents.
         3.  Some  abbreviations are expanded to their  full-word
equivalents.  DECtalk uses a list of numeric  abbreviations   and
rules  for  a  few  special cases. The user-definable  dictionary
cannot override this conversion.
         4.  Each  letter  string  is broken  into  pronounceable
entities.   Punctuation  (including  parentheses  and   quotation
marks),  hyphenated words, and sequences that must be spelled out
are  analyzed.  Some abbreviations and acronyms are   recognized,
plus any entries from the definable dictionary.
         5.  Any  text that DECtalk recognizes as unpronounceable
(for  example,  a sequence of letters containing  no  vowels)  is
spelled  out. DECtalk contains intelligent strategies for  upper-
case initialisms (e.g., ABC, FBI and the like).
A few rules operate on sequences of words. Interspersing phonemic
symbols  or  DECtalk commands will block these rules.  Therefore,
make sure that spoken  text is as contiguous as possible and keep
breaks   in   structure   (from  English  spelling  to   phonemic
transcription) to a minimum.
The following terms are used below:
Character:   Any  of  the  printable ASCII characters,  including
letters, digits, and punctuation.
Digit  string:  A  string  of  digit characters  (0  through  9).
DECtalk decides whether these should be  pronounced as numbers or
independent characters.
Number:  A  string  of characters (containing  digits)  that  are
processed as a group by DECtalk. For example, "123" is pronounced
"one  hundred  and  twenty-three," while  "1(2)3"  is  pronounced
"one,  two  three" with punctuation disabled, ([:punc  none])  or
"one   left-parenthesis  two  right-parenthesis    three."   with
punctuation enabled ([:punc some]).
NUMBER PROCESSING
     DECtalk recognizes seven general number classes, and a large
number of special cases and subclasses. The general classes are
as  follows:
Part numbers Strings of mixed letters, digits, and the - and /
characters.
Cardinal numbers    The simple numbers that are used in counting.
Examples include "123," "123,456," "12.345,"  "01234,"  and
"12%."
Ordinal numbers Simple strings of numbers with "st," "nd,"  "rd,"
or "th" added, for example, "1st" and  "23rd."
Fractions  Examples are "1/2," "2/3," and "44/100%."
Money    Recognized as the first character  of a string of digits
by the presence of a dollar sign ($) or a pound sign.
Dates    In  the format (23-Sep-1983), and expandable into  their
English equivalent.
Time  of  day    In the 24-hour format of some operating  systems
(11:04:03.02), spoken  in its English equivalent. The words  "am"
and   "pm" are correctly processed after time  values. (Note that
"am" and "pm" contain no periods.)
PART NUMBERS
A  part  number is defined as a string of mixed letters,  digits,
and   the - and / characters, containing at least one digit.  The
following are examples of part numbers.
        DTC07-AM
        MS-DOS V3.1
        54-15966-01
DECtalk  first attempts to find the part number in the developer-
definable  and   fixed dictionaries. If it is  unsuccessful,   it
breaks  the   part  number into strings of  letters,  strings  of
digits, and  separators.
A series of alphanumerics separated by / is spelled out.  DECtalk
correctly  speaks part numbers of the format XXX/YYY.
A string of digits within a part number is spoken as follows.
        1. If the digit string begins with 0 or is more than nine
digits  long,  it is spelled out ("VS01" becomes "vee  ess   zero
one").
        2. One or two-digit strings are spoken as normal cardinal
numbers ("PDP-11" becomes "pee dee pee eleven").
         3.  Three-  or four-digit strings that end with  00  are
spoken  as normal cardinal      numbers ("VT100" becomes "vee tee
one  hundred").
         4.  Other three-digit strings are spoken as "digit, pair
of digits" ("VT320" becomes      "vee tee three twenty").
         5.  Other four-digit strings are spoken as "pair, pair."
("DEC 2040" becomes "deck twenty forty.") Note that if the second
pair  begins with 0, it is pronounced "zero" ("IBM 1401"  becomes
"eye bee em fourteen zero one").
An alphabetic string is spoken as follows.
         1.  One-  or  two-character  strings  are  spelled  out.
("VT100" becomes "vee tee one hundred").
         2.  Longer  strings are searched for in  the  developer-
definable and fixed dictionaries. If they are not found, they are
spelled out  ("DEC 2040" becomes "deck twenty forty").
DECtalk  cannot  handle all possible part numbers perfectly.  The
following   examples  of  part  numbers  are  inconsistent   with
DECtalk's  number and text processing algorithms.
CICS/VS         Not a part number -- no digits.
net10000         "Net"  is  spelled out since  it  isn't  in  the
dictionary.
1E-14            DECtalk will interpret this number as scientific
notation if [:mode math] is on.
When  processing numbers and number words, DECtalk first  removes
leading  and trailing punctuation. DECtalk translates "(123)"  as
"one hundred and twenty-three."
CARDINAL NUMBERS
A  cardinal number is a string of digits. If commas are included,
they  must  break  numbers into groups  of  three.  For  example,
"123,456"  is correct, but "1234,56" is not. The latter  will  be
spelled out as "one two three four comma five six."
Cardinal numbers may also include decimal fractions ("12.34") and
scientific  notation  ("12.34E56"). In scientific  notation,  the
exponent must be less than 100.
A  cardinal number preceded by + or - will be spoken as "plus" or
"minus" whether or not [:mode math ...] is on. The notation ñ  is
pronounced as "plus or minus."
If the first digit is 0 ("01234"), the number will be spoken as a
string of digits as would be appropriate when reading postal  zip
codes.
If the number is greater than 999,999,999, it will be spoken as a
string  of digits with pauses between each group of three digits.
If  commas are provided, they will control the pause behavior. If
not,  the  output  will pause after each group of  three  digits,
provided six or more digits remain. Therefore, "12345678901" will
be spoken as "123, 456, 78901" rather than "12,345,678,901."
Four-digit  numbers without commas are spoken  in  a  variety  of
formats.  For  example,  "5000" becomes  "five  thousand,"  while
"1984"  becomes  "nineteen eighty-four." This  yields  reasonable
behavior when processing years.
Sometimes  DECtalk does not understand the text  well  enough  to
pronounce the number correctly. Here are some examples.
         The telephone number "(617) 493-8255" will be spoken  as
"six  hundred  and seventeen, four ninety three dash  eight   two
five  five."  You can correct this by using one of the  following
steps.
         1.  Spell  out the digits as "six one seven,  four  nine
three, eight two five    five" (notice the commas to make DECtalk
pause at appropriate places).
         2. Separate the digits with spaces and commas: "6 1 7, 4
9 3, 8 2 5 5."
The   software  cannot  easily  distinguish  between  "dash"  and
"minus."
How much is 10-15?
Bake this 10-15 minutes.
The [:mode math ] option determines whether the "-" is pronounced
as  "dash"  or "minus." Neither will be pronounced if punctuation
is disabled ([:punc none]).
Some  number  formats are difficult to recognize out of  context.
For   example, the International Standard Date format  (83.09.20)
and the  United States telephone number format (noted previously)
are  sometimes  used  by manufacturers for  part  numbers.  These
ambiguous formats are not recognized by DECtalk and you must make
such manual adjustments if you wish them to be pronounced in some
special way.
After  a  cardinal number, DECtalk recognizes a set  of  standard
numeric   abbreviations  that  are  expanded  to  their   English
equivalent. These abbreviations are coded into DECtalk and cannot
be  modified  by  the applications programmer. DECtalk  correctly
generates  singular and plural forms of these abbreviations.  For
example, 1 mm. is pronounced as "one millimeter" whereas 2 mm. is
pronounced as "two millimeters".
The  numeric abbreviations recognized by DECtalk after a cardinal
number  are listed below. You can write them in either  uppercase
or lowercase letters, but you must follow them by a period.
Other  abbreviations, such as "cc.," are spelled out by  DECtalk.
The  period  that follows such an abbreviation is not  pronounced
("cc."  becomes "see see") but terminates the clause,  while  the
period in number abbreviations does not terminate the clause.
     ORDINAL NUMBERS
Ordinal  numbers  are formed from a string of  digits  (that  may
contain  appropriate  commas) followed by "st,"  "nd,"  "rd,"  or
"th."   Ordinal  numbers  are  also  generated  by  DECtalk  when
fractions and  dates (in standard Digital format) are processed.
DECtalk  requires that the word portion of the ordinal number  be
correct.  For  example,  "1st" will be processed  correctly,  but
"2th"  will be pronounced "t'uw t'iy 'eych."
     FRACTIONS
Fractions  consist of one or two digits in the numerator,  the  /
character,  and  one  to  three digits in  the  denominator.  The
numerator may range from 1 to 99, while the denominator may range
from  1  to  100. DECtalk correctly generates singular (1/3)  and
plural (2/3) forms.
     MONEY
DECtalk assumes a digit string is money when it is introduced  by
the currency symbols $ or œ.
When the $ or œ is recognized, DECtalk allows two forms of number
strings.
         General  digit strings have optional decimal  fractions.
$12.345. is pronounced "Twelve point three four five dollars ."
         Digit  strings are in dollars and cents  (or  pound  and
pence)  format. $12.34  is pronounced "Twelve dollars and  thirty
four cents."
DECtalk recognizes a number of quantity words (hundred, thousand,
million) that modify number processing if they immediately follow
the  money word. For example, "$1.23 million" is pronounced  "one
point two three million dollars."
     DATES
DECtalk  recognizes  dates  written in  Digital's  standard  date
format, such as "23-Sep-1983," "23-Sep," or "23-Sep-83." However,
it  will  pronounce  "Sep. 23, 1983" as "September  twenty-three,
nineteen eighty-three."
     TIME OF DAY
DECtalk  recognizes the time of day when written  in  the  format
used   by  Digital  operating systems. Because  this  format  can
easily be confused with part number formats, DECtalk does not try
to  convert the digit string. Instead, it speaks the string  with
appropriate punctuation. Therefore, "12:00" becomes "twelve, zero
zero", rather than "twelve noon".
DECtalk correctly processes time values, including the fractional
second value when it is present.
ABBREVIATIONS
DECtalk   recognizes,  expands,  and  selects  from  a   set   of
abbreviations taking into the account that the abbreviations  may
be ambiguous.
     ABBREVIATIONS PROCESSED BY DECTALK
In  addition to the abbreviations that are recognized only  after
cardinal numbers, DECtalk recognizes two special cases, "Dr." and
"St." The pronunciation of these abbreviations depends on whether
the next word is capitalized.
         If  the next word is not capitalized or if there  is  no
next  word  (the  clause  has ended), then  "Dr."  is  pronounced
"drayv" and "St." is pronounced "striyt". The  next word must  be
on the same input line for the rule to work correctly.
        If the next word is capitalized, then "Dr." is pronounced
"d'aaktrr" and "St." is pronounced "seynt".
Following these rules, DECtalk correctly pronounces "Doctor Dobbs
Drive" and "Saint Louis Street" in running text.
        Abbreviations in the Built-In Dictionary
         The  following  are  some  of the  common  abbreviations
recognized  by  DECtalk  (in alphabetical order);  In  dictionary
lookups,  upper case entries match uppercase only  but  lowercase
entries match either upper or lower case.

Adm.  Apr. Assoc. Aug. Av. Ave. Blvd. Bros. Ch. Cntr. Co.  Comdr.
Corp. Ctr. Dec. Dept. Dist. Feb. Flt. Fr. Fri. Ft. Gen. Gov. Inc.
Intl.  Jan. Jr. Jul. Jun. Ltd. Mar. Mfg. Mon. Mt. Nov.  Oct.  Pl.
Pres. Prof. Rd. Rep. Rev. Rte. Sat. Sen. Sep. Sept. Sr. Sun. Thu.
Thurs.  Tue.  Tues. Univ. Vol. Wed. asst. atty.  bldg.  cm.  cms.
cont.  cu.  deg. doz. e.g. esp. est. etc. ext. fig. fn.  ft.  gm.
hrs.  i.e. kg. kgs. km. lb. lbs. mg. mgs. misc. ml. mm. mr.  mrs.
ms.  msde.  msec. msecs. mss. nt.wt. op.cit. oz. ozs. p.p.d.  pp.
ppd. recd. secy. sq. tbsp. tbsps. tsp. tsps. vs. yds.

If  the  abbreviation can be recognized by DECtalk during  number
processing,  then  the English text form of the  abbreviation  is
spoken.  Otherwise,  the  built-in  dictionary  form  is  spoken.
Dictionaries (developer-definable and fixed) are searched in  the
order in which they are loaded.  The numeric abbreviations can be
blocked by  including a dummy phonemic string, for example, "1  [
]ft. 3."
Dictionary  entries  that contain only uppercase  letters,  match
text  words that contain uppercase letters in the same positions.
However,  the  entries that contain only lowercase  letters,  may
match  text  words  that  contain either lowercase  or  uppercase
letters in the same positions.
"Apr."  matches  "APR."  but  not "apr."  This  is  necessary  to
distinguish  between  words at the end of a  sentence  and  valid
abbreviations, such as "mar" (to damage) and "Mar." (for March).
If a word in the above list is written with a terminating period,
you   must  include that period in the input text. Otherwise,  it
will not terminate  the current clause. For example, It weighed 3
kgs. will not terminate the clause, but  It weighed 3 kgs.. (note
the second period) will terminate the clause.
WORD SPELLOUT STRATEGIES
After number processing, DECtalk must decide whether to pronounce
a string of characters as a single word or a compound word, or if
it  must  be  spelled out. DECtalk uses the fixed and  developer-
definable  dictionaries and a series of word  transformations  to
make this  decision.
WORD SPELLOUT TESTS
Number  conversion, number abbreviations, and the  "Street/Saint"
test  have all been performed before DECtalk begins the  decision
tests. Punctuation has not yet been removed.
        1. DECtalk looks for the word in the dictionaries. Again,
dictionaries are searched in the order in which they were loaded.
If the  word is found in any one of the dictionaries,  the search
stops.)
                  The   dictionary   lookup  procedure   involves
decomposing words into simpler forms by stripping affixes such as
-ed  and  -ing. If the word is found in  the dictionary,  DECtalk
speaks the associated phonemic  transcription.
         2.  If the word is not found, any punctuation around the
word
is  removed. If present, the punctuation symbols " ( (( <<   <  [
are  removed  from  the front of the word, and  the   punctuation
symbols " ) )) >> > ] are removed from the end  of the word.  The
square  brackets  [  ]  are  already  discarded  if  the  command
[:phoneme arpabet speak on] has been given
        3. If some punctuation was removed, DECtalk performs a
special test for abbreviations "(e.g., Gen., Gov.,)" and embedded
sentence punctuation ("I went (last year?) to school").
        4. Next, DECtalk looks for initialisms. (An initialism is
a
word  written as a string of uppercase letters that may  or   may
not  be  separated  by  ".") For example, the  string   "APO"  is
pronounced  as  "ey pee oh." Other strings with embedded  periods
may be spelled out.  If an initialism is recognized, the last "."
will  terminate the clause, unless it is followed by  some  other
punctuation.
          DECtalk  also  looks  for  relatively  short  sequences
(typically  3-4  letters)  of  all uppercase  characters  without
periods  and treats these as initialisms. If these are determined
(by  a  special  set  of internal rules) to be  non-pronounceable
(e.g.,  ABC, FBI, IBM, etc.) then DECtalk will spell the  string.
This is a new feature of DECtalk.
        5. At this point, all diacritical marks are removed.
        6. If the word is still not found, it is examined for
hyphenation   (as   in  compound  nouns)  and  the   single-quote
character.  A test is also performed to make sure  any  word   or
word  fragment  has enough consonants and vowels.  If  the   test
fails, the word is spelled out.
        This test makes sure that the word does not contain
embedded  punctuation. A word like "sys$system" is  spelled   out
except when the command [:punc none] is given.
        7. If DECtalk decides the word is pronounceable, it
processes  each  part of a compound noun independently.  If   the
word is not in the dictionary, it is processed by the  letter-to-
sound rules.
        8. If the word was pronounced, DECtalk examines the
punctuation  after  the word for silence or clause   terminators.
The punctuation marks " ) ] )) produce a  brief silence (only one
silence  is produced, even if  several characters are processed).
The punctuation marks  ; : ! , . ? terminate a clause.
         9. If DECtalk decides that the word must be spelled out,
the
entire word is spelled, including left and right  punctuation. If
the  last  letter  of  the word is a clause   terminator,  it  is
considered punctuation and is not  spelled.
         10.  A  single letter, digit, or other character  within
quotes
or   parentheses  is  spelled  out  (but  the  punctuation  isn't
spoken).  "aA""  is pronounced "[aey]" rather  than  "uh."   This
helps DECtalk process lists such as the following.
                (a) books
                (b) newspapers
        11. Brackets, parentheses, and braces act as commas,
producing    a    clause   boundary.   Therefore,   parenthetical
expressions (such as this one) sound more natural.
         12.  When  text is spelled out, a brief pause  is  added
after  each  character. This makes it easier to transcribe  text,
such as part numbers.
Homographs
Homographs  are  pairs of words whch are spelled  alike  but  are
pronounced  differently (from homo 'same' and  graph  'writing').
For  example, refuse as a verb can mean 'to decline' or  'reject'
and  as a noun can mean 'garbage.'  DECtalk V4.1 will do many  of
these  alternate  forms  automatically.   For  example  it   will
automatically disambiguate and correctly pronounce the  words  in
the  following sentences:
        They refused the produce.
        They produced the refuse.
As  you can see, it takes some intelligence to choose the correct
pronunciation  automatically, although DECtalk  does  very  well.
Occasionally,  however,  it is difficult  if  not  impossible  to
predict  the  correct  pronunciation  as  in  the  case  of  read
(pronouned  as  in  reed or red) since they  can  both  occur  in
identical  syntactic  contexts.  DECtalk  recognizes  a   primary
pronunciation   and  a  secondary  pronunciation.   The   primary
pronunciation  is  the  more  frequent  pronunciation.  If    the
DECtalk's   pronunciation  is  incorrect,  you  can  obtain   the
alternate  pronunciation in a number of ways: (a)  by  placing  a
slash  at  the  beginning of the word  to obtain   the  alternate
pronunciation;  (b)  by  using  the  [:pronounce   primary]   and
[:pronouce  alternate] commands (Chapter 3); (c) by phoneticizing
the word; (d) by inserting a clever misspelling.
        They'll read good books but they /read nothing yesterday.
        They'll read good books but they [:pron alt] read nothing
yesterday.
         They'll  read  good  books  but  they  [r'ehd]   nothing
yesterday.
        They'll read good books but they red nothing yesterday.

Note:  Placing a slash at the beginning of a homograph to  obtain
the  alternate pronunciation will work only if the  [:punc  some]
command is enabled.

Appendix   C   lists the pairs of common homographs that  DECtalk
knows.
                                
                            CHAPTER 5
                            PHONEMICS
                                
DECtalk PHONEMIC INPUT
This  chapter describes the phonemic (sound) system  of  English
used    in   DECtalk   and   the  ways  to   control   DECtalk's
pronunciation.
DECtalk   represents  the  state-of-the-art  in   text-to-speech
synthesis. The software shipped with DECTALK PC is the latest in
DECtalk  speech  microcode. It contains a number of  significant
improvements  over  its  predecessors.  It  will  contain  fewer
pronunciation   errors  and  will  handle   text   in   a   more
sophisticated  way.  It  should  also  sound  more  natural  and
intelligible.  Naturalness  in synthesized  speech  is  evolving
slowly   because  of  the  inherent  complexity  of   accurately
replicating human speech as well as the difficulty of adequately
defining  what naturalness itself means. However, the  developer
will  find that the use of phonemic transcription should  become
less necessary with this added sophistication.
Note:   DECtalk  V4.x  seldom  makes  errors  in  pronunciation.
Developers  of screen reader software who also use other  speech
synthesizers should be aware that creating special phonemic text
often   creates  problems  where  none  exist.  To  avoid  this,
ascertain whether a particular pronunciation is a problem before
attempting  to  phonemicize a word or phrase.  Also,  developers
should  be  aware  that  different synthesizers  take  different
phonemic alphabets and the one described below will probably not
be interchangeable with other synthesizers.
PHONEMIC TRANSCRIPTION
Most  users do not need to know anything about DECtalk  phonemic
input  and may never need to use the phonemic alphabet. This  is
because  improvements made in text-to-speech technology  in  the
past  few  years  make  it unnecessary  to  have  to  modify  an
incorrect  pronunciation of a normal word.  On the  other  hand,
many  developers  will  want  to  enter  unusual  words  in  the
definable  dictionary or, for various reasons, modify the  sound
of  the synthesized speech, perhaps to attain a higher degree of
naturalness,  to  demonstrate  emotion,   or  to   emphasize   a
particular word or phrase. In these cases, it may be helpful  to
understand in a bit more detail how DECtalk works.
To  understand how the DECtalk system works and to  make DECtalk
correctly  pronounce any English word, you  may  wish  to   know
something  about speech sounds and how to represent  them  on  a
keyboard.  Because  spelling in English  does  not  always  show
exactly   how words are pronounced, dictionaries use symbols  to
show  how  words really sound. Sometimes these symbols  are  the
same as  letters used in spelling. A word written the way it  is
pronounced is said to be in  phonemic transcription or simply in
phonemics.
PRONUNCIATION ERRORS
When DECtalk says a word or phrase incorrectly, you may need  to
use  phonemic  input  to  get  the  desired  pronunciation.  The
following   list suggests the most common types of  errors  that
DECtalk makes,  and the best corrective action.
Note:   Prior   to  using  phonemic  transcription   or   clever
misspellings,  ascertain that DECtalk does  indeed  mispronounce
the  word.  In  the  vast majority of cases, the  word  will  be
pronounced  correctly.  To  utilize phonemic  representaions  of
words,  the  Phonemic  Mode must be turned  ON  with  a  special
command (above).
MISPRONNOUNCIG A PROPER NAME
       DECtalk mispronounces a proper name.
               Lee Iacocca
       Corrective action: Convert to phonemic form.
               Lee [ayaxk'owkax]
       Or misspell in a clever way.
               Lee Eye a Coke a.
MISPRONOUNCING AN ACRONYM
       DECtalk mispronounces an acronym.
               The UN building
        Corrective  action:  Respell  with  spaces  between  the
letters.
               U N
       Or use phonemics.
               ['yuw 'ehn]
MISPRONOUNCING AN UNFAMILIAR WORD
       DECtalk mispronounces an unfamiliar word.
               articulatory
       Corrective action: Convert to phonemic form.
               [aart'ihkyaxlaxtowriy]
STRINGS CONTAING NONALPHABETIC CHARACTERS
DECtalk  mishandles  a  letter string  containing  nonalphabetic
characters.
                                                    autoexec.bat
readme.txt
       Corrective action: Respell with inserted spaces.
               auto exec dot bat
               read me dot  text
       Or convert to phonemic form.
               ['aotowixgz`ek*daat*b'aet]
               [r'iyd*miy*daat*t'ehkst]
AMBIGUOUS PRONUNCIATIONS
DECtalk guesses incorrectly for an ambiguously pronounced word.
               The insert
               Get the lead out.
       Corrective action:  Convert to phonemic form
               The ['ihnsrrt]
               Get the [l'ehd] out.
SYNTACTIC CLASSFICATION
DECtalk uses the wrong syntactic classification of a preposition
or  particle.
                He  takes on tough jobs.   ("He does tough jobs"
versus "He
                                 accepts  graft  when  on  tough
jobs.")
       Corrective action: Add a stress phoneme when needed.
               He takes [']on tough jobs.
       Or convert to phonemic form.
               He takes ['aan] tough jobs.
INCORRECT PHRASING
DECtalk uses the wrong phrasing.
               Following a long gasp shouts were heard.
         Corrective   action:  Add  commas  or   a   verb-phrase
introducer phoneme where needed.
               Following a long gasp, shouts were heard.
INTRODUCTION TO PHONEMIC THEORY
At  one time long ago, English was pronounced as it was spelled,
with  each  letter (or pair of letters) representing one  sound.
Because  of  historical sound changes such as the  dropping   of
sounds  like  the  gh of "bought" or the k of  knight  and  word
borrowing  from  other  languages, English  pronunciation  rules
have  become complex and  include many exceptions. For  example,
of  is  pronounced with a v sound, while all other English words
spelled  with  f  are pronounced with an f   sound.  The   vowel
sequence ea can be pronounced in at least a half-dozen  ways, as
illustrated by the sounds in the words cheap, head,  earth,  and
idea. The letters th can be pronounced with a  voiceless phoneme
as  in  thin, or with a voiced phonemeas in this; or the th  can
represent  the t phoneme followed by the h phoneme  in  compound
words such as pothole.
Some  words have two pronunciations, for example, read.  Correct
pronunciation of a sentence such as Will you read  the  book  or
have  you  read  it  already? requires an understanding  of  the
meaning  of the sentence - a task which DECtalk is  learning  to
do. DECtalk can often correctly predict which pronunciations  is
correct.  However,  because  of  the  nature  of  language,   it
occasionally makes a mistake. If this occurs, you  can  get  the
alternate pronunciation in two ways.
       By misspelling the word, e.g., "red" for "read"
       By phonemic spelling: [r'ehd]
        Example:  Will you read the book or have you [r'ehd]  it
already?
Stress  is an important part of phonemic representation.  Stress
alone  distinguishes the two different pronunciations  of  words
like  "insert."
English words usually have one syllable that is spoken with more
stress  than  the other syllables in the word. You can  indicate
this   primary stress to DECtalk by placing the phonemic  symbol
[']  before the vowel. The ['] symbol is described below.
For example, the word "insert" can be spoken as a noun
       "insert" = ['ihnsrrt]
 and as a verb
        "insert" =  [ixns'rrt].
Considering  the complexity of English pronunciation  rules  and
the   number  of exceptions, it is not surprising  that  DECtalk
occasionally   makes such pronunciation errors. You  can  adjust
DECtalk  pronunciation   through  a  large  number  of  symbols,
described  in  the  rest  of this  chapter.  DECtalk  V4.x   has
improved  pronunciation rules and, as a  result,  such  phonemic
intervention will only occasionally be needed.
PHONEMES
A  phoneme is the smallest unit of speech that distinguishes one
word  from  another.  Of all the sounds that  human  beings  can
produce,  relatively few are significant in  any  one  language.
Only  about 40 different functional sound types or phonemes  are
used in General  American English.
Prounouncing Phonemes
The  phonemes  of English are not pronounced the same  by  every
speaker. We all know people who pronounce some words differently
from the way we do, yet we understand them. The differences  may
occur  because  we  come from different parts  of  the  country.
Because   of  these  variations, there is no  such  thing  as  a
universal   standard pronunciation of American English.  DECtalk
attempts to mimic a  Midwestern (Northern Milwaukee) dialect.
Because DECtalk pronounces a phoneme in a standard rule-governed
way,  it  is not possible to imitate all other English  dialects
(although  you  can  approximate some dialectal  differences  by
phonemic spelling).
The   following  sections  describe  the  vowel  and   consonant
phonemes,   stress  and syntactic symbols, and  optional  direct
control of  intonation or singing.
VOWEL AND CONSONANT PHONEMES
Linguists  have  identified  about  17  vowel  phonemes  and  24
consonant  phonemes for American English.  Tongue position (high
versus  low  in the mouth, and front versus  back of the  mouth)
correlates  with  the  frequencies of the  two   lowest  natural
resonances  of the vocal tract. The lowest resonance  frequency,
is  the   first  formant  F1  and the  second  formant   is  F2.
Consonant  phonemes are typically described by their  places  of
major articulatory  constrictions and the manners of forming the
constrictions.
PHONONEMIC REPRESENTATION
Appendix B lists the  consonant and vowel phonemes of English as
used  by  DECtalk.  The  symbols  used  for  each  phoneme   are
identified  by  a key word with the relevant phonemic  sound  in
italics.
        In  many  cases, phonemes are indicated by two  letters,
instead  of  special characters or diacritic symbols that  often
appear  in   dictionaries. DECtalk requires  a  case-insensitive
representation    (uppercase  and  lowercase   are   acceptable)
although lower case is the more commonly used. The letter  pairs
have   been designed so that it is not necessary to put a  space
between   phonemes of a word. In fact, the space indicates  word
boundaries.   DECtalk can parse input phonemic letter  sequences
to determine the  unique phoneme sequence in all cases.
        Phonemes  are  enclosed in square  brackets  instead  of
between  the  more traditional / symbol. The [ and ]  characters
mark  the   beginning  and  end of phonemic  mode  clearly  with
distinctively   different  symbols.  The  input  format  is  not
strictly phonemic  because it also permits you to enter  certain
allophones  (variants  of a phoneme), making the  representation
closer  to  a  broad  phonetic transcription. When  the  command
[:phoneme  arpabet  speak on] is given, all text  within  square
brackets is treated as phonemic text.
PHONEMIC CORRECTION THE EASY WAY
Developers may wish to learn the phonemic code. However, you can
also  consult  one  of  the commonly available  dictionaries  to
determine  the  phonemic pronunciation for the  occasional  word
that DECtalk gets wrong.
For  example,  according to the Merriam-Webster Dictionary,  the
pronunciation of the word "Mozart" is
       \'mot-,sart\
Using the Table of Appendix B you can convert this transcription
to the DECtalk phonemic string
       [m'owtsaart]
THE USER DICTIONARY
Every  time  DECtalk mispronounces a word in running text,  your
application  could  replace the text string ("Mozart")   with  a
phonemic string ([m'owtsaart]). However, if the number of  words
requiring  phonemic translation in an application is  small,  it
might  be simpler to create and download a dictionary to DECtalk
and  let  DECtalk  perform the  replacement  automatically.  The
DECtalk  board  has memory allocated for a loadable  dictionary.
This  dictionary is useful in cases where (a) DECtalk  makes  an
error in pronunciation, or (b) the pronunciation of a string  is
unique  to  the application.  For example, if the sequence  n/cl
should  be  pronounced as not cleared, then  a  user  dictionary
entry is obviously needed.
        To create and download a dictionary to DECtalk, you must
do the following:
1.  Create  a  dictionary table file using a text   editor.  The
dictionary must be in the following format:
        (a)  An entry must start at the first character  of  the
line.   Any word beginning other than as the first character  of
the  line causes the line to be treated as a comment and it will
therefore not be processed.
        (b)  The  syntax is grapheme string followed by  phoneme
string. A line may be up to 256 characters long.
        (c)  A  grapheme (letter) string is comprised  of  legal
graphemes.  Legal  graphemes are:  A-Z,  a-z,   0-9  and  select
punctuation  marks  ("!,  @, &, (,  ),  -,  \,   and  /).  These
punctuation  marks  may  not be used at  the  beginning  of  the
grapheme  string.  The grapheme string may be  in  either  case.
Uppercase letters match only uppercase; lowercase letters  match
either uppercase or lowercase.
        (d)  The  phoneme string is comprised of legal phonemes.
Phonemes  are  always in square brackets but may  be  in  either
upper or lower case.
For  example,   to make the word coffee be pronounced  tea,  you
would enter the following:
               coffee  [t'iy]
After  creating your dictionary file, you can compile  and  load
the dictionary by doing the following:
2. Compile the dictionary by typing:
        userdic  <input  dictionary  table>  <output  dictionary
file>
Input  files  have  the default extension of  .tab  but  can  be
anything. Output dictionary files have the extension of .dtu and
must   have  that  extension for the loader  to  find  the  file
correctly. If no output file is specified, a file with the  same
name and .dtu extension will be created for the output.
For example: if your dictionary table is called mydict.tab,  and
you type:
       userdic mydic
The USERDIC program will use the dictionary table mydict.tab  to
create the dictionary mydict.dtu
3. Load the user dictionary by typing:
       dt_load         <output file>
For example, you would type:
       dt_load  mydic.dtu
Your customized dictionary is now loaded.
Note: User dictionary lookups are done only on a single form  of
the  word. No affix stripping occurs in user dictionary lookups.
Therefore,   inflected  and  derived  forms  must   be   entered
separately.
Warning:  If  your  PC  is powered down,  you  must  reload  the
dictionary at power-up or add its name to the end of the DT_LOAD
statement in the AUTOEXEC.BAT file.
Do  not  automatically assume that DECtalk will  mispronounce  a
word,  even  a difficult one. DECtalk often correctly determines
the correct pronounciation of even difficult or very complicated
words. Also, using the [:pronounce name] command, it will  do  a
creditable job with proper names as well.
VOWEL ALLOPHONES
While   DECtalk recognizes 17 vowel phonemes, these  vowels  can
sometimes   change slightly when surrounded by certain phonemes.
These  variants are discussed below.
Allophones for  Vowels + [r]
The  vowels in words  such as "beer," "bear," "bar," "bore," and
"poor"  are  different   from the available  vowel  phonemes  in
DECtalk.  They  require special  vowel-r allophones,  which  are
listed below.
The Schwa Allophones [ax] and [ix]
Another  problem  is with the unstressed  reduced  vowel  called
"schwa"  in English. The vowel appears in  words such  as  about
and  kisses. In "kisses," the vowel is  produced with  a  higher
tongue  position, symbolized by the vowel  allophone  [ix].  You
can  choose between [ax] and [ix]  by noting the characteristics
of  the  adjacent  phonemes, but  listening to  the  words  will
result in the best choice.
Syllabic Consonants
The  final  syllable in words such  as "butter,"  "bottle,"  and
"button" is usually symbolized in a  dictionary as consisting of
a  short  vowel  followed by a consonant.   For  better-sounding
synthesis,  DECtalk  uses a set of syllabic   consonants,  [rr],
[el],  and  [en]   that are realized  without the  short  schwa.
Syllabic  "r" shares the same symbol as  the phoneme [rr]  in  a
word  such  as  "bird," but this leads to no   confusion  inside
DECtalk.
The  [em]  allophone used in the earliest version of DECtalk  no
longer   exists and must be replaced by the two-phoneme sequence
[axm] as  in the word "bottom" = [b'aataxm].
In  most  situations,  you do not need  to  be  concerned  about
allophones  because  the vowel phonemes will  be   automatically
converted into the appropriate allophones by DECtalk  rules. For
the developer, allophone selection can be  induced or blocked by
using  the  syllable boundary phoneme [-] and  the rule-blocking
phoneme [~] , or by  inserting allophone symbols in the phonemic
spelling.
CONSONANTS
The  symbols  that represent consonants are straightforward.  In
one  case,  [hx] , the two-letter sequence ensures   unambiguous
parsing because the letter "h" is part of  some vowel symbols.
DECtalk  speaks  an  English dialect that does  not  distinguish
voiced  and  voiceless  w. Therefore,  words  like  "which"  and
"witch"  are pronounced alike as [w'ihch].
The  letter  "g" can be pronounced in two ways.  In  words  like
"gift," the consonant phoneme [g] is used. In words like  "gin,"
the phoneme [jh] is used.
The  letter  sequence "th" can be pronounced  with  a  voiceless
sound   [th]  as  in "thin" or with a voiced sound  [dh]  as  in
"this."
Consonant Allophones
The consonants [t], [d], [r], and [l] may be replaced by special
allophones under certain conditions.
Dental Flap [dx]
The  [t]  and [d] phonemes are often  replaced by a  very  brief
tongue  flap allophone [dx] when the  consonant phoneme  appears
between  two vowels and the second vowel  is unstressed. DECtalk
rules   automatically  insert  this  allophone  in   appropriate
situations.
Glottal t
The   [t]  phoneme  may  be  replaced  by  a   glottalized  [tx]
allophone,  especially in the word-final position  if  the  next
word begins with a sonorant consonant. DECtalk rules  insert the
allophone where appropriate.
Postvocalic [r]
The  [r] that appears after a vowel is  not as constricted as  a
word-initial [r]. DECtalk  automatically  selects this  somewhat
velarized  allophone  [rx]  or  an  r-colored   diphthong  where
appropriate.
Postvocalic [l]
The [l] that appears after a vowel may  sound different from the
[l]  in  other contexts. For some speakers,  the tongue tip  may
not  even  reach  the  roof  of  the  mouth.  This   postvocalic
allophone [lx] is automatically selected by DECtalk.
Glottal Stop [q]
The  glottal stop [q] is used in some  situations to indicate  a
word  boundary,  especially when the next  word  begins  with  a
vowel.  Overuse of this symbol can lead to a  stilted  style  of
speaking.
CONTROLLING ALLOPHONE SELECTION
DECtalk automatically  inserts certain other allophones for [k],
[q],  and  [nx] when  appropriate. It also selects the prevoiced
and  voiceless  unaspirated allophones of [b], [d], and [g]. You
cannot access  these allophones.
  If  DECtalk does not select one of these allophones, you   can
insert   the   allophone   symbol   directly   in   a   phonemic
representation of the word in question.
If  DECtalk uses one of these allophones inappropriately,  place
the  rule-blocking phoneme [~] before the phoneme in question to
block   application  of all allophonic substitution  rules.  For
example,  to  say "batter" without a flap being substituted  for
the [t], enter  the phonemic string [b'ae~trr].
SILENCE PHONEME [_]
DECtalk  automatically inserts a silence (brief pause)  whenever
punctuation appears in the text. The phonemic silence symbol [_]
is  useful  for  controlling silence  while  in  phonemic  mode.
Silences  and other pauses are described in more detail below.
STRESS AND SYNTACTIC SYMBOLS
Correct  speech is more than simply stringing together a  series
of   words or phonemes. The meaning of a sentence is carried  by
the   words, plus rhythm, stress, and intonation (pitch change).
You  recognize a question by the rising intonation of the voice,
while  a statement is usually accompanied by falling intonation.
A   speaker can give certain words in a sentence more importance
by   adding  stress (loudness, pitch and length) to them.  Pitch
often reveals  the emotional state of the speaker. For effective
communication,   you need to consider these expressive  features
as well as the  segmental features of speech.
As  any  good  actor knows, punctuation alone is not  enough  to
indicate  the  full meaning of a sentence. Some fine  points  of
expression  cannot be indicated by using phonemic symbols.  Full
control  of  the expression of a sentence is gained by  directly
changing  the  duration and pitch of words and  phrases  and  by
inserting pauses in the appropriate places.
DECtalk uses stress and syntactic symbols to control aspects  of
rhythm,  stress, and intonation patterns. These symbols  include
punctuation  marks  such  as commas,  periods,  and  exclamation
marks.    Punctuation  marks  are  recognized  by   DECtalk   as
indicating   special   phrasing  requirements.   The   following
sections explain  how to improve the phrasing in DECtalk speech.
                                
                  STRESS AND SYNTACTIC SYMBOLS
                                
               Stress Symbols
       '               Primary Stress
       `               Secondary Stress
       '               Emphatic Stress
       /               Pitch Rise
       \               Pitch Fall
       /\              Pitch Rise and Fall

               Syntactic Symbols
       -               Syllable Boundary
       *               Morpheme Boundary
       #               Compound Noun
       (               Beginning of Prepositional Phrase
       )               Beginning of Verb Phrase
       ,               Clause Boundary
       .               End of Sentence
       ?               End of Question
       !               End of Exclamation
       +               New paragraph
Primary Stress [']
Most  content  words of English (nouns, verbs,  adjectives,  and
adverbs)   contain   one  primary  stressed  syllable.   DECtalk
represents  primary stress on a syllable with an apostrophe  [']
placed  immediately before  the stressed vowel  phoneme  of  the
word as in the following  example for the word butter.
       [bahtrr].
        (No stress, flat intonation, too rapid.)
       [baht'rr].              (Stress on the wrong syllable)
       [b'ahtrr].              (Correct)
You  can also place the primary stress symbol between words,  in
which  case  it  modifies the next word.  For  example,  in  the
sentence   "He  rang  up the sale," DECtalk  treats  "up"  as  a
preposition   (without stress) instead of a  particle.  "Up"  is
correctly stressed  if you write the sentence as
       He rang [']up the sale.
There  can  be no space between a stress phoneme and a syntactic
phoneme (for example, [']) and the following word.
Secondary Stress [`]
Use  the  secondary stress symbol [`] to indicate  a  degree  of
stress  that is between primary stress and unstressed. Secondary
stress is  appropriate in the following cases.
To highlight the next strongest syllable of polysyllabic  words,
such as "demonstration."
               [d`ehmaxnstr'eyshaxn].
        On  second  parts  of compound nouns, as  in  "answering
machine.
                ['aensrrixnx#maxsh`iyn].
        In some very common words such as "I" and "we."
DECtalk   realizes  secondary stress by  lengthening  the  vowel
sound   more  than unstressed (but less than primary stress).  A
pitch  rise   may also occur on an early secondary stress  .  In
most cases, you  can leave out the secondary stress symbol.
Emphatic Stress ["]
You can place the emphatic stress symbol ["] before any vowel to
give  emphasis  to that syllable of the word.  Good  readers  of
English text understand the message of the sentence well  enough
to   pick  out the most important word and emphasize it. DECtalk
merely   pronounces words; it does not understand the  sentences
it is  saying. DECtalk cannot place emphasis on words to give  a
completely different meaning to the sentence unless you use  the
emphatic stress symbol. Here is an example.
       Dennis loves Mary.
        (Usual neutral pronunciation.)
       [d"ehnihs] loves Mary or "["]Dennis loves Mary.
        (Dennis -- not Frank -- loves Mary.)
       Dennis loves [m"ehriy] or Dennis loves"["]Mary.
        ( -- not Jill.)
The  exclamation point has a similar effect on the final  stress
of a sentence.
       Help!
Unstressed Syllables
The  English  language contains a set of words that  are  either
unstressed  or have reduced stress., These are called  syntactic
function words and include the  following  types:
       Prepositions (for, over)
       Conjunctions (and, but)
       Determiners (the, some)
       Auxiliary verbs (is, has)
       Pronouns (her, myself)
       Clause introducers (which, that)
These words have reduced stress in their dictionary entries.  It
is  sometimes  necessary to emphasize a function  word  that  is
stored  in DECtalk's dictionary without stress. You can do  this
by   including  a  primary stress symbol or an  emphatic  stress
symbol  in   the  phonemic transcription  as  in  the  following
example.
       He went ['owvrr] (or [']over) the fence, not under it.
       It was the fence that he went ['owvrr] (or [']over)
Pitch Control  [/], [\], [/\]
DECtalk  contains built-in rules to determine the pitch  contour
of   a sentence. While these rules are correct most of the time,
you  can override them by placing the pitch rise [/], pitch fall
[\],  and pitch rise-and-fall [/\] symbols before selected words
(or  vowels if you want finer control).
The  [/]  and  [\] symbols must alternate, and the first  symbol
must   be a rise. Note that you can place both a rise and a fall
on the  same syllable by using [/\]. You can hear the difference
by trying  the following two sentences.
       It's a mad mad mad mad world.
       It's a [/]mad [\]mad [/]mad [\]mad [/\]world.
Word Boundary
Any whitespace character (space, tab, or carriage return) in the
text  indicates  a  word boundary. DECtalk  uses  word  boundary
symbols   to select the word-beginning or word-ending  allophone
of a  phoneme.
Some  applications automatically insert a carriage  return  into
lines that are too long (and would go off the edge of the screen
or  paper). This may cause DECtalk to pronounce text incorrectly
if   a  carriage return occurs in the middle of a word. You  can
prevent  this problem by breaking long sentences with a carriage
return at  an appropriate place.
Syllable Boundary [-]
DECtalk uses a set of rules to determine where words break  into
syllables,  so  consonants within words are  assigned  to  their
correct  syllable. Use the syllable boundary symbol [-] to  tell
DECtalk  where to assign the consonants within ambiguous  words.
(This type of error rarely happens in DECtalk).
       Example: oration
        [ow-r'eyshaxn] (DECtalk made an incorrect guess.)
        [owr-'eyshaxn] (Correct.)
Morpheme Boundary [*]
        English  words  are made up of meaningful  units  called
morphemes.  For  example, "spell" has only one  morpheme,  while
"misspelling" is  made up of three: "mis," "spell," and "ing."
In  most  cases, the pronunciation of a word does not depend  on
morpheme  boundaries. There are exceptions,  however,  in  which
case  the morpheme boundary symbol [*] can be used to force  the
correct   pronunciation.  For example, "misspelling"  should  be
pronounced   with  a double "s"because each  "s"  belongs  to  a
different   morpheme.   Adding  the  morpheme  boundary   symbol
improves  the pronunciation of the word.
       misspelling.

       mixsp'ehlixnx (text-to-phoneme translation by DECtalk).
        (The single "s" is too short.)

       [mixs*sp'ehlixnx]
        (Better.)
Compound Noun [#]
Compound  words, such as rush-hour, coffee cup, Thermos  bottle,
answering  machine, etc. should be spoken with less   stress  on
the second word. Also, words that were once compounds,  such  as
backache require decomposition for correct  pronunciation.
DECtalk's  dictionary  includes an extensive  list  of  compound
words.   You  can  use the compound-noun symbol [#]  to  correct
compounds  that   are not in the dictionary.  For  example,  for
"backache," type the  following phonemic transcription.

       [b'aek#`eyk].

Using  a  hyphen in compound words, for example,  back-ache,  or
rush-hour  traffic" produces the correct pronunciation  most  of
the time. You  rarely need the [*] and [#] phoneme symbols.

Beginning of Verb Phrase [)]
        Moderately long declarative sentences are usually spoken
as  if  they contain two units: a noun phrase and a verb phrase.
There  is   sometimes a slight pause between these two  phrases,
but there is also a slowing down at  the boundary, and the pitch
tends  to  fall  and  then  rise.  DECtalk   searches  for  this
syntactic  boundary  to change pitch. However,  the   rarity  or
ambiguity of some verbs can cause confusion.
       The old man in the chair was rocking slowly.
       (Correct verb phrase detected.)

       The old man in the chair sat rocking slowly.
        (Verb  phrase not detected; pure mechanical analysis  of
the sentence   does not show where "sat" belongs.)

       The old man in the chair [)s'aet] rocking slowly.
       (Phonemic correction.)

The right parenthesis [)] symbol is useful where a separation is
needed  between phrases but a comma is too strong. For  example,
you  can use [)] to indicate a dangling prepositional phrase.

       She hit the man with the umbrella.
       (The man carries the umbrella.)

       She hit the man [)] with the umbrella.
       (She uses the umbrella.)

NOTE:  Past versions of DECtalk also used the [)] symbol  for  a
second  function to indicate alternate  pronunciations of  words
that   are    spelled   the  same  but  pronounced   differently
(homographs).  (In  DECtalk V4.x, this has been  replaced  by  a
slash "/".) For example, the word  "insert" is either a noun  or
a verb. As a noun, it is pronounced  ['ihnsrrt] and as a verb it
is pronounced [ixns'rrt].
Clause Boundary [,]
When  a  sentence is composed of more than one clause, it should
be   spoken in such a way that the listener can easily  separate
the   sentence into its component clauses. The comma [,] is  the
symbol  used to indicate clause boundaries. A comma in text  and
a  comma in  phonemic transcription have identical impact on the
acoustic realization  of a sentence.
Inserting  a  comma improves the quality of spoken sentences  in
the  following cases.
       After an introductory prepositional phrase:
               In particular cars cause pollution.
               (Poor phrasing.)
               In particular, cars cause pollution.
               (Correct.)

       Around a parenthetical remark:
               A picture it seems is worth . . .
               (Poor phrasing.)
               A picture, it seems, is worth . . .
               (Correct.)

       In a list of more than two items:
               They ate apples oranges and bananas.
                       (Poor phrasing.)
                 They   ate   apples,   oranges   and   bananas.
(Correct.)

       After similar types of adjectives:
                   The     tall     angular    gentleman     ...
(Poor phrasing.)
                   The     tall,    angular    gentleman     ...
(Correct.)

        Around  phrases  and  clauses  in  a  particularly  long
sentence
Period [.]
A sentence is usually a single, complete thought. It is also the
longest  utterance that you can comfortably speak in one breath.
DECtalk  inserts a pause when it finds a period that  marks  the
end   of the sentence, duplicating the human speaker's pause  to
take a  breath.
The  [.] symbol also tells DECtalk that a complete sentence  has
been  sent and it is safe to begin speaking. In letter and  word
mode,  DECtalk will speak immediately even if no period or comma
has  been seen.  DECtalk also tests each period to make sure  it
is  not part of a known abbreviation.
Question Mark [?]
The  simplest  way to indicate a question in  English  is  by  a
rising   tone  at the end of a sentence, although true  question
intonation  is not that simple and depends on the meaning of the
question.
There  are  many  cases  in English where  a  question  (rising)
intonation  is  not appropriate, even though the  sentence  ends
with   a  question mark. Rhetorical questions or quotations  may
contain  a  question  mark, but the speaker ends with  a  period
(falling  tone).  Sentences that begin with "wh"  words  ("who,"
"what")  usually  end  with a falling tone,  even  if  they  are
questions.   DECtalk is smart enough to recognize "wh" questions
and  speak them correctly.
       Laura ate her broccoli?
        (DECtalk asks a question.)

        What time is it?
         (DECtalk recognizes a wh-question and does not rise  at
the end).
Exclamation Point [!]
Exclamations are short statements spoken with special  emphasis.
DECtalk  interprets an exclamation point to mean that  the  last
stressed syllable in the sentence should have extra emphasis.
       Stop!
Long sentences ending with an exclamation point typically have a
single  word that receives extra stress. DECtalk has no  way  of
knowing  which  word  to stress and chooses  the  last  word  by
default.   Use  the emphatic stress symbol ["]  to  emphasize  a
different word  when the last word is not appropriate.
       Joan won the marathon!
        (DECtalk emphasizes the last word.)

        ["] Joan won the marathon.
        (Correct.)

New Paragraph [+]
The  new  paragraph  phoneme  [+] should  be  inserted  in  text
wherever  a new thought has begun.   (DECtalk does not  do  this
automatically  because  there  is  no   standard  new  paragraph
indicator  in general text - the tab is  used in too many  other
ways.)
  he  new  paragraph phoneme [+] modifies the intonation contour
and   adds variety to running text. The first sentence of a  new
paragraph  is  produced with a higher, more  lively  fundamental
frequency. DECtalk will also pause longer between paragraphs  to
give the listener an indication of a change of topic.
[+]   This  paragraph  has  the  [+]  phoneme  inserted  in  the
appropriate   place. The new paragraph symbol  can  be  used  in
other  situations,  such as to help indicate the start of a  new
mail message in a list  of mail messages.
DIRECT CONTROL OF DURATION AND PITCH
Displaying  the  correct  emotion  through  voice  alone  is   a
difficult   task,  as any radio actor will tell  you.  The  best
method is to  experiment with phonemic symbols until you achieve
the quality you  want. Emotional content is usually connected to
the  sentence  content, so varying both together is the best way
to convey  feelings.
  For  example,  you can have DECtalk say a simple  phrase  like
"Good  morning" in several different ways.
       Good morning.
        (Normal tone.)

        Good morning!
        (Emphatic.)

        Good morning?
        (Questioning.)

        [g"uhd] morning.
        (Emphasize "good.")

If  these alternatives do not produce what you need, you can use
direct  prosodic control. You must represent the entire sentence
phonemically, specifying a duration for each phoneme  that  does
not  match the natural model. You should also give some  or  all
phonemes   specific  target pitch values. DECtalk  will  compute
smooth   transitions between pitch values, where  the  specified
pitch is  reached at the end of the phoneme.
DURATION AND PITCH [<>]
DECtalk  uses angle brackets [<>] to enclose duration and  pitch
values of phonemes. The format is
       <duration,pitch>

where duration is the length of the phoneme in milliseconds (ms)
and  pitch is the fundamental frequency of the phoneme in  hertz
(Hz).
Any  phoneme  may  be followed by angle brackets  to  alter  the
default   duration  and pitch. If either value  is  omitted,  or
specified  as  0,   the default value is used.  The  values  for
duration and pitch are  separated by commas.

       [ow]
       (Normal phonemic specification.)

       [ow<1000>]
       (1,000 ms duration.)

       [ow<,90>]
        (Default  duration,  90  Hz pitch  at  end.)  (note  the
position of the comma)

       [ow<1000,90>]
       (1,000 ms duration, 90 Hz pitch at end.)

For  example,  to say "Oh?" with a greater degree of  skepticism
than  DECtalk normally imparts, you could type

       [_<,90>ow<400,150>].

The  [ow] phoneme begins at 90 Hz and ends (after 400 ms) at 150
Hz.
Note  the  use  of  the silence symbol [_] in the  example  just
given.  Pitch and duration values must always be attached  to  a
preceding  phoneme. The silence symbol is used so that the value
(90 Hz in  this example) is applied to the beginning tone of the
next spoken  phoneme [ow].
Many  of the phonemes (all except the stop  consonants p, t,  k,
b,  d, and g) can be sustained in a monotone  for an arbitrarily
long duration by using direct prosodic control.  For example, to
sustain "ah" for a duration of 10 seconds (10000  ms) at a pitch
of 120 Hz, type

       [_<,120>ah<10000,120>].
        (Produces "ahhhhhhh . . .")

To produce a prolonged sigh, type
       [_<100,150>ah<2500,80>].
where  the silence phoneme causes the pitch contour to start  at
150  Hz at the beginning of the "ah" and end at 80 Hz at the end
of the  "ah."
SINGING
The DECtalk can be made to "sing" by converting a text file into
a  song file. In the song file each word or syllable first  must
be  defined  phonemically.  Then the  musical  notes  and  their
duration they are to be "sung" at are defined.
Vibrato
Singing   uses   different   voice   control   techniques   than
conversation.  Even untrained singers add liveliness to the sung
notes  by  varying  pitch  slightly, a quality  called  vibrato.
Singing in DECtalk would sound mechanical without vibrato.
Assigning Pitch and Duration
The  first  number  following  a  phoneme  is  the  duration  in
milliseconds, and the  second number is the pitch  in  Hertz(Hz)
or  a  coded  value  for the desired musical  note.  Vowels  and
consonants  not  assigned a pitch remain at the  same  pitch  as
preceding segments.  You can intersperse silence phonemes if you
wish.
Sung and Non Sung Pitches
DECtalk  stays exactly on pitch when the pitch is  specified  in
Hertz.  You  can  add vibrato (to give a more realistic  singing
quality)  by  substituting the pitch  value with  a coded  value
for  the desired musical note. The coded values range from 1  to
37. Note  1 is C2 and 37 is C5 on an equal tempered scale (A4  =
440  Hz). The table of the codes for the musical notes C2 is the
second C below middle C on a piano,  C4 is middle C, and so  on.
The table is listed at the end of this section.
When the coded value of the notes are specified, DECtalk reaches
the  desired pitch within  about 100 ms after the start  of  the
phoneme and adds vibrato after  changing to this pitch. When you
give  a  specific  non-sung pitch,  DECtalk  reaches  the  pitch
target  at  the  very end of the phoneme  with no  vibrato.  The
following example makes DECtalk "sing" the  first four notes  of
Beethoven's Fifth Symphony.

       [d<100,17>aa<400> d<100,17>aa<400>]
       [d<100,17>aa<400> d<120,13>aa<700>]
Musical Note Codes
The  following  table contains the codes of  the  musical  notes
which can be used to allow your DECtalk to sing.
Table  -  Musical Note Codes
Coded  Note    Pitch (Hz)
Value
1      C2      65
2      C#      69
3      D       73
4      D#      77
5      E       82      B
6      F       87      A
7      F#      92      S
8      G       98      S       B
9      G#      103     |       A
10     A       110     |       R
11     A#      116     |       I
12     B       123     |       T
13     C3      130     |       O      T
14     C#      138     |       N      E
15     D       146     |       E      N
16     D#      155     |       |      O
17     E       164     |       |      R

18     F       174     |       |      |       A
19     F#      185     |       |      |       L
20     G       196     |       |      |       T
21     G#      207     |       |      |       O
22     A       220     |       |      |       |
23     A#      233     |       |      |       |
24     B       247     |       |      |       |       S
25     C4      261     |       |      |       |       O
26     C#      277     |       |      |       |       P
27     D       293     |       |      |       |       R
28     D#      311     |       |      |       |       A
29     E       329     |       |      |       |       N
30     F       348             |      |       |       O
31     F#      370             |      |       |       |
32     G       392             |      |       |       |
33     G#      415                    |       |       |
34     A       440                    |       |       |
35     A#      466                    |       |       |
36     B       494                    |       |       |
37     C5      523                            |       |
Note: C4 is middle C
                                
                            CHAPTER 6
                       MODIFYING THE VOICES
                                
This  chapter  shows how to change and create voices  spoken  by
DECtalk.  Changing  and  creating  voices  requires  a   certain
knowledge   of  acoustic  phonetics and the  human  voice.  This
chapter   necessarily  goes  into detail  on  speaker-definition
parameters.   Understanding those parameters  is  necessary  for
effective voice  modification and will make the task easier.
VOICE CHARACTERISTICS
The  DECtalk has a set of simple commands that you can   use  to
change the speaking rate, or to change the voice to one of  nine
different  voices  --  male,  female,  child,  or  a  developer-
definable   voice  -  as shown below. You can  use  other,  more
complex   commands to modify the characteristics of each  voice,
or  to  create   a  new  voice or special effects.  The  complex
commands  require  skill and experience to use effectively,  but
the   simple  commands  are   easy  to  use  in  normal  DECtalk
applications.
We  can  usually  tell whether the voice of  a stranger  at  the
other end of a telephone line is that of a man, woman, or child.
Slight differences  in voice quality are characteristic of these
different speakers.  For example, women's and children's  voices
are  usually higher  pitched than men's voices.  The size of the
head  and  length of the vocal tract  account for  some  of  the
differences. We also notice that some  people speak more quickly
or more distinctly than others.
Chapter  5 described ways in which  DECtalk pronunciation  could
be  modified.   This  chapter  shows how  voice  characteristics
themselves  can be changed by selecting the speaking rate,  sex,
and other voice parameters.
DECtalk   has   a   number  of  commands  which   modify   voice
characteristics.  Because  the  commands  are  entered    within
phonemic  brackets [ and ], you must have the [:phoneme  arpabet
speak] command set to ON.  This option is set OFF at power-up.
NOTE:   DECtalk  interprets   text between  square  brackets  as
phonemes only when the [:phoneme arpabet speak on] command  must
be  sent.  For  DECtalk  to interpret   the  [  and  ]  and  the
characters between them literally,  [:phoneme arpabet speak off]
command must be sent.
WARNING: If the command [:phoneme arpabet speak on]  is set  and
you  forget the final "]", DECtalk will try to  interpret  ASCII
text  as  phonemes,  skipping over illegal letter  combinations.
The  resulting text will appear to sound garbled.   To  recover,
close phonemic mode by typing "]".
The commands that modify the voice characteristics are
       1.      Speaking rate [:ra _]
       2.      Comma pause duration [:cp _]
       3.      Period pause duration [:pp _]
       4.      New voice [:n_]
       5.      Design voice [:dv _]
where the "_" represents a variable letter, value, or parameter.
Each  of the first three commands has a single, simple function.
The  fourth  (new  voice) command selects the  standard  DECtalk
voices. The fifth (design voice) command allows you to create  a
completely new voice.
SPEAKING RATE [:RA _]
The  default  speaking  rate  is 180  words  per  minute  (wpm).
Speaking   rate  values  have been calibrated  with  a  300-word
standard   paragraph using Fairbanks, G. Voice and  Articulation
Drill  Book.  Second   Edition. Harper and Row,  1960,  p.  114.
Speaking  rates can be adjusted to be very slow, very  fast,  or
anywhere in between by using the following commands:
[:ra  120]      This rate is the slowest, 120 wpm. It  is  ideal
for  situations where material such as a phone number is  to  be
copied by the listener.
NOTE: It may be frustrating to listen to extended speech at slow
rates unless the listener is actually copying down every word.
[:ra  160]      This rate is moderate, 160 wpm. This rate sounds
a little slow, but may be preferred in certain situations.
[:ra  180]      This rate is normal (moderately fast), 180  wpm.
It  is the default rate for DECtalk, and is ideal for  listening
to continuous text under optimal  conditions.
[:ra   240]        This  rate  is  faster,  240  wpm.  Practiced
listeners  can  skim material at this rate and  prefer  it  when
scanning  text for important sections. Inexperienced   listeners
may not understand every word at this  rate.
[:ra  350]      This rate is very fast,  350 wpm. It is too fast
for  many   people to follow, but it does have  applications  in
special circumstances.
[:ra  550]       This rate is the fastest,  550 wpm. It  is  too
fast  for many  people to follow, but it does have  applications
for  unsighted  individuals who wish to scan text quickly.  This
rate is 200 wpm faster than any previous version of DECtalk.
Any speaking rates between 120 and 550 are permitted in the [:ra
_]  command. Rates specified outside this range are  limited  to
the  nearest legal value.
Changes  in  speaking rate influence the duration and especially
the   number  of  pauses in text, as well  as  the  duration  of
individual   phonemes. At rates below 140 wpm,  DECtalk  inserts
pauses  at  all  phrase boundaries and pauses and phonemes  near
the  ends   of  phrases are lengthened considerably..  At  rates
faster than 240 wpm, DECtalk deletes  the comma pause, and other
pauses  and  phonemes  are shortened.  (Near  the  beginning  of
phrases,   phonemes  are  fairly short at  both  slow  and  fast
speaking rates.)
PAUSE DURATIONS [:PP _] AND [:CP _]
At  the  normal  speaking rate of 180 words per minute,  DECtalk
pauses about half a second after a period in the text and  about
a   sixth  of a second after a comma. These pause durations  are
adjusted appropriately when you change the speaking rate.
Speech Command Parameters
CommandMinimum Maximum Unit per Parameter
:ra              75            650            Words per minute
:cp            -40             30000          Milliseconds
:pp            -380            30000          Milliseconds
:n_            NA              NA             pbhfkrudwv
:dv            --              --             See Appendix D

In  some  situations,  you might like a  pause  after  a  period
without  changing the speaking rate. For example, to get DECtalk
to  read a  list of words at a normal rate with 5-second  pauses
after each word (to allow the listener to write them down),  you
could use one  of the following commands and end each word  with
a  comma   (continuation rise intonation) or a  period  (falling
intonation).
[:pp  4500]      Add a period pause of 4500 ms (4.5 seconds)  to
the standard half-second pause that occurs after a period in the
text. The total pause between words will be about 5  seconds.
[:cp  4800]      Add a comma pause of 4800 ms (4.8  seconds)  to
the  standard sixth of a second pause that occurs after a  comma
in  the   text at normal speaking rate. The total pause  between
words separated by a comma will last about 5  seconds.
[:pp  0 :cp 0]  Reset the period pause and comma pause to  their
normal default values.
The permitted range for a period pause is from -380 to 30000 ms.
A  negative  value  shortens  the  standard  period  pause.  The
permitted   range  for a comma pause is from -40  to  30000  ms.
Values  specified   outside this range will be  limited  to  the
nearest legal value.
SELECTING A STANDARD VOICE [:N_]
DECtalk  has  nine  built-in  voices  and  one  voice  that   is
definable.  You  can refer to each voice by  the  command  [:n_]
where   "_" is a letter representing one of the DECtalk  voices.
The values of n are p=paul, h = harry, f = frank, d = dennis,  b
= betty, u = ursula, r = rita, w = wendy, k = kit and v = val.
You  can  change voices with the new voice command  as  in  this
example.
       [:nb] Hello. I'm Betty.
You can also change voices in the middle of a sentence.
       [:np] This is a demo [:nb] of a sudden change in voice.
If  a  voice change request occurs in the middle of a  sentence,
DECtalk will automatically pause very slightly. The pause is the
equivalent    of  inserting  a  comma  before  the  mid-sentence
command.  For example,  you could type the previous sentence  as
follows.
       [:np] This is a demo, [:nb] of a sudden change in voice.
Such   a  pause  in  DECtalk,  however,  is  barely  noticeable.
Nevertheless,  it  is  good practice to always  end  a  sentence
(insert  a  period)   before changing voices.  This  allows  the
listener to prepare for a  new speaker.
DESIGNING A VOICE
PARAMETERS [:DV _]
The  DECtalk  voices  provide  an adequate  selection  for  most
developer's   applications.  However,  if  you  have  a  special
application  requiring   a monotone or unusual  voice,  you  can
modify  the  parameters defined in this  section on a trial-and-
error basis to get the desired voice.
The  nine built-in voices of DECtalk are distinguished from  one
another by a large set of speaker-definition parameters.
Speakers  can  differ in sex, age, head size and  shape,  larynx
size   and  behavior,  pitch  range, pitch  and  timing  habits,
dialect, and  emotional state. DECtalk cannot approximate all of
these  options.  Therefore, the space of distinguishable  voices
is  quite  limited,   even  though  DECtalk  has  many  speaker-
definition parameters that  can be modified.
The  design  voice  [:dv  _]  command  introduces  the  speaker-
definition  parameters that can be entered as a string or one at
a time.
The following sections discuss speech production, acoustics, and
perception.  Some  of  the information is relatively  technical,
but  the examples should make it possible for all developers  to
effectively modify any parameter and listen to the results.
CHANGING SEX AND HEAD SIZE
Six speaker-definition parameters control the size and shape  of
the head. These parameters are listed below and are described in
the chapter on modifying voices.
       sx      Sex 1(male) or 0 (female)
       hs      Head size, in percent
       f4      Fourth formant resonance frequency, in Hz
       f5      Fifth formant resonance frequency, in Hz
       b4      Fourth formant bandwidth, in Hz
       b5      Fifth formant bandwidth, in Hz
     Sex, sx
         Male and female voices have many differences, including
head  size,  pharynx length, larynx mass, and  speaking   habits
such  as degree of breathiness, liveliness of pitch, choice   of
articulatory target values, and speed of articulation.  Some  of
these  differences are under the control of a single  parameter,
sx,   the  sex of the speaker. Speakers Paul, Harry, Frank,  and
Dennis   are male (sx = 1), while speakers Betty, Rita,  Ursula,
Wendy, and  Kit are female (sx = 0). Actually, Kit

the Kid can be male or  female because children younger than  10
years old have similar  voices for both sexes.
Changing  the sx parameter causes DECtalk to access a  different
(male or female) table of target values for formant frequencies,
bandwidths,  and source amplitudes. The male and  female  tables
are   patterned  after two individuals who were judged  to  have
pleasant,   intelligible voices. DECtalk's built-in  voices  are
only  scaled  transformations of Paul and Betty, the  two  basic
voices.
You  can change the sex of any of DECtalk's voices by making the
voice  current and then modifying the sx parameter. For example,
the   following  command  gives  Paul  some  of   the   speaking
characteristics  of a woman. (The sx parameter does  not  change
the  average pitch or breathiness, so a peculiar combination  of
simultaneous  male  and  female  traits  results  from  this  sx
change.)
       [:np :dv sx 0] Am I a man or woman?
The  sx  parameter can also be specified as  m  or  f  with  the
commands  [:dv sx m] or [:dv sx f].
WARNING:  If you change the sex of the voice, some phonemes  may
cause  DECtalk's filters to overload, producing a  squawk.  (The
squawk  is  unpleasant,  but it will not  damage  DECtalk.)  The
modification  of  certain parameters such  as  F4,  F5,  and  G1
(explained below) can help to to correct this problem.
      Head Size, hs
         Head size is specified as the average size for an adult
man  (if sx = 1) or an adult woman (if sx = 0). A  head size  of
100  percent is normal or average for a given sex,  but   people
can differ quite a bit in this characteristic. Head size  has  a
strong influence on a person's voice. Large musical  instruments
produce  low  notes, and humans with large heads tend  to   have
low,  resonant voices. For example, to make Paul  sound  like  a
larger  man  with a 15 percent longer vocal tract  (and  formant
frequencies  that  are  scaled down by a factor  of  about  0.85
percent), type the following command.
        [:np  :dv  hs 115] Do I sound more like Huge Harry  this
way?
Head  size  is one of the best variables to use if you  want  to
make   dramatic voice changes. For example, Paul has a head size
of  100,  while Harry's deep voice is caused in part by  a  head
size  change   to  115,  or  15  percent  greater  than  normal.
Decreasing  head size  produces a higher voice,  such  as  in  a
child  or adolescent.  Extreme changes in head size, as  in  the
following examples, are  somewhat difficult to understand.

       [:nh :dv hs 135] Do I have a swelled head?
       [:nk] I am about 10 years old.
       [:nk :dv hs 65] Do I sound like a six year old?
WARNING:  Extreme changes in head size can cause  overloads,  as
well   as   difficulties  in  understanding  the  speech.    The
modification  of certain parameters such as   F4,  F5,   and  G1
(explained below) can help to correct this problem.
      Higher Formants, f4, f5, b4, and b5
 A male voice typically has five prominent resonant peaks in the
spectrum  (over   the  range from 0 to 5 kHz),  a  female  voice
typically  has only four  (due to a smaller head  size),  and  a
child  has  three. If fourth and fifth formant resonances  exist
for  a  particular  voice,  they are   fixed  in  frequency  and
bandwidth  characteristics. These  characteristics are specified
by  the  parameters f4, f5, b4, and  b5, in Hz. Values for  each
predefined voice are given below.
If  a higher formant does not exist, the frequency and bandwidth
of   the speaker definition are set to special values that cause
the   resonance to disappear. To make a resonance disappear, the
frequency is set to 2500 Hz, and the bandwidth to 2048 Hz.  This
is   what has been done to the fourth and fifth formants for Kit
the  Kid.
The  permitted  values  for f4 and f5  have  fairly  complicated
restrictions.  Violating these restrictions can cause  overloads
and   squawks. The restrictions are listed below for cases where
a  higher formant exists.
       1.      F5 must be at least 300 Hz higher than f4.
       2.      If sx is 1 (male), f4 must be at least 3250 Hz.
        3.       If  sx is 0 (female), f4 must be at least  3700
Hz.
        4.       If  hs  is not 100, the above values should  be
multiplied by (hs                     / 100).
These  higher formants produce peaks in the spectrum that become
more  prominent if b4 and b5 are smaller, and if f4 and  f5  are
closer  together. The limits placed on b4 and b5  should  ensure
that  no problems occur. However, smaller values for  bandwidths
may  produce  an overload in the synthesizer. You  can   correct
these overloads by increasing the bandwidths or by  changing the
gain control g1  (below).

     CHANGING VOICE QUALITY
Six  speaker-definition parameters control aspects of the output
of   the  larynx,  which, in turn, control voice quality.  These
parameters are listed below.
       br      Breathiness, in decibels (dB)
       lx      Lax breathiness, in percent
       sm      Smoothness, in percent
       ri      Richness, in percent
       nf      Number of fixed samples of open glottis
       la      Laryngealization, in percent
      Breathiness, br
Some  voices  can be characterized as breathy. The  vocal  folds
vibrate  to  generate voicing and breath  noise  simultaneously.
Breathiness is a characteristic of many  female voices,  but  it
is also common under certain circumstances  for male voices.
The  range of the br parameter is from 0 dB (no breathiness)  to
70   dB  (strong breathiness). By experimenting, you  can  learn
what   intermediate values sound like.  For   example,  to  turn
Paul  into  a  breathy, whispering speaker, type the   following
command.
        [:np :dv br 55 gv 56] Do I sound more like Doctor Dennis
now?
This  voice is not as loud as the others due to the simultaneous
decrease in the gain of voicing, gv, but it is intelligible  and
human sounding.
       Lax Breathiness, lx
The  br  parameter  creates  simultaneous  breathiness  whenever
voicing  is turned on.  Another type of breathiness occurs  only
at  the  ends  of  sentences   and when  going  from  voiced  to
voiceless  sounds. This type of "lax"  breathiness is controlled
by the lx parameter in percent.
A  non-breathy,  tense voice would have lx set  to  0,  while  a
maximally  breathy,  lax voice would have lx  set  to  100.  The
difference  between these two voices is not great, but  you  can
hear  it if you listen closely.
      Smoothness, sm
Smoothness refers to vocal fold vibrations. The vocal folds meet
at  the mid-line, as they do in  normal voicing, but they do not
slam  together forcefully to create a very sudden  cessation  of
airflow.
DECtalk uses a variable-cutoff, gradual low-pass filter to model
changes to smoothness. The range of sm is from 0 percent  (least
smooth and most brilliant)

to  100  percent (most smooth and least  brilliant). The voicing
source  spectrum is tilted so that energy  at higher frequencies
is  attenuated by as much as 30 dB when  smoothness is set to  a
maximum, but is not attenuated at all when  smoothness is set to
0.
Professional  singing voices that are trained to sing  above  an
orchestra  are usually brilliant, while anyone who talks  softly
becomes breathy and smooth. To synthesize a breathy voice, an sm
value  of about 50 or more is good. Changes to sm do not have  a
great effect on perceived voice quality.
      Richness, ri
Richness  is  similar to smoothness and brilliance, except  that
the spectral change occurs at lower  frequencies, and is due  to
a  different  physiological mechanism.  Brilliant,  rich  voices
carry  well  and  are  more intelligible in noisy  environments,
while  smooth  soft  voices sound more friendly.   For  example,
typing the following command produces a soft, smooth  version of
Paul's voice.
       [:np :dv ri 0 sm 70] Do I sound more mellow?
The  following  command produces a maximally rich and  brilliant
(forceful) voice.
       [:np :dv ri 90 sm 0] Do I sound more forceful?
Smoothness and richness are usually negatively correlated when a
speaker  dynamically changes laryngeal output.  The  sm  and  ri
parameters do not influence the speaker's identity very much.
      Nopen Fixed, nf
The  number of samples in the open part of the glottal cycle  is
determined  not only by ri, but also by a second parameter,  nf.
nf  is  the number of fixed samples in the  open portion of  the
glottal cycle.
Most speakers adjust the open phase to be a certain fraction  of
the  period,  and  this  fraction is  determined  by  ri.  Other
speakers  keep the open phase fixed in duration when the overall
period   varies. To simulate this behavior, set ri  to  100  and
adjust  nf  to   the  desired duration of the  open  phase.  The
shortest  possible open  phase is 10 (1 ms), and the longest  is
three  quarters of the  period duration (about  70  for  a  male
voice).
      Laryngealization, la
Many  speakers  turn  voicing  on and  off  irregularly  at  the
beginnings and ends of sentences, which  gives a querulous  tone
to the voice. This departure from perfect  periodicity is called
laryngealization or creaky voice quality.
The  la parameter controls the amount of laryngealization in the
voice. A value of

0  results in no laryngealized irregularity, and  a value of 100
(the  maximum)  produces laryngealization  at  all   times.  For
example,  to  make  Betty  moderately  laryngealized,  type  the
following command.
       [:nb :dv la 20]
The  la  parameter creates a noticeable difference in the voice,
although it is not altogether a pleasant change.
CHANGING THE PITCH AND INTONATION OF THE VOICE
Seven  speaker-definition  parameters  control  aspects  of  the
fundamental   frequency  (f0)  contour  of  the   voice.   These
parameters  are listed below and are described in the chapter on
modifying voices.
       bf      Baseline fall, in Hz
       hr      Hat rise, in Hz
       sr      Stress rise, in Hz
       as      Assertiveness, in percent
       qu      Quickness, in percent
       ap      Average pitch, in Hz
       pr      Pitch range, in percent
      Baseline Fall, bf
The bf parameter (baseline fall in Hz) determines one aspect  of
the dynamic fundamental frequency contour for a sentence. If  bf
is  0,  the  reference  baseline   fundamental  frequency  of  a
sentence begins at 115 Hz and ends at  this frequency. All rule-
governed dynamic swings in f0 are  computed with respect to  the
reference baseline.
Some  speakers  begin a sentence at a higher f0,  and  gradually
fall   as  the  sentence  progresses.  This  "falling  baseline"
behavior can  be simulated by setting bf to the desired fall  in
Hz.  For example,  setting bf to 20 Hz will cause the f0 pattern
for a sentence to  begin at 125 Hz (115 Hz plus half of bf), and
fall at a rate of 16  Hz per second until it reaches 105 Hz (115
Hz  minus half of bf).  The baseline remains at this lower value
until  it  is reset  automatically before the beginning  of  the
next  full  sentence  (right after a period, question  mark,  or
exclamation  point). The  rate of fall, 16  Hz  per  second,  is
fixed, no matter what the  extent of the fall.
Whenever  you include a [+] phoneme in the text to indicate  the
beginning of a paragraph, the baseline is automatically  set  to
begin  slightly higher for the first sentence of the  paragraph.
The   following  sentences of a paragraph are all  identical  in
having a  normal baseline fall.
While baseline fall differs among the speakers, it is not a very
good  cue for differentiating between speakers. As long  as  the
fall   is  not  excessive,  its  presence  or  absence  is   not
particularly  noticeable.
      Hat Rise, hr
The  hr  (nominal hat rise in Hz) and sr (nominal stress impulse
rise  in  Hz)  parameters  determine  aspects   of  the  dynamic
fundamental  frequency contour for a sentence. To  modify  these
values selectively, you should understand how the f0  contour is
computed  as a function of lexical stress pattern and  syntactic
structure of the sentence.
A  sentence  is  first  analyzed and broken  into  clauses  with
punctuation  and  clause-introducing  words  to  determine   the
locations  of  clause  boundaries. Within each  clause,  the  f0
contour  rises on the first stressed syllable, stays at  a  high
level  for  the remainder of the clause up to the last  stressed
syllable, and  falls dramatically on the last stressed syllable.
This  rise-at-the-beginning and fall-at-the-end pattern has been
called   the  "hat pattern" by linguists, using the  analogy  of
jumping from  the brim of a hat to the top of the hat, back down
again.
The  hat  rise  parameter, hr, indicates the nominal  height  in
hertz   of  a pitch rise to a plateau on the first stress  of  a
phrase.  A   corresponding pitch fall is placed by rule  on  the
last  stress of  the phrase. Some speakers use relatively  large
hat  rises  and   falls, while others use a local "impulse-like"
rise  and fall on  each stressed syllable. The default hr  value
for  Paul  is  22  Hz, indicating that the f0  contour  rises  a
nominal 22 Hz when going from the brim to the top of the hat. To
simulate  a speaker who does not use hat rises and falls,  enter
the  command [:dv hr 0].
Other  aspects  of  the  hat pattern are important  for  natural
intonation   but   are   not  accessible  by  speaker-definition
commands.   For  example, the hat fall  becomes  a  weaker  fall
followed by a  slight continuation rise if the clause is  to  be
succeeded  by  more   clauses in the  same  sentence.  Also,  if
unstressed  syllables follow  the last stressed  syllable  in  a
clause,  part  of  the  hat  fall   occurs  on  the  very   last
(unstressed)  syllable of the clause. If  the  clause  is  long,
DECtalk  may  break  it into two hat patterns  by   finding  the
boundary between the noun phrase and verb phrase.
If  DECtalk is in phoneme input mode and you use the pitch  rise
[/]   and  pitch fall [\] symbols, the hr parameter   determines
the actual rise and fall in Hz.
      Stress Rise, sr
The sr parameter indicates the nominal height, in Hz, of a local
pitch  rise and fall on each stressed  syllable. This  rise-fall
is added to any hat rise or fall that may  also be present.  For
example, Paul has pr set to 32 Hz, resulting in an f0 rise-fall

gesture  of 32 Hz over a  span of about 150 ms, which is located
on  the  first  and  succeeding   stressed  syllables.  However,
DECtalk  rules  reduce the actual  height of  successive  stress
rises and falls in each clause, and  cause the last stress pulse
to occur early so that there is time for the hat fall during the
vowel.
If  the  sr parameter is set too low, the speech sounds monotone
within  long  phrases. Great changes to hr  and  sr  from  their
default  values for each speaker are not necessary or desirable,
except in  unusual circumstances.
     Assertiveness, as
Assertive  voices have a dramatic fall in pitch at  the  end  of
utterances. Neutral or meek speakers  often end a sentence  with
a  slight "questioning" rise in pitch to  deflect any challenges
to  their  assertions. The as parameter, in  percent,  indicates
the  degree to which the voice tends to end  statements  with  a
conclusive final fall. A value of 100 is very  assertive,  while
a value of 0 is maximally meek.
      Quickness, qu
The qu parameter, in percent, controls  the speed of response to
a  request  to change the pitch. All hat  rises, hat falls,  and
stress rises can be thought of as suddenly  applied commands  to
change the pitch, but the larynx is sluggish,  and responds only
gradually to each command. A smaller larynx  typically  responds
more  quickly, so while Harry has a quickness  value of 10,  Kit
has a value of 50.
In  engineering  terms, a value of 10 implies  a  time  constant
(time   to get to 70 percent of a suddenly applied step  target)
of  about  100 ms. A value of 90 percent corresponds to  a  time
constant  of  about 50 ms. Lower quickness values may mean  that
the  f0  never   quite  reaches the target value  before  a  new
command comes along to  change the target, but this is perfectly
natural.
      Average Pitch, ap, and Pitch Range, pr
The  ap (average pitch in Hz) and pr (pitch range in percent  of
normal   range)   parameters  modify  the  computed  values   of
fundamental frequency,  f0, according to the formula:
       f0' = ap + (((f0 - 120) * pr) / 100)
If  ap is set to 120 Hz and pr to 100 percent, there will be  no
change to the "normal" f0 contour that is computed for a typical
male  voice.  The  effect  of  a  change  in  ap  is  simply  to
independently  raise  or lower the entire  pitch  contour  by  a
constant  number of Hz, while the effect of pr is to  expand  or
contract the swings in pitch about 120 Hz.
Normally,  a  smaller larynx simultaneously produces  f0  values
that   are higher in average pitch and higher in pitch range  by
about the  same factor (the whole f0 contour is multiplied by  a
constant   factor). Observing the values assigned to ap  and  pr
for  each  of   the voices (Appendix D), you can  see  that  the
voices  rank  in  average pitch from low (Harry) to high  (Kit).
Rankings for pr are  similar, except that Frank has a flat, non-
expressive pitch range  compared with his average pitch.
The best way to determine a good pitch range for a new voice  is
by   trial  and  error. You can create a monotone or  robot-like
voice  by   setting the pitch range to 0. For example,  to  make
Harry  speak in  a monotone at exactly 90 Hz, type the following
command.
        [:nh :dv ap 90 pr 0] I am a robot.
Reducing  the  pitch range reduces the dynamics  of  the  voice,
producing  emotions such as sadness. Increasing the pitch  range
while  leaving the average pitch the same or setting it slightly
higher suggests excitement.
Due  to  constraints involved in pitch-synchronous  updating  of
other    dynamically   changing  parameters,   the   fundamental
frequency contour  that is computed by the above formula is then
checked for values  that are out of bounds with respect  to  the
following limits.
       f0 maximum = 500 Hz
       f0 minimum = 50 Hz
Any  value  outside  this range is limited to  fall  within  the
range.
To  keep  you from exceeding reasonable limits on the parameters
controlling  pitch,  constraints have  been  placed   on  values
selected.  If  a [:dv _] command requests values outside   these
limits,  the  request  is limited to the  nearest  listed  value
before execution.
     CHANGING RELATIVE GAINS AND AVOIDING OVERLOADS
Eight speaker-definition parameters control the output levels of
various internal resonators. These parameters are listed below.

       gv      Gain of voicing source, in dB
       gh      Gain of aspiration source, in dB
       gf      Gain of frication source, in dB                                        gn      Gain of
nasalization, in dB
       g1      Gain of cascade formant resonator 1, in dB
       g2      Gain of cascade formant resonator 2, in dB
       g3      Gain of cascade formant resonator 3, in dB

       g4      Gain of cascade formant resonator 4, in dB                             g5      Loudness of the
voice, in dB
     Loudness g5
Each  predefined voice has been adjusted to have about the  same
perceived loudness, a value that is about  optimum for telephone
conversation.  The  value chosen is near  maximum  (if  loudness
were  increased  much, some phonemes would   probably  cause  an
overload squawk). A near maximum value was  selected to maximize
the signal-to-noise level of DECtalk.
If  you  want  to decrease the loudness of a voice,  or  make  a
temporary  increase for a phrase that is known not to  overload,
determine  the  g5 value in dB for the voice in  question   Then
adjust the voice by using the  following command.
        [:np  :dv g5 76]. I am speaking at about half my  normal
level.
Because  the  g5  entry  for Paul is 86, this  command   reduces
loudness by 10 dB. Perceived loudness approximately  doubles (or
halves) for each 10 dB increment (decrement) in g5.
Software  control  over  loudness is  useful  in  a  loudspeaker
application where the background noise level in the  room  might
change.  For  example,  a  vocally handicapped  wheelchair-bound
person   does  not  want to appear to be  shouting  in  a  quiet
interpersonal  conversation, but may wish to be able to converse
in  a  noisy  room   as  well.  Using  a  software  abbreviation
facility,  such  a  person  could type lo to  select  a  command
making  the voice maximally loud,  and sof to invoke  a  command
setting g5 to a reduced value.
Note:  DECtalk  comes  with both software  and  hardware  volume
control so that the modification of the g5 parameter should  not
be  necessary.  Using the [:volume ...] command  or  the  volume
control knob on the external loudspeaker is recommended.
     Sound Source Gains, gv, gh, gf, and gn
Several  types  of  sound  sources are activated  during  speech
production:  voicing,   aspiration, and  frication  as  well  as
nasalization.  The relative output levels of these   sounds,  in
dB,  are  determined  by  the gv, gh,  gf,  and  gn   parameters
respectively.  The default settings  for  these parameters  have
been  factory pre-set to maximize the  intelligibility  of  each
voice.  However,  changing  the  settings  can   be  useful   in
debugging  the  system  or  in  demonstrating  aspects  of   the
acoustic  theory  of  speech production. You  could  change  the
level  of  one  sound  source globally. For  example,  turn  off
frication  to  be able to hear just the output  of  the  larynx.
These   parameters might have to be reduced to overcome  certain
kinds  of  overloads, but try the procedure in the next  section
first.
     Cascade Vocal Tract Gains, g1, g2, g3, and g4
Changes  in head size or other parameters can sometimes  produce
overloads   in  the synthesizer circuits. If this occurs,  first
check  to  see  that f4 and f5 are set to reasonable values.  If
the  squawk   remains, you can adjust several gain controls,  g1
through  g4  in  the  cascade  of  formant  resonators  of   the
synthesizer  to  attenuate the signal at critical points.  These
voice levels can then be amplified back to desired output levels
later in the synthesis.
Use  the  following procedure to correct an overload  (typically
indicated by a squawk during part of a word).
1.     Synthesize the word or phrase several times to make sure
        the  squawk occurs consistently. Use the same test  word
each time one
       of the following changes to a gain is made.
2.      Determine the default values for g1 through g4  for  the
voice that     overloads.
3.      Reduce g1 by increments of 3 until the squawk goes away.
When  the squawk goes away, note the reduction  that was needed.
If  more  than  a  10  dB  decrement is   required,  some  other
parameter  has  probably been changed  too much. If  the  squawk
does not go away at all, then you  may need to reduce gv instead
of g1.
4.      Increment g5 by the g1 decrement to return the output to
its original level. For example, if g1 was reduced by 6 dB,  add
6 dB to g5 (or g4 if g5 is already maximum). If  incrementing g5
causes the squawk to return, decrease g5 slowly until the squawk
goes away.
This procedure works in most cases, but using g2 rather than  g1
can  work  better. If you can return g1 to its  factory  pre-set
value  and  reduce g2 instead to make the squawk go  away,  then
the  signal-to-quantization-noise level in g1 remains maximized.
If  you fix the squawk by using g3 or g4 rather than g2, more of
the cascaded resonator system can be made immune to quantization
noise accumulation.
     THE [SAVE ] PARAMETER AND [:NV] VOICE
You  can  save  a modified speaker definition in a buffer  while
synthesizing  speech with one of the other voices. The  Variable
Val   voice  [:nv] is either male or female, depending  on  what
values  are stored in the buffer. If you call Val before storing
any  values in  the buffer, DECtalk uses the Perfect Paul  voice
[:np].  The  following commands store a modified Betty voice  in
Val and then  recall it.
       [:nb :dv sex m save ]
       (Store the modified Betty voice in Val.)
       [:np] I am Paul.
       (Use another voice.)
       [:nv] I am Val.
       (Recall the Val voice.)
The  buffer holds its contents until you power down DECtalk. You
must re-enter new voice characteristics if you turn off DECtalk.
Note: If you wish to use the save command, leave a space between
the command and the trailing bracket, e.g., [:dv save ]
     SUMMARY OF SPEAKER-DEFINITION PARAMETERS
Of  the 27 parameters, only a few cause dramatic changes in  the
voice. The greatest effects are obtained with changes to hs, ap,
pr,  and sx, while moderate changes occur when modifying la  and
br.   To some extent, DECtalk's nine factory-set speakers  cover
most of  the possible voices, so don't expect to be able to find
a  voice   that  is highly novel and intelligible. However,  you
might  easily  find ways to slightly improve one of the standard
voices.
VOICE COMMAND SYNTAX
DECtalk uses the following voice command syntax:
       1. Begin every command with a bracket and colon ([:).
        2.  Separate each command and its parameter(s) from  the
text
       by a valid word boundary marker such as a space, tab, or
         carriage return.
        3.  You can include several commands in the same square-
bracket set.
               [:ra 150 :nb] Hello. How are you?
        4. You can include several parameters in the same square
bracket set if
        the command allows more than one  parameter. If you  use
several
        parameters,  you  must give  them all  before  a  second
command in the
        same square  bracket set.
               [:dv ap 160 pr 50 save :nv] Hi there.
                 (The  parameter  group  modifies  the  [:dv  _]
command.)
               [:dv ap 160 save  :nv pr 50] Hi there.
               (Wrong. The parameter group is out of place.)
        5.  If  you give two conflicting parameters or commands,
DECtalk will
         use the last command in the sequence. For  example,  if
you type
               [:nb :np] Hello.
               DECtalk will use Paul's voice.
        6.  You  can  use  phonemic symbols in the  same  square
brackets       with voice commands.
               Now I'm [:dv ap 90 pr 130 r"iyliy] thrilled!
       7.  If the value in a [:dv _] command is too low,
DECtalk will use the
       minimum valid value. If the value is too  high, the
maximum valid value
       will be used.
       8. Once you give a command, that command applies to all
further text
        until overridden by another command. For  example, the
command
       [:nk] will make DECtalk use Kit's voice until you enter
another new
       voice command.
        9.   All  [:dv _] commands are lost when you power  down
DECtalk.
       10. Invalid commands are ignored. Set the [:error ...]
command to
       receive an audible warning that an invalid command has
been entered.
TEXT TUNING EXAMPLE
The  following  is  an  example of  how  to  tune  text.  Speech
synthesis technology allows for more natural text-to-speech with
each  passing year. However, there are still areas in the speech
which  can  be  "tuned-up" for more naturalness.  Much  of  this
involves  the  strategic  placing of commas  and  periods  which
essentially  tell  the DECtalk to pause as a native  speaker  of
English  would when speaking the same text because written  text
often lacks infomration about pauses that are nor

mal  in  speaking. The text below is presented twice, the  first
time  as  originally written, and the second time after phonemic
and textual  fixes were applied.
Original Version
[:np]
     A California Shaggy Bear Tale for Seven DECtalk Voices
                         by Dennis Klatt
[:np]  Once upon a time, there were three bears. They  lived  in
the  great forest, and tried to adjust to modern times
[:nh] I'm papa bear. I love my family but I love honey best.
[:nb] I'm mama bear. Being a mama bear is a drag.
[:nk]  I'm baby bear and I have trouble relating to all  of  the
demands of older bears.
[:np]  One day, the three bears left their condominium to search
for  honey.  While they were gone, a beautiful young lady  snuck
into  the bedroom through an open window.
[:nw]  My name is Whispering Wendy. My purpose in entering  this
building  should  be clear. I am planning to  steal  the  family
jewels.
[:np]  Hot  on her trail was the famous police detective,  Frail
Frank.
[:nf]  Have  you  seen a lady carrying a laundry  bag  over  her
shoulder?
[:np] A woman kneeling with her left ear firmly placed against a
large rock responded.
[:nu]  No.  No  one  passed this way. I've  been  listening  for
earthquakes  all  morning,  but have only  spotted  three  bears
searching for honey.
Changed Version
[:np]
Add periods after the title and author.
A California Shaggy Bear Tale for Seven DECtalk Voices.
By Dennis Klatt.
Make phonemic corrections.
[:nh]  This  story was used to demonstrate DECtalk at ['aykaesp]
84,  in May of 1984, at San Diego California.
[:np]  Once upon a time, there were three bears. They  lived  in
the  great forest and tried to adjust to modern times.
Add commas and emphatic stress.
[:nh] I'm papa bear. I love my family, but I love ["]honey best.
[:nb] I'm mama bear. Being a mama bear is a drag.
[:nk]  I'm baby bear and I have trouble relating to all  of  the
demands of older bears.
Begin a verb phrase.
[:np]  One  day,  the three bears [)] left their condominium  to
search  for honey. While they were gone, a beautiful young  lady
snuck into the bedroom through an open window.
[:nw]  My name is Whispering Wendy. My purpose in entering  this
building  should  be clear. I am planning to  steal  the  family
jewels.
Begin a new paragraph.
[:np]  [+]  Hot  on  her trail was the famous police  detective,
Frail  Frank.
[:nf]  Have  you  seen a lady carrying a laundry  bag  over  her
shoulder?
Add commas for phrasing.
[:np]  A woman, kneeling with her left ear firmly placed against
a  large rock, responded.
Add pitch control and emphatic stress.
[:nu]  ["]No. No [/]one passed this [/\]way. I've been listening
for  ["]earthquakes  all morning, but have  only  spotted  three
bears  searching for honey.
                                
                                
                                
                                
                            CHAPTER 7
             DEVELOPING AN ADVANCED SPEECH APPLICATION
                                
                                
Application Control of DECtalk
       The development process described in this manual assumes
that your  application has full control over the text being
spoken. If you  are developing an application that must read
arbitrary text (such  as electronic mail messages), your task is
more difficult because almost anything can appear in the text.
DECtalk  is  controlled  by  your PC.  and  even   the  smallest
personal computer has enough power to pre-process  (filter) text
to handle application-unique cases. So, you can put  application-
specific text filters in the controlling computer,  rather  than
add  many additional special cases (and switches to  enable  and
disable them) to DECtalk.
Electronic Mail Example
For  an  electronic mail system, you can program  an  electronic
mail   pre-processor  to  make  the following  text  conversions
before sending  the text to DECtalk.
PARSE BOILERPLATE
1.       Parse  the  header  boilerplate  to  remove  extraneous
information.
ADDING NATURAL PAUSES
2.      If  DECtalk is speaking paragraphs of text, add the  [+]
symbol to a blank       line separating each paragraph.
PROCESS PUNCTUATION
3.      If  words are separated by / or other special characters
or  punctuation, and if DECtalk pronounces them when you do  not
want  them  pronounced,  check to see if punctuation  is  turned
off.  If  it is not, turn punctuation off with the [:punc  none]
command.  You  may also replace such characters  or  punctuation
with   a  space.  For  example,  "Raleigh/Durham"  could  become
"Raleigh Durham" and  DECtalk will say it  without spelling  out
the entire string).
APPLICATION SPECIFIC DICTIONARY
4.      Create  your  own  application-specific  dictionary  for
words  that  DECtalk  mispronounces such  as  proper  names.  If
DECtalk  is  connected to a database containing names,  consider
adding  a  pronunciation  field to the  name  record,   entering
phonemic text when appropriate.
PROPER NAME PROCESSING
Note:  DECtalk  is  now  able to handle many  proper  names  and
addresses quite well using the [:pronounce name] or [:mode name]
commands.
NUMBER PROCESSING
5.      Scan  the  text  for  strings of  numbers  in  a  format
understandable  to  your application but not  to  DECtalk.   For
example,  if you can extract the time format from an  electronic
mail message, you can add code to your application to expand  it
to its "o'clock" form.
6.      In  many applications, the listener will want  to  write
down  numberstrings (such as prices or telephone  numbers). Your
application can scan the text for strings  of numbers and,  when
found,  send them to DECtalk in a way  that includes  pauses  at
critical locations. For example:
        The number is, 1 (800) 5 5 5, 1 2 3 4.

        [:ra  120]  That is, [_<300>] 1 (800), [_<500>] 5  5  5,
[_<900>] 1 2 3 4.      [:ra 180].
The spaces between the numbers ensure that "five five  five"  is
spoken rather than "five hundred and fifty  five." (You may also
use  the  [:mode  spell on] command. In the second  string,  the
slower  speaking  rate  and the silence  phonemes  of  specified
durations permit  enough time for the listener to write down the
entire    number.   Silence   phonemes   positioned   after   an
orthographic comma maintain appropriate intonation.
         As  another  example, if your application speaks  money
(such as bank balances or item costs), it might say
                Your balance is $244.05
                 That  is,  2 4 4, [_<400>] point 0 5,  [_<400>]
dollars.
CASE OF LETTERS
7.      When spelling an item out, your application may have  to
distinguish  the  case  of  letters.  Consider  using  different
voices  to distinguish between uppercase and lowercase   letters
(for  example,  Harry  and  Paul). Some screen-reading  software
provides this functionality.
OPTIMIZING THE QUALITY OF SPOKEN TEXT

In  some applications, it is important to get a few sentences to
sound  very  good because they are used often.  Usually  DECtalk
does  an  excellent  job, but the phrasing can  occasionally  be
improved.  To  improve the quality of a particular sentence, the
following steps  are suggested.
****  Say  someting about the phonemic mode and how to  turn  it
ON/OFF.
1.    Send  the  sentence  to  DECtalk  and  listen  repeatedly,
focusing on each word in turn to detect any  mispronunciations.
2.   For  each  word  that is mispronounced, there  are  several
alternatives to get the corect pronunciation.
For  words that have two alternate pronunciations, (see Appendix
C for a complete list),  DECtalk typically picks the more common
of  the two. If the other pronunciation is desired, simply enter
it  in  phonemic  text. For example, if you type  the  following
sentences:
       He produced a lot of refuse.
       He refused the produce.
       He inserts 5 inserts per minute.
       He  deliberated  deliberately for a long time.
You can hear that some of these alternately pronounced words are
incorrect.   However,  when DECtalk is able to do most of  these
these  automatically, no procedure is infallible, and there  are
times when you may need to correct the pronunciation.
You can correct such mistakes in two ways:
        a.   Replace  the correct spelling of the  word  with  a
clever         misspelling.
                I red yesterday that . . .
       b.  Phonemicize the text
               I [r'ehd] yesterday that . . .
       c.  Use the slash notation:
               I  /read yesterday that . . .
3.  If the word is a compound, use a hyphenated spelling to help
DECtalk see the two parts of the compound.
                The slide-show host . . .
4.  Replace  the  text  version by a phonemic  string.  Use  the
commands and phonemic symbols described above. Be sure to  place
the lexical  stress  pattern correctly.
5.  Sometimes a word does not sound quite right, even  when  the
best  alternate  phonemic representation is selected.   Usually,
such subtle pronunciation defects are not  correctable.
6.  Now that each word has been pronounced in the best  possible
way, listen to the total sentence rhythm and  accent pattern. If
it is not right, try each of the  following steps.
7.  If  it  sounds  like there should be  a  short  pause  in  a
particular  sentence location, but DECtalk  says  the   sentence
without  a pause, try inserting  a comma between  the  words  in
question.
8. If the wrong word is emphasized in the sentence, try to point
out  the  word that should receive most emphasis by   placing  a
phonemic emphasis symbol before it.
         The  ["]younger man is the trouble-maker, not the older
one.
9.  Use  the  pitch control symbols [/], [\], and [/\]  to  make
final adjustments.
10.  If  none of these steps gives you a satisfactory  sentence,
you  can  still  specify  durations  and  fundamental  frequency
contours for all phonemes with the commands described above.  To
avoid too much trial-and-error effort,  you shouldhave access to
a  speech analysis facility to  analyze a recording of  the  way
the sentence should sound.
COMMON ERRORS
When  using DECtalk, try to avoid making these two common, major
errors.
1. Forgetting to change back to default voice
If you forget to return DECtalk to the standard Paul voice after
using  one  of  the other voices, all future text will  use  the
voice  currently  selected. It is a good  programming  habit  to
return to  Paul's voice (or the default voice) after every  text
message.
2. Accidental entry into phonemic mode
If [:phoneme arpabet speak] is on, permitting phonemic input, it
is   possible to get into phonemic mode unintentionally. If  the
text  contains an unexpected [, or if you forget to type ] after
a   phonemic entry, DECtalk is left in a state where it tries to
interpret  text  phonemically. This error makes  DECtalk  garble
speech.  In  fact, DECtalk is simply doing the best  it  can  to
interpret  text  phonemically, discarding  phonemically  illegal
letters.  This  problem  can be avoided by  placing  one  closed
square  (phonemic) brackets at the beginning of your text  along
with your speaking rate and voice commands, e.g.,
       ]   [:ra 220] [:nh]
       [+] Ladies and Gentlemen .
                              
                         APPENDIX A
            CONFIGURATION FOR THE DECTALK PC BOARD
                              
In  DECtalk V4.1, there is no longer a BIOS ROM and  switch
settings have been simplified. The  I/O Address is now  the
only  selectable option. Table 1 list the default  settings
and Table 2 lists the available settings.

                TABLE 1 -  DEFAULT SETTINGS.
                              
       FUNCTION                       SWITCH
        Reserved                                Switch   1,
2, 3, 4, 5   Off
        I/O  Address = 340-34F                   Switch   6
Off.
                                      Switch  7        On
         Reserved                                Switch  8,
Off
         Reserved                                Switch  9,
Off
                              
          TABLE 2.  I/O ADDRESS SWITCH SELECTIONS.

       Switches                       I/O addresses
        6         7
       OFF  OFF                       240- 24F
       ON  OFF                 250 - 25F
       OFF  ON                 340 - 34F      (Default)
       ON   ON                 350 - 35F

The  DIP-switch  pack  default settings  are  therefore  as
follows:
1  OFF;    2 OFF;  3 OFF;    4 OFF;   5 OFF;    6 OFF;    7
ON;   8 OFF;  9 OFF
                              
                         APPENDIX B
                  DECTALK PHONEMIC SYMBOLS
                              
Several  English phonemic alphabets are widely used  today.
The  Table below  lists the phonemic alphabets that DECtalk
uses,   along   with  an  example  of  each   sound.   Some
dictionaries put the stress symbol after the vowel  nucleus
or   at  the start of the syllable.  DECtalk requires  that
the stress  symbol appear immediately  before the vowel.
MULTI-CHARACTER ALPHABET -
For USER DICTIONARY and PHONETIC Modifications to TEXT
VOWELS
            Phonemic         Example
            Symbol

               ey              bake
               aa              Bob
               iy              beat
               eh              bet
               ay              bite
               ih              bit
               oy              boy
               ow              boat
               uw              lute
               ah              but
               aw              bout
               yu              cute
               rr              bird
               ao              bought
               ae              bat
               uh              book
               ix              kisses
                ax             about

     CONSONANTS
            Phonemic       Example
            Symbol

               p               pet
               b               bet
               t               test
               d               debt
               k               Ken
               g               guess
               f               fin
               v               vest
               th              thin
               dh              this
               s               sit
               z               zoo
               sh              shin
               zh              measure
               ch              chin
               jh              gin
               m               met
               n               net
               nx              sing
               w               wet
               yx              yet
               hx              head
               r               red
               l               let
               el              bottle
               en              button
Note:  the [em] phoneme in the early version of DECtalk  is
no  longer  valid  but can be replaced  with  the  sequence
[axm].
                       Allophones
               rx              oration (postvocalic r)
               lx              electric (postvocalic l)
               q               we eat (glottal stop)
               dx              rider (flap d)
               tx              Latin (glottalized t)
ONE-CHARACTER PHONETIC ALPHABET  (FOR REDEFINING TYPING
TABLES:
VOWELS
            Phonemic         Example
            Symbol
               e               bake
               a               Bob
               i               beat
               E               bet
               A               bite
               I               bit
               O               boy
               o               boat
               u               lute
               ^               but
               W               bout
               Y               cute
               R               bird
               c               bought
               @               bat
               U               book
               |               kisses
               x               about

CONSONANTS
               p               pet
               b               bet
               t               test
               d               debt
               k               Ken
               g               guess
               f               fin
               v               vest
               T               thin
               D               this
               s               sit
               z               zoo
               S               shin
               Z               measure
               C               chin
               J               gin
               m               met
               n               net
               G               sing
               w               wet
               yx              yet
               h               head
               r               red
               l               let
               L               bottle
               N               button
Note:  For  defining pitch within typing  tables,  use  the
command  [:pitch  nn]. This changes the  default  pitch  in
typing  mode  from  +35 to +nn where  nn  is  some  decimal
number.
Stress and Syntactic Symbols  (used with both alphabets)
           SYMBOL              FUNCTION

               '               primary stress
               `               secondary stress
               "               emphatic stress
               -               syllable boundary
               *               morpheme boundary
                 #                word  boundary  (compound
nouns)
               <SP>            word boundary
               <TAB>           word boundary
               <RET>           word boundary
                 (                 beginning  of   relative
clause
               )               end of relative clause
                ,                end  of  clause  (same  as
comma)
               .               end of normal sentence
               ?               end of question
               !               end of exclamation
               _               silence (underscore symbol)
MUSical Notes
DECtalk  can  also be used to sing songs  or  make  various
sounds associated with singing and tones. The following  is
a  table that allows the developer to more easily encode  a
phonemic sequence to produce such sounds.
Note:  In  DECtalk  DTC01, the pitch was  calibrated  to  a
physical  scale.  The new pitches are now calibrated  to  a
musical  scale.  This will put them on the  same  scale  as
musical  instruments (i.e., middle A = 440 Hz  rather  than
430.4 Hz).
The  Number  is  the code used for Pitch, in  the  phonemic
command [<duration,pitch>].
Number Note    Pitch (Hz)
1      C2      65
2      C#      69
3      D       73
4      D#      77
5      E       82      B
6      F       87      A
7      F#      92      S
8      G       98      S       B
9      G#      103     |       A
10     A       110     |       R
11     A#      116     |       I
12     B       123     |       T
13     C3      130     |       O      T
14     C#      138     |       N      E
15     D       146     |       E      N
16     D#      155     |       |      O
17     E       164     |       |      R
18     F       174     |       |      |       A
19     F#      185     |       |      |       L
20     G       196     |       |      |       T
21     G#      207     |       |      |       O
22     A       220     |       |      |       |
23     A#      233     |       |      |       |
24     B       247     |       |      |       |       S
25     C4      261     |       |      |       |       O
26     C#      277     |       |      |       |       P
27     D       293     |       |      |       |       R
28     D#      311     |       |      |       |       A
29     E       329     |       |      |       |       N
30     F       348             |      |       |       O
31     F#      370             |      |       |       |
32     G       392             |      |       |       |
33     G#      415                    |       |       |
34     A       440                    |       |       |
35     A#      466                    |       |       |
36     B       494                    |       |       |
37     C5      523                            |       |
Note: C4 is middle C
                              
                              
                              
                              
                         APPENDIX C
                          HOMOGRAPHS
                              
Homographs Defined
Homographs are pairs of words which are spelled exactly the
same but are pronounced  differently. These often differ in
terms of which syllable is accented. For example, if permit
is  a  noun, the accent is on the first syllable  (permit);
if, however, the word is used as a verb, then the accent is
on  the second syllable (permit). This often makes a  great
deal  of  difference  in  understanding  when  DECtalk   is
speaking such words in connected discourse.
Homograph Processing
In earlier versions of DECtalk, the default form was always
the noun. In later versions of DECtalk, the default form is
the  more  frequent form of the two. In V4.1,  the  correct
form  of the hmograph is done automatically.  You may  also
use  the  [:pronounce  primary] and [:pronounce  alternate]
commands to obtain the primary and alternate pronunciations
of  these  words respectively (asee the list below).  Other
methods  of  obtaining  alternate  pronunciations  are  (a)
inserting  the correct phonetics from the list  below;  (b)
preceding  the word with a slash ("/").
For  example,  the word read ([r'iyd]) will be the  default
pronunciation.  The  alternate pronunciation  of  the  same
word, read, (past tense [r'ehd]) is done by placing a slant
immediately  before the word, i.e., /read or by  using  the
[:pronounce  alternate] command (e.g., [:pron  alt]  read).
DECtalk  handles more homographs than any previous  version
of  DECtalk and V4.1 automatically pronounces most of these
correctly.
Homograph Table
The  Table  below is a new and expanded list of the  common
homographs  of  English with alternative pronunciations  in
phonetic  transcription. In those cases where DECtalk  does
not  chose  the correct pronunciation, you can  simply  use
slants,    [:pronounce   primary]/[:pronounce    alternate]
commands,  or  insert the correct phonetic equivalent  from
the list below.
                       HOMOGRAPH TABLE
                              
SPELLING       PRIMARY         ALTERNATE
abstract       'aebstraekt     aebstr'aekt
abuse          axby'uz         axby'us
addict         axd'ihkt        'aedihkt
advocate       'aedvaxkeyt     'aedvaxkaxt
affix          'aefihks        axf'ihks
ally           'aelay          axl'ay
alternate      'aoltrrnaxt     aoltrrneyt
animate        'aenihmeyt      'aenihmaxt
annex          'aenehks        axn'ehks
appropriate    axpr'owpriyaxt  axpr'owpriyeyt
arithmetic     axr'ihthmaxtix  aerixthm'ehtixk
               k
articulate     aart'ihkyeleyt  aart'ihkyelaxt
associate      axs'owshiyeyt   axs'owshiyaxt
attribute      axtr'ihbyuwt    'aetrixbyuwt
august         'aogaxst        aog'ahst
bass           b'eys           b'aes
baton          baxt'aon        b'aetaxn
close          kl'owz          kl'ows
combat         kaxmb'aet       k'aambaet
combine        kaxmb'ayn       k'aambayn
compact        kaxmp'aekt      k'aampaekt
complex        k'aamplehks     kaxmpl'ehks
compound       k'aampawnd      kaxmp'awnd
compress       kaxmpr'ehs      k'aamprehs
concert        k'aansrrt       kaxns'rrt
conduct        kaxnd'ahkt      k'aandahkt
confederate    kaxnf'ehdrrixt  kaxnf'ehdrreyt
confine        kaxnf'ayn       k'aanfayn
conflict       k'aanflihkt     kaxnfl'ihkt
conglomerate   kaxnxgl'aamrix  kaxnxgl'aamrreyt
               t
console        k'aansowl       kaxns'owl
construct      kaxnstr'ahkt    k'aanstraxkt
content        k'aantehnt      kaxnt'ehnt
contest        k'aantehst      kaxnt'ehst
contract       k'aantraekt     kaxntr'aekt
contrast       k'aantraest     kaxntr'aest
converse       k'aanvrrs       kaxnv'rrs
convert        kaxnv'rrt       k'aanvrrt
                 HOMOGRAPH TABLE (continued)
                              
SPELLING       PRIMARY         ALTERNATE
convict        kaxnv'ihkt      k'aanvihkt
coordinate     kow'aordeneyt   kow'aordixnaxt
decrease       diykr'iys       d'iykriys
defect         daxf'ehkt       d'iyfehkt
delegate       d'ehlixgaxt     d'ehlixg`eyt
deliberate     daxl'ihbrraxt   daxl'ihbrreyt
desert         d'ehzrrt        dixz'rrt
desolate       d'ehselixt      d'ehseleyt
diffuse        dixf'yuws       dixf'yuwz
digest         d'ayjhehst      dayjh'ehst
discount       d'ihskawnt      dihsk'awnt
dove           d'owv           d'ahv
duplicate      d'uwplixkeyt    d'uwplixkaxt
elaborate      axl'aebrraxt    axl'aebrreyt
estimate       'ehstixmeyt     'ehstixmaxt
excerpt        'ehksrrpt       ehks'rrpt
excuse         ixksky'uwz      ehksky'uws
expatriate     ehksp'eytriyax  ehksp'eytriyeyt
               t
exploit        ixkspl'oyt      'ehksployt
export         ehksp'ort       'ehksport
extract        ehkstr'aekt     'ehkstraekt
ferment        frrm'ehnt       f'rrmehnt
frequent       fr'iykwixnt     friykw'ehnt
geminate       jh'ehmixnaxt    jh'ehmixneyt
graduate       gr'aejhuweyt    gr'aejhuwaxt
impact         'ihmpaekt       ixmp'aekt
implant        ihmpl'aent      'ihmplaent
import         'ihmport        ihmp'ort
imprint        'ihmprihnt      ihmpr'ihnt
incense        ixns'ehns       'ihnsehns
incline        ixnkl'ayn       'ihnklayn
increase       ihnkr'iys       'ihnkriys
insert         ihns'rrt        'ihnsrrt
insult         ihns'ahlt       'ihnsaxlt
interchange    'ihntrrcheynjh  ihntrrch'eynjh
intimate       'ihntaxmaxt     'ihntaxmeyt
invalid        ixnv'aelixd     'ihnvaxlixd
just           jhixst          jh'ahst
                 HOMOGRAPH TABLE (continued)
                              
SPELLING       PRIMARY         ALTERNATE
lead           l'iyd           l'ehd
live           l'ihv           l'ayv
minute         m'ihnixt        mayn'uwt
miscount       m'ihskawnt      mihsk'awnt
misprint       m'ihsprihnt     mihspr'ihnt
misuse         mixs'yuz        mixs'yus
moderate       m'aadrraxt      m'aadrreyt
object         'aabjhehkt      axbjh'ehkt
overrun        'owvrrrahn      owvrrr'ahn
perfect        p'rrfixkt       prrf'ehkt
permit         prrm'iht        p'rrmiht
pervert        prrv'rrt        p'rrvrrt
polish         p'aalihsh       p'owlixsh
postulate      p'aascheleyt    p'aaschelaxt
predicate      pr'ehdixkeyt    pr'ehdixkaxt
predominate    prixd'aamixney  prixd'aamixnaxt
               t
present        priyz'ehnt      pr'ehzaxnt
proceed        praxs'iyd       pr'owsiyd
produce        praxd'uws       pr'aaduws (pr'owduws)
progress       pr'aagrehs      praxgr'ehs
project        pr'aajhehkt     praxjh'ehkt
protest        pr'owtehst      prowt'ehst
read           r'iyd           r'ehd
reading        r'iydixnx       r'ehdixnx
rebel          r'ehbel         rixb'ehl
recall         rixk'aol        r'iykaol
recap          riyk'aep        r'iykaep
recess         r'iysehs        riys'ehs
record         r'ehkrrd        rixk'ord
recount        riyk'awnt       r'iykawnt
refill         r'iyfihl        riyf'ihl
refresh        riyfr'ehsh      r'iyfrehsh
refund         riyf'ahnd       r'iyfahnd
refuse         rixf'yuz        r'ehfyus
reject         rixjh'ehkt      r'iyjhehkt
relapse        r'iylaeps       rixl'aeps
relay          r'iyley         rixl'ey
remake         r'iymeyk        riym'eyk
rerun          r'iy*rahn       riy*r'ahn
                 HOMOGRAPH TABLE(continued)
                              
SPELLING       PRIMARY         ALTERNATE
research       r'iysrrch       riys'rrch
resume         riyz'uwm        r'ehzaxmey
retake         riyt'eyk        r'iyteyk
rewrite        riyr'ayt        r'iy*rayt
segment        s'ehgmixnt      sehgm'ehnt
separate       s'ehpaxreyt     s'ehpaxraxt
sow            s'ow            s'aw
subject        s'ahbjhehkt     saxbjh'ehkt
sublet         s'ahbleht       saxbl'eht
subordinate    saxb'ordenaxt   saxb'ordeneyt
survey         s'rrvey         srrv'ey
suspect        s'ahspehkt      saxsp'ehkt
syndicate      s'ihndixkixt    s'ihndixkeyt
tear           t'er            t'ir
torment        torm'ehnt       t'ormehnt
transform      traensf'orm     tr'aensform
transplant     traenspl'aent   tr'aensplaent
transport      traensp'ort     tr'aensport
upset          axps'eht        'ahpseht
use            y'uwz           y'uws
wind           w'ihnd          w'aynd
wound          w'awnd          w'uwnd

                              
                              
                              
                                   
                              APPENDIX D
                            VOICE PARAMETERS
                                   
Standard VOICES
The  following are the parameters which can be used to change DECtalk
voices:
ParameterVoice Name          Characteristics
  :np    Paul                Standard male voice
  :nb    Betty               Standard female voice
  :nh    Harry               Deep male voice
  :nf    Frank               Older male voice
  :nk    Kit the Kid         Child voice (about 10 years old)
  :nr    Rita                Deep female voice
  :nu    Ursula              Light female voice
  :nd    Dennis              Breathy male voice
  :nw    Wendy               Whispery female voice
  :nv    Variable Val        Definable voice
Voice Parameters
This section lists the various voice parameters which can be used  to
make modifications to the existing voices or create a new voice.  See
Chapter  6  for  a  detailed explanation of each of the  vocal  tract
parameters.
VOCAL TRACT PARAMETERS [:DV  ]
Parameter  Min      Max       Unit   Function
  sx        0        1         --     Set sex to female (0) or male (1)
  hs      65       145       %      Head size
  f4      2000     4650      Hz     Fourth formant frequency
  f5      2500     4950      Hz     Fifth formant frequency
  b4      100      2048      Hz     Fourth formant bandwidth
  b5      100      2048      Hz     Fifth formant bandwidth

VOICING (SOUND SOURCE) PARAMETERS
Parameter  Min      Max       Unit   Function
  br      0        72        dB     Breathiness
  lx      0        100       %      Lax breathiness
  sm      0        100       %      Smoothness (high frequency attenuation)
  ri      0        100       %      Richness
  nf      0        100       --     Number of fixed samplings
                                    of glottal pulse open phase
  la      0        100       %      Laryngealization
INTONATION PARAMETERS
Parameter Min      Max       Unit   Function
  bf      0        40        Hz     Baseline fall
  hr      2        100       Hz     Hat rise
  sr        1        100       Hz     Stress rise
  as      0        100       %      Assertiveness
  qu        0        100       %      Quickness
  ap      50       350       Hz     Average pitch
  pr      0        250       %      Pitch range
GAIN (ADJUSTMENT) PARAMETERS
Parameter Min      Max       Unit   Function
  gv      0        86        dB     Gain of voicing source
  gh      0        86        dB     Gain of aspiration source
  gf      0        86        dB     Gain of frication source
  gn      0        86        bB     Gain of nasalization
  g1      0        86        dB     Gain of first formant resonator
  g2      0        86        dB     Gain of second formant resonator
  g3      0        86        dB     Gain of third formant resonator
  g4      0        86        dB     Gain of fourth formant resonator
  g5      0        86        dB     Gain of fifth formant resonator
                                    (replaces lo)

SPEAKER DEFINITIONS FOR STANDARD (PREDEFINED) DECTALK VOICES
Param.  Paul Harry Frank  Dennis  Betty Ursula        Wendy                   Rita    Kit
  sx     1     1     1      1       0     0     0       0    0
  hs   100   115   90     105     100   95    100     95   80
  f4   3300  3300  3650   3200    4450  4500  4500    4000 2500
  f5   3650  3850  4200   3600    2500  2500  2500    2500 2500
  b4   260   200   280    240     260   230   400     250  2048
  b5   330   240   300    280     2048  2048  2048    2048 2048
  br   0     0     50     38      0     0     55      46   47
  lx   0     0     50     70      80    50    80      0    75
  sm   3     12    46     100     4     60    100     24   5
  ri   70    86    40     0       40    100   0       20   40
  nf   0     10    0      10      0     10    10      0    0
  la   0     0     5      0       0     0     0       4    0
  bf   18    9     9      9       0     8     0       0    0
  hr   18    20    20     20      14    20    20      20   20
  sr     32    30    22     22      20    32    22      32   22
  as   100   100   65     100     35    100   50      65   65
  qu     40    10    0      50      55    30    10      30   50
  ap   122   89    155    110     208   240   200     106  306
  pr   100   80    90     135     140   135   175     80   210
  gv   65    65    63     63      65    65    51      65   65
  gh   70    70    68     68      70    70    68      70   70
  gn   74    73    75     76      72    74    75      73   71
  gf   70    70    68     68      72    70    70      72   72
  g1   68    71    63     75      69    67    69      69   69
  g2   60    60    58     60      65    65    62      72   69
  g3   48    52    56     52      50    51    53      48   52
  g4   64    64    66     61      56    58    55      54   50
  g5   86    81    86     84      81    80    83      83   73

                                   
                                   
                              APPENDIX E
                         APPLICATION DICTIONARY
                                   
     DECtalk PC has memory allocated for a loadable dictionary. This
dictionary is useful in cases where (a) DECtalk makes an error in
pronounciation, or (b) the pronunciation of a string is unique to the
application.  For example, if the sequence n/cl should be pronounced
as "not cleared", then a user dictionary entry is obviously needed.
     To create and load a dictionary to DECtalk PC, you must do the
following:
     1. Create a dictionary table file using a text editor. The
     dictionary must be in the following format:
          (a) An entry must start at the first character of the line.
          Any space or illegal character as the first character of the
          line causes the line to be treated as a comment and it will
          therefore not be processed.
          (b) The syntax is:
               string to be pronounced  [phonemic substitution]
          Each line may be up to 256 characters long.
          (c) A grapheme (letter) string is comprised of legal
          graphemes. Legal graphemes are:
          
                    The letters A-Z and a-z,  the numbers 0-9 and
               select punctuation marks such as ", !, @, &, (, ), -,
          \,  and /.
          
                    NOTE: The punctuation mark characters may not be
          used at the beginning of the grapheme string.
          
               The grapheme string may be in either upper or lower
          case.
               Uppercase letters match only upper case; lowercase
          letters match either uppercase or lowercase.
          
          (d) The phoneme string is comprised of legal phonemes as
          listed in Appendix A, "Multi-character Phonemic Alphabet".
               Phonemes are always in square brackets but may be in
          either upper or lower case.
          
               For example,  to make the word "coffee" be pronounced
          as "tea", you would enter the following:
          
                    coffee    [t'iy]
          
          2. After creating your dictionary table file, you can
          compile into a dictionary file by doing the following:
          
               (a). Compile the dictionary by typing a command in the
               following format:
     
                    userdic   input dictionary table   output
     dictionary file
     
          Input files have the default extension of .tab any extension
     can be used.
          Output dictionary files have the extension of .dtu and must
     have that extension for the loader to find the file correctly. If
     no output file is specified, a file with the same name and .dtu
     extension will be created for the output.
     
          For example: if your dictionary table is called mydict.tab,
     type:
               userdic   mydict
     In this case, the input dictionary table file mydict.tab would be
     compiled into a new output dictionary file called mydict.dtu.
     
          3. Load the user dictionary by switching to the DECtalk file
     subdirectory and typing:
     
               dt_load   output file.dtu
     
          For example, you would type:
     
               dt_load   mydict.dtu
     
          Your customized dictionary is now loaded and ready for use.
     
          Note: User dictionary lookups are done after suffix
     stripping occurs. Therefore, inflected and derived forms should
     also be pronounced according to the dictionary entry.
     
               Note: The User dictionary can not be loaded onto the
     board more than once without first restarting either the DECtalk
     PC or rebooting the machine.
     
          Warning: If your PC is powered down, you must reload the
     user dictionary at power-up. To have a user dictionary loaded
     each time the PC is powered up, the compiled file name should be
     added to the end of the DT_LOAD command string in the
     AUTOEXEC.BAT file.


