11-752: week 3 exercises hints

  1. Variable poslex_rules_hooks is list of functions run on utterance after lexical lookup
    (define (postlex_thethee utt)
       (mapcar
         (lambda (seg)
           (if  word is "the", 
                this is last segment (i.e. no next segment in syllable)
                and the next segment (in the next word) is a vowel
               change vowel in segment)
         )
         (utt.relation.items utt 'Segment)))
    
    (set! postlex_rules_hooks (cons postlex_thethee postlex_rules_hooks))
    
    Features are:
    R:SylStructure.parent.parent.name
    R:SylStructure.n.name
    n.name
    
    Test is with
    (set! utt1 (SayText "The oval table."))
    (set! utt2 (SayText "The round table."))
    (utt.features utt1 'Segment '(name))
    
  2. They say telling a joke is in the timing.