aws-samples / amazon-sumerian-hosts

Amazon Sumerian Hosts (Hosts) is an experimental open source project that aims to make it easy to create interactive animated 3D characters for Babylon.js, three.js, and other web 3D frameworks. It leverages AWS services including Amazon Polly (text-to-speech) and Amazon Lex (chatbot).
MIT No Attribution
187 stars 82 forks source link

Detach/remove gesture map from a host? #27

Closed roschler closed 4 years ago

roschler commented 4 years ago

I used the repo sample to build my Sumerian Hosts app. It's obvious as I watch the hosts in my app that they already have gesture maps attached to them. How do I remove those gesture maps or eliminate them? I have my own method for handling gestures and I don't want the existing ones to interfere.

c-morten commented 4 years ago

Hi @roschler. For the sample files, we apply our gesture maps inside the initializeUX function using the following methods: GestureFeature.createGestureMap and GestureFeature.createGenericGestureArray. Both of these methods will only affect the outcome if you pass their results to TextToSpeechUtils.autoGenerateSSMLMarks. The createGestureMap method returns an object that maps ssml mark syntax to word arrays provided when you register gestures with the feature. If you don't provide a word array when registering an animation it will try to use one from our default gesture map dictionary. When you use the autoGenerateSSMLMarks it will look for words specified in the word arrays and if it finds one, it will insert the corresponding ssml markup prior to that word in the speech text. For createGenericGestureArray, it will provide an array of gesture names that do not have any word arrays defined. If you provide this array to autoGenerateSSMLMarks, each sentence in the speech it encounters that does not contain any words in the arrays defined in the provided gesture map will get markup from one of the generic gestures inserted. Below is the default mapping that gets used for gesture words if you do not specify any when registering gestures:

{
  big: [
    'add',
    'above',
    'authority',
    'big',
    'cover',
    'full',
    'fly',
    'grow',
    'growth',
    'high',
    'huge',
    'increase',
    'major',
    'majority',
    'large',
    'leader',
    'lot',
    'raise',
    'rise',
    'tall',
  ],
  heart: [
    'accept',
    'admit',
    'believe',
    'care',
    'feeling',
    'feel',
    'friend',
    'grateful',
    'happy',
    'heart',
    'human',
    'pain',
    'save',
    'safe',
    'kind',
    'love',
  ],
  in: [
    'include',
    'including',
    'inside',
    'into',
    'now',
    'near',
    'nearest',
    'closest',
    'therein',
    'within',
  ],
  many: [
    'all',
    'always',
    'any',
    'anyone',
    'among',
    'area',
    'around',
    'beautiful',
    'entire',
    'environment',
    'environments',
    'environmental',
    'everybody',
    'everyone',
    'everything',
    'audience',
    'total',
    'group',
    'groups',
    'million',
    'millions',
    'others',
    'billion',
    'billions',
    'hundred',
    'hundreds',
    'many',
    'thousand',
    'thousands',
    'world',
    'worlds',
    'outside',
    'reveal',
  ],
  movement: [
    'away',
    'across',
    'ahead',
    'along',
    'far',
    'fast',
    'follow',
    'go',
    'leave',
    'move',
    'movement',
    'through',
    'throughout',
    'toward',
    'travel',
    'turned',
    'passed',
  ],
  one: [
    'single',
    'one',
    'once',
    'first',
    'firstly',
    'only',
    'solo',
    'warned',
    'truly',
    'up',
    'alone',
  ],
  aggressive: [
    'power',
    'powers',
    'powerful',
    'assert',
    'assertive',
    'strong',
    'stronger',
    'strongest',
    'strength',
    'flex',
    'dang',
    'damn',
    'damnit',
    'darn',
    'shucks',
    'doh',
    'drat',
    'angry',
    'angrier',
    'angriest',
    'aggressive',
    'annoyed',
    'annoying',
    'attack',
    'attacking',
    'offense',
    'offensive',
    'battle',
  ],
  you: ['you', 'yall', "y'all", 'your', 'yours', 'thou', 'thy'],
  defense: [
    'defense',
    'fear',
    'repulsed',
    'scared',
    'scary',
    'scarier',
    'scariest',
    'fearful',
    'afraid',
    'cower',
    'cowers',
    'cowering',
    'hideous',
    'doomed',
    'terrified',
    'terrify',
    'terrifying',
    'terrifies',
    'spooky',
    'spookier',
    'spookiest',
  ],
  wave: [
    'hello',
    'hi',
    'hiya',
    'howdy',
    'welcome',
    'aloha',
    'heya',
    'hey',
    'bye',
    'goodbye',
    'hola',
    'adios',
    'chao',
  ],
  self: ['my', 'I', 'myself', 'self', "I've", 'Ive', 'me', 'mine', 'own'],
}
roschler commented 4 years ago

@c-morten Thanks!