vrSpeak char-id addressee-id utterance-id xml-messsage
Description
Contains BML, typically sent from NVBG to SmartBody.
Parameters
- char-id, character who is speaking (i.e. 'brad')
- addressee-id, character who is addressed (i.e. 'user')
- utterance-id, ID for this utterance / message, needs to be unique within a session
- xml-message, XML part containing the BML that describes the nonverbal behavior for SmartBody to realize.
Examples
vrSpeak brad user 1337363228078-9-1 <?xml version="1.0" encoding="utf-16"?><act> <participant id="brad" role="actor" /> <bml> <speech id="sp1" ref="voice_defaultTTS" type="application/ssml+xml"> <mark name="T0" />Depending <mark name="T1" /><mark name="T2" />on <mark name="T3" /><mark name="T4" />the <mark name="T5" /><mark name="T6" />default <mark name="T7" /><mark name="T8" />voice <mark name="T9" /><mark name="T10" />you <mark name="T11" /><mark name="T12" />have <mark name="T13" /><mark name="T14" />selected <mark name="T15" /><mark name="T16" />in <mark name="T17" /><mark name="T18" />Windows, <mark name="T19" /><mark name="T20" />I <mark name="T21" /><mark name="T22" />can <mark name="T23" /><mark name="T24" />sound <mark name="T25" /><mark name="T26" />pretty <mark name="T27" /><mark name="T28" />bad. <mark name="T29" /> </speech> <event message="vrAgentSpeech partial 1337363228078-9-1 T1 Depending " stroke="sp1:T1" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T3 Depending on " stroke="sp1:T3" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T5 Depending on the " stroke="sp1:T5" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T7 Depending on the default " stroke="sp1:T7" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T9 Depending on the default voice " stroke="sp1:T9" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T11 Depending on the default voice you " stroke="sp1:T11" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T13 Depending on the default voice you have " stroke="sp1:T13" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T15 Depending on the default voice you have selected " stroke="sp1:T15" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T17 Depending on the default voice you have selected in " stroke="sp1:T17" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T19 Depending on the default voice you have selected in Windows, " stroke="sp1:T19" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T21 Depending on the default voice you have selected in Windows, I " stroke="sp1:T21" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T23 Depending on the default voice you have selected in Windows, I can " stroke="sp1:T23" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T25 Depending on the default voice you have selected in Windows, I can sound " stroke="sp1:T25" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T27 Depending on the default voice you have selected in Windows, I can sound pretty " stroke="sp1:T27" /> <event message="vrAgentSpeech partial 1337363228078-9-1 T29 Depending on the default voice you have selected in Windows, I can sound pretty bad. " stroke="sp1:T29" /> <gaze target="user" direction="POLAR 0" angle="0" sbm:joint-range="HEAD EYES" xmlns:sbm="http://ict.usc.edu" /> <sbm:event message="vrSpoke brad user 1337363228078-9-1 Depending on the default voice you have selected in Windows, I can sound pretty bad." stroke="sp1:relax" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:sbm="http://ict.usc.edu" /> <!--first_VP Animation--> <animation stroke="sp1:T3" priority="5" name="HandsAtSide_Arms_GestureWhy" /> <!--First noun clause nod--> <head type="NOD" amount="0.10" repeats="1.0" relax="sp1:T5" priority="5" /> <!--Noun clause nod--> <head type="NOD" amount="0.10" repeats="1.0" relax="sp1:T11" priority="5" /> <!--Noun clause nod--> <head type="NOD" amount="0.10" repeats="1.0" relax="sp1:T19" priority="5" /> <!--Noun clause nod--> <head type="NOD" amount="0.10" repeats="1.0" relax="sp1:T21" priority="5" /> </bml> </act>
The Time-Markers i.e. T0, T1, T2 and so on, are used by the NVBG to mark each individual word in the sentence and later it can use this information to play animations at the start/end of that word.
e.g. in the above output bml, the animation "HandsAtSide_Arms_GestureWhy" is timed to play at sp1:T3, which means it will be played when the word "on" has been spoken. 'sp1' is the id of the speech tag which indicates that this 'T3' is from this particular speech tag. (currently NVBG only supports one speeech tag).
The appropriate "vrAgentSpeech partial" event messages are sent out by smartbody after each word has been spoken by the character. e.g."vrAgentSpeech partial 1337363228078-9-1 T19 Depending on the default voice you have selected in Windows," is sent out after the word Windows is spoken.
Similarly the <head> tag is interpreted by smartbody to generate Nods and other specified behavior.
The "priority" attribute allows NVBG to decide which behavior is to be culled if any of the behaviors overlap. This is done before the final message is sent out.
Sending Components
Receiving Components
Related Messages
- vrExpress
- vrAgentBML