Page 216 - Designing Sociable Robots
P. 216

breazeal-79017  book  March 18, 2002  14:16





                       Expressive Vocalization System                                       197





                       Kismet’s vocalizations are generated as follows:

                       Randomly choose number of proto-words, getUtteranceLength() = length
                                                                                  utterance
                       For i = (0, length  ), generate a proto-word, protoWord
                                     utterance
                          Generate a (wordAccent, word) pair
                          Randomly choose word accent, getAccent()
                          Randomly choose number of syllables of proto-word, getWordLength() = length
                                                                                          word
                          Choose which syllable receives primary stress, assignStress()
                          For j = (0, length word ), generate a syllable
                             Randomly choose the type of syllable, syllableType
                             if syllableType = vowelOnly
                               if this syllable has primary stress
                                then syllable = getStress() + getVowel() + getDuration()
                               else  syllable = getVowel() + getDuration()
                             if syllableType = consonantVowel
                               if this syllable has primary stress
                                then syllable = getConsonant() + getStress() + getVowel() +
                                             getDuration()
                               else  syllable = getConsonant() + getVowel() + getDuration()
                             if syllableType = consonantVowelConsonant
                               if this syllable has primary stress
                                then syllable = getConsonant() + getStress() + getVowel() +
                                             getDuration() + getConsonant()
                               else  syllable = getConsonant() + getVowel() + getDuration() +
                                             getConsonant()
                             if syllableType = vowelVowel
                               if this syllable has primary stress
                                then syllable = getStress() + getVowel() + getDuration() + getvowel() +
                                             getDuration()
                               else  syllable = getVowel() + getDuration() + getVowel() +
                                             getDuration()
                             protoWord = append(protoWord, syllable)
                          protoWord = append(wordAccent, protoWord)
                       utterance = append(utterance, protoWord)
                         Where:

                       •  GetUtteranceLength() randomly chooses a number between (1, 5). This specifies the
                       number of proto-words in a given utterance.
   211   212   213   214   215   216   217   218   219   220   221