(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