Index of /knowledgemedia/SPEECH/AMIGA/TLPATCH

      Name                    Last modified       Size  Description

[DIR] Parent Directory 11-Jun-2003 14:43 - [TXT] EXCEPT.TBL 11-Jun-2003 14:43 11k [TXT] RENAME.BAT 11-Jun-2003 14:43 1k [DIR] SOURCE/ 11-Jun-2003 14:43 - [TXT] SPEECHTY 11-Jun-2003 14:43 15k [TXT] SPEECHTY.INF 11-Jun-2003 14:43 1k [TXT] TLPATCH 11-Jun-2003 14:43 12k [TXT] TRANSLAT 11-Jun-2003 14:43 7k


                         ***************************
                        **      TLPatch V1.0       **
                       *** Richard Sheppard - 1991 ***
                        **    Toronto, Canada      ** 
                         ***************************

          A utility to allow corrections in pronunciation for programs
       that use the Translate() function. It is offered as "freeware"
       without support (or liability) in return for my years of pleasure
       with the Amiga. I hope it can be useful.

          One of the unique features of the Amiga is its ability to 
       translate english text into spoken audio. This is a two-stage 
       process involving the Translate() function which converts the 
       text into phonemes, and the Narrator device which uses the 
       phonemes to synthesize the voice.
          Unfortunately, this feature appears to be underutilized, due
       perhaps to the many words which do not translate accurately.
       This program allows you to extract the exception table from the 
       translator.library, and using a text editor, edit the table 
       then restore it back into the library. It is meant to work 
       primarily with version 33.2 of the library and will warn if it 
       finds another one although that may or may not be fatal. It is 
       definitely a hack, so it could really scramble the code, but 
       since it creates the new library in ram: you'll have a chance to
       try it before replacing your working library. Programs that use 
       the Translate() function such as SpeechToy and the SPEAK: device 
       will receive a harmless error message from Translate() if the 
       library is corrupt. 

       USAGE:
                  assign LIBS: RAM:
                  TLPatch [-x]

          Where "-x" is used to extract the existing exception table
       from LIBS:translator.library and write it to ram:except.tbl
       adding linefeeds between the exceptions. This can be used if you
       wish to start with the original exception table or if you lose
       your working copy of except.tbl. Without the "-x" option, TLPatch
       will read except.tbl, which it expects to find in ram:, and create
       a new translator.library in ram:.
          The assignment command is necessary when you first begin the
       session if you wish to try the new library, otherwise speech 
       programs will continue to use the library they found in LIBS: on
       disk. Subsequent invocations of TLPatch will free the library
       pointer so that your latest edited library is the valid one.

                                 EXCEPTIONS

          An exception consists of text on the left of an '=' sign and 
       the resultant phonemes on the right. The text contains the actual
       characters to be converted which are surrounded by square 
       brackets [], plus any leading or trailing characters whose context
       might effect the sound, and possibly substitution symbols which 
       can match a variety of input strings. Upper-case is used for the
       input text and phonemes.

          For example:

        [AGO] =AHGOW2\

          Here all the input characters are translated and because the
       input text has a space before and after it, only the word "ago"
       will match this exception. If there were no spaces, "lagoon" would
       also match, since it contains "ago", which is not desired. This
       might be termed a "specific exception" as it fits a specific word.
          Numbers such as the '2' in the example above can be added in the
       phonetic string to add emphasis to vowels and dipthongs (not
       consonants). Values from 1 to 5 are common.

       [A]SION=EY3\

          There is no leading space so this is a general exception which
       will match all words ending "asion". Note that only the "a" part
       is translated, the remainder being handled elsewhere.

       #:[EA] =IYAH\

          These are the tricky ones, being sort of "rule-based" they
       match in cases where ANY vowel, consonant, etc. can occupy the
       position of its substitution symbol in the input text. They are
       tricky because if you create one, there may be words which you
       hadn't considered which match. You might also defeat words which
       had been correctly translated by creating an unforseen match.
          In the example above "idea", "area" or "panacea" all fit.

          The advantage of rule-based exceptions is that they keep
       the size of the library down by handling so many words.
          There are eight substitution symbols that I am aware of,
       they are ? ^ % + # : & and @. After studying the library and
       experimenting I believe they represent the following values:

       ? = numbers     (0,1,2,3,4,5,6,7,8,9)

           e.g. ?[X]?= BAY`    - as in "2x4" (the 'X' becomes "by")

       ^ = consonants  (c,f,h,k,p,q,s,x)

           e.g. ^[AS]#=EYS\    - as in "CASE"

       % = vowels      (e)

           e.g. [NGL]%=NXGUL\  - as in "ANGLE"

       + = vowels      (e,i,y)

           e.g. [G]+=J\        - as in "AGE"

       # = vowels      (a,e,i,o,u,y)

           e.g. [BUS]#=BIH3Z\  - as in "BUSY"

       : = anything except a,e,i,o,u,y including NULL or SPACE

       & = consonants  (c,g,j,s,x,z)

           e.g. &[T]EN=\       - as in "LISTEN" (the 'T' is silent)

       @ = consonants  (d,j,l,n,r,s,t,z)

           e.g. @[EW]=UW\      - as in "CREW","DEW" or "NEW"

          Exceptions always end with either a "\" or "`", I have not
      determined what difference it makes although the "\" is by far
      the most common.

          I've included a simple program called "Translate" to access
      the Translate() function. Usage from the CLI is:

                  Translate <text>

          <text> is your input text and can be one word as in:

                  Translate hello

          or a sentence in quotes as in:

                  Translate "hello world"

          Also included is my latest translator.library and exception
      table, containing nearly 800 exceptions. Most notably corrections
      to numbers as well as month abbreviations (Jan. Feb. etc.). A date
      such as "1984" will read "nineteen eighty four" not "one nine eight
      four". A number like "27,543" is pronounced "twenty seven thousand
      five hundred and forty three" (the comma is important).



                              TABLE OF PHONEMES
                                 (from RKM)

          Vowels -

             IY        beet   |  IH        bit    |  EH        bet
             AE        bat    |  AA        hot    |  AH        under
             AO        talk   |  UH        look   |  ER        bird
             OH        border |  AX        about  |  IX        solid

          Dipthongs -

             EY        made   |  AY        hide   |  OY        boil
             AW        power  |  OW        low    |  UW        crew

          Consonants -

             R         red    |  L         yellow |  W         away
             Y         yellow |  M         men    |  N         men
             NX        sing   |  SH        rush   |  S         sail
             TH        thin   |  F         fed    |  ZH        pleasure
             Z         has    |  DH        then   |  V         very
             J         judge  |  CH        check  |  /C        loch
             /H        hole   |  P         put    |  B         but
             T         toy    |  D         dog    |  G         guest
             K         could

          Special symbols -

             DX        pity   |  Q         kitten |  QX        pause
             RX        car    |  LX        call

          Contractions -

             UL    =   AXL    |  IL    =   IXL    |  UM    =   AXM
             IM    =   IXM    |  UN    =   AXN    |  IN    =   IXN