(FILECREATED "21-Jun-84 21:18:44" {ERIS}<SPEECH>PHONTOPV.FPKG;7 21076
changes to: (VARS DEBUGFLG)
(FNS FIND.ALLOPHONES)
previous date: "13-Jun-84 17:54:16" {ERIS}<SPEECH>PHONTOPV.FPKG;3)
(* Copyright (c) 1984 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT PHONTOPVCOMS)
(RPAQQ PHONTOPVCOMS ((FNS CHECK SPEAK SPEECH.PLAY.ALL FINDONSET DECODE.FEATURES MAKE.PHONEME
FIND.ALLOPHONES FIND.ALLOPHONES1 FIND.PHONEMES FIND.PHONEMES1
FIND.PHONEMES2 FIND.V.FEATURES FINDCODA FINDNUCLEUS FIX.PHONEME OFFGLIDE
FINDVOWEL TEST.GLUE TEST.SYNTH)
(* PSVOWELS are the transcription symbols which on their own signify vowels; PSVOWELBEG are
the transcription symbols which CAN initiate a vowel: PSVOWELEND are the transcriptoin
symbols which CAN complete a vowel initiated by PSVOWELBEG)
(VARS DEBUGFLG OFFGLIDES PHONETICSYMBOLS PSPHONEMELST PSVOWELS PSVOWELBEG PSVOWELEND
PV.CONSONANTS PVECTOR SOUNDS NEWWORDS NSOUNDS TR VCOMMENTS WOFFGLIDES WORDS)))
(DEFINEQ
(CHECK
[LAMBDA (C1 V C2) (* pkh: " 6-Jun-84 13:12")
(PRINT (fetch (PVECTOR SOUND) of C1))
(PRINT (fetch (PVECTOR COMMENT) of C1))
(PRINT (fetch (PVECTOR SOUND) of V))
(PRINT (fetch (PVECTOR COMMENT) of V))
(PRINT (fetch (PVECTOR SOUND) of C2))
(PRINT (fetch (PVECTOR COMMENT) of C2])
(SPEAK
[LAMBDA (TRANSCRIPTION) (* pkh: " 6-Jun-84 14:09")
(* Top level function for the synthesizer)
(PROG ((SOUNDLIST (UNPACK TRANSCRIPTION))
NUCLEUS ONSET CODA FEATURES (SYLLABLE (create SYLLABLE)))
(* TBW (FOR (SYLLABIFY SOUNDLIST) SYLLABLE IN DO BODY) (* Split the transcription up into units that correspond to
phonemes; Example: aY is AY.PHONEME; r%, is ER.PHONEME))
(* Find the phonemes going from transcriptions;
this function does the replaces in the syllable fields
itself)
(SETQ NUCLEUS (FINDNUCLEUS SOUNDLIST))
(SETQ ONSET (FINDONSET SOUNDLIST NUCLEUS))
(SETQ CODA (FINDCODA SOUNDLIST ONSET NUCLEUS))
(replace ONSET of SYLLABLE with ONSET)
(replace NUCLEUS of SYLLABLE with NUCLEUS)
(replace CODA of SYLLABLE with CODA)
(FIND.PHONEMES SYLLABLE) (* Find the correct PVECTORS
(allophones) starting with phonemes;
then stuff them into the correct fields in the syllable)
(SETQ ONSET (FIND.ALLOPHONES (fetch ONSET of SYLLABLE)
'ONSET SYLLABLE))
(SETQ CODA (FIND.ALLOPHONES (fetch CODA of SYLLABLE)
'CODA SYLLABLE))
(SETQ NUCLEUS (FIND.ALLOPHONES (fetch NUCLEUS of SYLLABLE)
'NUCLEUS SYLLABLE))
(replace ONSET of SYLLABLE with ONSET)
(replace NUCLEUS of SYLLABLE with NUCLEUS)
(replace CODA of SYLLABLE with CODA)
(* For the time being we only have a single in the ONSET NUCLEUS and OFFSET which can be passed to SPEECH.GLUE
(* Better version TBW))
(COND
[DEBUGFLG (RETURN (CHECK (CAR ONSET)
(CAR NUCLEUS)
(CAR CODA]
(T (RETURN (SPEECH.GLUE (CAR ONSET)
(CAR NUCLEUS)
(CAR CODA])
(SPEECH.PLAY.ALL
[LAMBDA (WORD) (* pkh: "13-Jun-84 15:32")
(PROG (STREAM)
(SETQ STREAM (OPENSTREAM (PACKFILENAME 'HOST '{ERIS} 'DIRECTORY '<SPEECH>WAVE>
'NAME WORD 'EXTENSION 'WAVE)
'OUTPUT
'OLD/NEW))
(for I from 1 to (ARRAYSIZE SPEECH.*WAVE*) do (BOUT STREAM (ELT SPEECH.*WAVE* I)))
(CLOSEF STREAM])
(FINDONSET
[LAMBDA (SOUNDLIST NUCLEUS SYLLABLE) (* pkh: " 6-Jun-84 12:09")
(* Finds the phonetic symbols which preceed a vowel and considers them the onset; returns a list of lists with
each sublist containing the elements of a phonetic symbol; phonetic symbols may be complex%, i.e. they may consist
of more than a single character; Example: l~ desingates a thick l; were it an onset it would come out as
((l ~)))
(* TBW Check for complex onset symbols)
(for P (V ←(CAAR NUCLEUS)) in SOUNDLIST until (EQ P V) collect (LIST P) finally (RETURN $$VAL])
(DECODE.FEATURES
[LAMBDA (FLST PREORPOSTV) (* pkh: " 6-Jun-84 13:15")
(SELECTQ PREORPOSTV
[ONSET (COND
((MEMB '+front FLST)
'PREVFRONT)
((AND (MEMB '+back FLST)
(MEMB '+round FLST))
'PREVBACKROUNDED)
((AND (MEMB '+back FLST)
(MEMB '-round FLST))
'PREVBACKUNROUNDED)
((MEMB '+round FLST)
'PREVBACKROUNDED)
((MEMB '-round FLST)
'PREVBACKUNROUNDED)
(T (SHOULDNT]
[CODA (COND
((MEMB FLST WOFFGLIDES)
'POSTVWOFFGLIDE)
(T 'POSTVNOWOFFGLIDE]
(SHOULDNT])
(MAKE.PHONEME
[LAMBDA (PVECTORNAME) (* pkh: " 4-Jun-84 23:01")
(PROG [PHONEME (PHONEMENAME (PACK* (SUBSTRING PVECTORNAME 1 2)
'.PHONEME))
(FEATURES (MKATOM (SUBSTRING PVECTORNAME 3]
[SET PHONEMENAME (COND
((NEQ (EVALV PHONEMENAME)
'NOBIND) (* PHONEMENAME is a PHONEME)
(FIX.PHONEME (EVALV PHONEMENAME)
FEATURES
(EVAL PVECTORNAME)))
(T (* PHONEMENAME is not the name of a PHONEME yet)
(SETQ PHONEME (create PHONEME))
(FIX.PHONEME PHONEME FEATURES (EVAL PVECTORNAME]
(RETURN PHONEMENAME])
(FIND.ALLOPHONES
[LAMBDA (PHONEMELST ONSETORCODA SYLLABLE) (* pkh: "21-Jun-84 20:57")
(* Goes from syllable with phonetic transcription to
allophones and PVECTORS)
(* (EVAL (CAR (fetch NUCLEUS of PHONEMELST))) is in
order to get our hands on the nucleus phoneme)
(COND
((NOT PHONEMELST)
(LIST (fetch (PHONEME INVARIANT) of SI.PHONEME)))
(T (SELECTQ ONSETORCODA
(ONSET (for X PVECTOR (ALLOPHONETYPE ←
(DECODE.FEATURES
[FIND.V.FEATURES (EVAL (CAR (fetch NUCLEUS
of SYLLABLE]
'ONSET))
in PHONEMELST collect (COND
((SETQ PVECTOR (SELECTQ
ALLOPHONETYPE
(PREVFRONT (fetch PREVFRONT
of (EVAL X)))
(PREVBACKUNROUNDED (fetch PREVBACKUNROUNDED
of (EVAL X)))
(PREVBACKROUNDED (fetch PREVBACKROUNDED
of (EVAL X)))
NIL))
(* If there is an allophone of ALLOPHONETYPE return it)
PVECTOR)
([AND (STRPOS 'BACK ALLOPHONETYPE)
(SETQ PVECTOR
(SELECTQ ALLOPHONETYPE
(PREVBACKUNROUNDED
(fetch PREVBACKROUNDED
of (EVAL X)))
(fetch PREVBACKUNROUNDED
of (EVAL X]
(* If we didn%'t find a match on the allophonetype in the phoneme and the ALLOPHONETYPE has "back" in it then try
PREVBACKROUNDED when the type is PERVBACKUNROUNDED and try PREVBACKUNROUNDED when the type is PREVBACKROUNDED)
PVECTOR)
((SETQ PVECTOR (fetch INVARIANT
of (EVAL X)))
PVECTOR)
((SETQ PVECTOR (fetch PREVFRONT
of (EVAL X)))
PVECTOR)
(T (SHOULDNT)))
finally (RETURN $$VAL)))
(CODA (for X PVECTOR
(ALLOPHONETYPE ←
(DECODE.FEATURES
[fetch (PVECTOR SOUND)
of (fetch (PHONEME INVARIANT)
of (EVAL (CAR (fetch NUCLEUS of SYLLABLE]
'CODA))
in PHONEMELST collect (COND
((SETQ PVECTOR (SELECTQ
ALLOPHONETYPE
(POSTVWOFFGLIDE (fetch POSTVWOFFGLIDE
of (EVAL X)))
(POSTVNOWOFFGLIDE (fetch POSTVNOWOFFGLIDE
of (EVAL X)))
NIL))
PVECTOR)
((SETQ PVECTOR (fetch INVARIANT
of (EVAL X)))
PVECTOR)
((SETQ PVECTOR (fetch PREVFRONT
of (EVAL X)))
PVECTOR)
(T (SHOULDNT)))
finally (RETURN $$VAL)))
(NUCLEUS (for X in (fetch NUCLEUS of SYLLABLE) collect (fetch INVARIANT
of (EVAL X))
finally (RETURN $$VAL)))
(SHOULDNT])
(FIND.ALLOPHONES1
[LAMBDA NIL (* pkh: " 5-Jun-84 10:30")
NIL])
(FIND.PHONEMES
[LAMBDA (SYLLABLE) (* pkh: " 5-Jun-84 10:11")
(replace ONSET of SYLLABLE with (FIND.PHONEMES1 (fetch ONSET of SYLLABLE)))
(replace NUCLEUS of SYLLABLE with (FIND.PHONEMES1 (fetch NUCLEUS of SYLLABLE)))
(replace CODA of SYLLABLE with (FIND.PHONEMES1 (fetch CODA of SYLLABLE])
(FIND.PHONEMES1
[LAMBDA (PSYMBOLLST) (* pkh: " 6-Jun-84 12:40")
(* Input: List of lists where each sublist has as elements the components of a transcription symbol;
Output: List of phonemes (i.e. AY.PHONEME etc.))
(* (SETQ M (FIND.PHONEMES2 X)) (COND (M M) (T (COND ((MEMB (CADR PSYMBOLLST) (QUOTE (w y)))
(SETQ PSYMBOLLST (CDR PSYMBOLLST)) (PACK* (U-CASE (MKATOM (PACK* X (CAR PSYMBOLLST)))) (QUOTE .PHONEME)))))))
(for X M in PSYMBOLLST
collect (SETQ M (PACK X))
(COND
((SETQ M (ASSOC M PSPHONEMELST))
(CADR M))
(T (SHOULDNT)))
finally (RETURN $$VAL])
(FIND.PHONEMES2
[LAMBDA (PSYMBOL) (* pkh: " 5-Jun-84 00:29")
(PROG (M)
(RETURN (COND
((SETQ M (ASSOC PSYMBOL PHONSYMPHONEMEALIST))
(CADR M])
(FIND.V.FEATURES
[LAMBDA (VPHONEME) (* pkh: " 5-Jun-84 10:38")
(* Finds the features of a vowel phoneme; Assumption: The features are the only list in the comment field of the
invariant PVECTOR of a PHONEME)
(for X in (fetch (PVECTOR COMMENT) of (fetch (PHONEME INVARIANT) of VPHONEME))
when (LISTP X) do (RETURN X])
(FINDCODA
[LAMBDA (SOUNDLIST ONSET NUCLEUS) (* pkh: " 6-Jun-84 12:28")
(* TWB CHECK FOR COMPLEX TRANSCRIPTIONSYMBOLS IN THE
SYLLABLE (SAME PROBLEM IN FINDONSET))
(for X in [NTH SOUNDLIST (ADD1 (IPLUS (for Y in ONSET sum (LENGTH Y))
(for Y in NUCLEUS sum (LENGTH Y]
collect (LIST X) finally (RETURN $$VAL])
(FINDNUCLEUS
[LAMBDA (TRANSCRIPTION SYLLABLE) (* pkh: " 6-Jun-84 19:21")
(* Returns the phonetic symbol of the vowel nucleus in a list of lists; the format for input to FIND.PHONEMES is a
list of lists where each sublist is the sequence of characters which designate a KLATT phoneme: The nucleus of
"saYt" will therefore come into FIND.PHONEMES as ((aY)); the onset of "traYt" will come in as
((t) (r)))
(for P S V G in old TRANSCRIPTION when (OR (MEMB P PSVOWELS)
(MEMB P PSVOWELBEG))
do (* Single symbol corresponding on its own to a vowel)
[COND
([AND (MEMB P PSVOWELS)
[OR (NEQ P 'a)
(NOT (OFFGLIDE (CADR TRANSCRIPTION]
(OR (NEQ P 'c)
(NOT (OFFGLIDE (CADR TRANSCRIPTION]
(SETQ V (LIST P)))
[(AND (MEMB P PSVOWELBEG)
(NEQ P 'y)) (* Two symbols corresponding to a vowel)
(COND
((MEMBER (CADR TRANSCRIPTION)
PSVOWELEND)
(SETQ V (LIST P (CADR TRANSCRIPTION]
((AND (MEMB P PSVOWELBEG)
(EQ P 'y)
(EQ 'u (CADR TRANSCRIPTION))
(EQ 'W (CADDR TRANSCRIPTION)))
(SETQ V (LIST P (CADR TRANSCRIPTION)
(CADDR TRANSCRIPTION]
finally (RETURN (LIST V])
(FIX.PHONEME
[LAMBDA (PHONEME FEATURES PVECTOR) (* pkh: " 4-Jun-84 22:59")
(SELECTQ FEATURES
((b r)
(replace PREVBACKROUNDED of PHONEME with PVECTOR))
(f (replace PREVFRONT of PHONEME with PVECTOR))
(bu (replace PREVBACKUNROUNDED of PHONEME with PVECTOR))
(nw (replace POSTVNOWOFFGLIDE of PHONEME with PVECTOR))
(w (replace POSTVWOFFGLIDE of PHONEME with PVECTOR))
(NIL (replace INVARIANT of PHONEME with PVECTOR))
(SHOULDNT))
PHONEME])
(OFFGLIDE
[LAMBDA (PS) (* pkh: " 4-Jun-84 16:47")
(* Checks if a PhoneticSymbol is an offglide%, returns
the PS if it is else NIL)
(COND
((MEMB PS OFFGLIDES)
PS])
(FINDVOWEL
[LAMBDA (TRANSCRIPTION SYLLABLE) (* pkh: " 4-Jun-84 16:43")
(* Takes a transcription symbol for a vowel%, finds the PVECTOR name and the PVECTOR (i.e.
(EVAL P)) corresponding to it; extracts feature information from its comment)
(* Returns the phonetic symbol of the vowel nucleus)
(for P S V G in old TRANSCRIPTION when (MEMB P PSVOWELS)
do (SETQ V P)
[COND
((SETQ G (OFFGLIDE (CADR TRANSCRIPTION)))
(SETQ V (PACK* V G]
finally (RETURN V])
(TEST.GLUE
[LAMBDA (WORDS) (* pkh: " 6-Jun-84 18:23")
(for X in WORDS collect (CONS X (LIST (SPEAK X])
(TEST.SYNTH
[LAMBDA (WORDS) (* pkh: " 6-Jun-84 19:53")
(for X RESULT in WORDS
collect (SETQ RESULT (SPEAK X))
(SETQ USER.TRAJS RESULT)
(SPEECH.TEST)
(SPEECH.PLAY.ALL X])
)
(* PSVOWELS are the transcription symbols which on their own signify vowels; PSVOWELBEG are the
transcription symbols which CAN initiate a vowel: PSVOWELEND are the transcriptoin symbols
which CAN complete a vowel initiated by PSVOWELBEG)
(RPAQQ DEBUGFLG NIL)
(RPAQQ OFFGLIDES (Y W y w))
(RPAQQ PHONETICSYMBOLS (P T K p t k b d g D 0 & f v s z S Z C J W Y m n G ~ y w l r R %, : H L M ? x
"l~"
i I U u o c a - E @ e))
(RPAQQ PSPHONEMELST ((p PP.PHONEME)
(t TT.PHONEME)
(k KK.PHONEME)
(b BB.PHONEME)
(d DD.PHONEME)
(g GG.PHONEME)
(t TT.PHONEME)
(0 TH.PHONEME)
(& DH.PHONEME)
(f FF.PHONEME)
(v VV.PHONEME)
(s SS.PHONEME)
(z ZZ.PHONEME)
(S SH.PHONEME)
(I IH.PHONEME)
(C CH.PHONEME)
(J JH.PHONEME)
(@ AE.PHONEME)
(↑ AH.PHONEME)
(w WW.PHONEME)
(y YY.PHONEME)
(m MM.PHONEME)
(n NN.PHONEME)
(yuW YU.PHONEME)
(uW UW.PHONEME)
(l LL.PHONEME)
(r RR.PHONEME)
(oY OY.PHONEME)
(oW OW.PHONEME)
(aW AW.PHONEME)
(aY AY.PHONEME)
(h HH.PHONEME)
(eY EY.PHONEME)
(iY IY.PHONEME)
(r%, ER.PHONEME)
(↑ UH.PHONEME)
(U UH.PHONEME)
(c AO.PHONEME)
(E EH.PHONEME)
(a AA.PHONEME)
(Y NIL)
(W NIL)
(Z NIL)
(l~ NIL)
(x NIL)
(U NIL)
(? NIL)
(M NIL)
(L NIL)
(H NIL)
(: NIL)
(%, NIL)
(R NIL)
(N NIL)
(G NIL)))
(RPAQQ PSVOWELS (I U c a E @ ↑))
(RPAQQ PSVOWELBEG (i e a o u r y c))
(RPAQQ PSVOWELEND (Y W %, uW))
(RPAQQ PV.CONSONANTS (SPEECH.FFb SPEECH.VVf SPEECH.VVb SPEECH.THf SPEECH.THb SPEECH.DHf SPEECH.DHb
SPEECH.SSf SPEECH.SSbu SPEECH.SSr SPEECH.ZZf SPEECH.ZZbu SPEECH.ZZb
SPEECH.SHf SPEECH.SHbu SPEECH.CHbu SPEECH.SHr SPEECH.CHf SPEECH.CHr
SPEECH.JHf SPEECH.JHbu SPEECH.JHr SPEECH.PPf SPEECH.PPb SPEECH.BBf
SPEECH.BBb SPEECH.TTf SPEECH.TTbu SPEECH.TTr SPEECH.DDf SPEECH.DDbu
SPEECH.DDr SPEECH.KKf SPEECH.KKbu SPEECH.KKr SPEECH.GGf SPEECH.GGbu
SPEECH.GGr SPEECH.MMf SPEECH.MMb SPEECH.NNf SPEECH.NNbu SPEECH.NNr
SPEECH.WW SPEECH.YY SPEECH.RR SPEECH.LL SPEECH.HH SPEECH.SI
SPEECH.TTnw SPEECH.TTw))
(RPAQQ PVECTOR NIL)
(RPAQQ SOUNDS (SPEECH.IY SPEECH.IH SPEECH.EY SPEECH.EH SPEECH.AE SPEECH.AY SPEECH.AA SPEECH.AW
SPEECH.AH SPEECH.AO SPEECH.OW SPEECH.OY SPEECH.UH SPEECH.UW SPEECH.ER
SPEECH.YU SPEECH.FFf SPEECH.FFb SPEECH.VVf SPEECH.VVb SPEECH.THf SPEECH.THb
SPEECH.DHf SPEECH.DHb SPEECH.SSf SPEECH.SSbu SPEECH.SSr SPEECH.ZZf
SPEECH.ZZbu SPEECH.ZZb SPEECH.SHf SPEECH.SHbu SPEECH.CHbu SPEECH.SHr
SPEECH.CHf SPEECH.CHr SPEECH.JHf SPEECH.JHbu SPEECH.JHr SPEECH.PPf
SPEECH.PPb SPEECH.BBf SPEECH.BBb SPEECH.TTf SPEECH.TTbu SPEECH.TTr
SPEECH.DDf SPEECH.DDbu SPEECH.DDr SPEECH.KKf SPEECH.KKbu SPEECH.KKr
SPEECH.GGf SPEECH.GGbu SPEECH.GGr SPEECH.MMf SPEECH.MMb SPEECH.NNf
SPEECH.NNbu SPEECH.NNr SPEECH.WW SPEECH.YY SPEECH.RR SPEECH.LL SPEECH.HH
SPEECH.SI SPEECH.TTnw SPEECH.TTw))
(RPAQQ NEWWORDS (piYp pIm pEt peYn p@k p↑b pad paY pcz puWl pUg poWC diYd dIm dEt deYn d@k d↑b dad
daY dcz duWl dUg koWC kiYk kIm gEt geYn g@g g↑b gag gaY gcz guWl gUg goWt siYs
sIm sEt seYn s@g s↑b sag saY lcz kuWl lUg koWt riYl lIm lEt leYn l@k r↑b lad
laY kcz ruWl lUg roWt CiYp CIm CEt JeYn J@k C↑b Cad JaYv Jcz JuWl JUg CoWt biYb
bIm bEt beYn b@k b↑b bad baY bcz buWl bUg boWC fiYf fIm fEt feYn f@k f↑b fad
faY fcz fuWl fUg foWC hiYp hIm hEt heYn h@k h↑b had haY hcz huWl hUg hoWC miYm
mIm mEt meYn m@k m↑b mad maY mcz muWl mUg moWC niYn nIm nEt neYn n@k n↑b nad
naY ncz nuWl nUg noWC tiYt tIm tEt teYn t@k t↑b tad taY tcz tuWl tUg toWC teYn
viYp vIm vEt veYn v@t v↑f var vaYn vcn vuW vUg voWn pEm pIt poWn p↑k p@b pcd
paz pUl puWg peY dEm dIt doWn d↑k d@b dcd diY daz dUl duWg keYC kEm gIt goWn
g↑g g@b gcg giY gaz gUl guWg geYt sEm sIt soWn s↑g s@b scg siY laz kUl luWg
keYt lEm lIt loWn l↑k r@b lcd liY kaz rUl luWg reYt CEm CIt JoWn J↑k C@b Ccd
JiYv Jaz JUl JuWg CeYt bEm bIt boWn b↑k b@b bcd biY baz bUl buWg beYC fEm fIt
foWn f↑k f@b fcd fiY faz fUl fuWg feYC hEm hIt hoWn h↑k h@b hcd hiY haz hUl
huWg heYC mEm mIt moWn m↑k m@b mcd miY maz mUl muWg meYC nEm nIt noWn n↑k n@b
ncd niY naz nUl nuWg neYC tEm tIt toWn t↑k t@b tcd tiY taz tUl tuWg teYC vEm
vIt voWn v↑t v@f vcr viYn van vU vuWg veY))
(RPAQQ NSOUNDS (SPEECH.FFf SPEECH.FFb SPEECH.VVf SPEECH.VVb SPEECH.THf SPEECH.THb SPEECH.DHf
SPEECH.DHb SPEECH.SSf SPEECH.SSbu SPEECH.SSr SPEECH.ZZf SPEECH.ZZbu
SPEECH.ZZb SPEECH.SHf SPEECH.SHbu SPEECH.CHbu SPEECH.SHr SPEECH.CHf
SPEECH.CHr SPEECH.JHf SPEECH.JHbu SPEECH.JHr SPEECH.PPf SPEECH.PPb
SPEECH.BBf SPEECH.BBb SPEECH.TTf SPEECH.TTbu SPEECH.TTr SPEECH.DDf
SPEECH.DDbu SPEECH.DDr SPEECH.KKf SPEECH.KKbu SPEECH.KKr SPEECH.GGf
SPEECH.GGbu SPEECH.GGr SPEECH.MMf SPEECH.MMb SPEECH.NNf SPEECH.NNbu
SPEECH.NNr SPEECH.WW SPEECH.YY SPEECH.RR SPEECH.LL SPEECH.HH SPEECH.SI
SPEECH.TTnw SPEECH.TTw))
(RPAQQ TR {PVECTOR}#15%,121374)
(RPAQQ VCOMMENTS ((IY (* as in "beet" (+front)
*))
(IH (* as in "bit" (+front)
*))
(EY (* as in "bait" (+front)
*))
(EH (* as in "bet" (+front)
*))
(AE (* as in "bat" (+front)
*))
(AY (* as in "bite" (+back -round)
*))
(AA (* as in "Bob" (+back -round)
*))
(AW (* as in "bout" (+back -round)
*))
(AH (* as in "but" (+front -round)
*))
(AO (* as in "bought" (+round)
*))
(OW (* as in "boat" (+round)
*))
(OY (* as in "boy" (+round)
*))
(UH (* as in "book" (+round)
*))
(UW (* as in "boot" (+round)
*))
(ER (* as in "Bert" (+round)
*))
(YU (* as in "pew" (+front)
*))))
(RPAQQ WOFFGLIDES (OW UW AW YU))
(RPAQQ WORDS (saYt keYt fIt pIk bct boWt br%,t))
(PUTPROPS PHONTOPV.FPKG COPYRIGHT ("Xerox Corporation" 1984))
(DECLARE: DONTCOPY
(FILEMAP (NIL (1018 14868 (CHECK 1028 . 1434) (SPEAK 1436 . 3591) (SPEECH.PLAY.ALL 3593 . 4018) (
FINDONSET 4020 . 4730) (DECODE.FEATURES 4732 . 5343) (MAKE.PHONEME 5345 . 6048) (FIND.ALLOPHONES 6050
. 9098) (FIND.ALLOPHONES1 9100 . 9223) (FIND.PHONEMES 9225 . 9648) (FIND.PHONEMES1 9650 . 10353) (
FIND.PHONEMES2 10355 . 10574) (FIND.V.FEATURES 10576 . 11010) (FINDCODA 11012 . 11492) (FINDNUCLEUS
11494 . 12856) (FIX.PHONEME 12858 . 13458) (OFFGLIDE 13460 . 13771) (FINDVOWEL 13773 . 14410) (
TEST.GLUE 14412 . 14587) (TEST.SYNTH 14589 . 14866)))))
STOP