Menu | VisualVoice / RemainingWork | |
About Artistic Vision People Teams Contact us Publications Media Images/Movies Opportunities Related Links |
Hints on Remaining TasksIn order to implement expressions as described in the FutureWork Outline, the following tasks remain: i) Split the Accent window into phoneme & vizeme modes, allowing the user to create accents for both phonemes & expressions Some hints on how this should be implemented, and the principal considerations, are provided below. Accent Window This interface should be extended similarly to the Training Window (see Progress to Date). The principal differences are as follows: i) Where before there was only phonemes, now there are both phonemes & expressions One must then consider where these differences must be reflected when modifying the code. The following known areas must be changed: i) The filestructure of each user's Accent folder (under Profiles/[profileName]/Accent/) should be split into Phoneme and Vizeme subfolders, and the Vizeme Accent should be split into subfolders for each dictionary file Other considerations may also arise -- after a careful consideration of possible differences, the best way to discover unaccounted-for changes is to try using the interface, and note errors in usage or file storage. Mapping Function This function will be almost directly analogous to the vowelMapping and consonantMapping subpatchers of voiceMapping (subpatcher in the Perform window). The function should be implemented as a subpatcher of voiceMapping and named expressionMapping. It will take glove & tracker data, and expression accent weights as inputs, and use a Radial Basis Function to determine expression probabilities (see "An Adaptive Gesture-to-Speech Interface for DIVA" by Allison Lenters under "Publications" in the left-hand menu of this wiki, or explore the vowelMapping patcher in the DIVA code to see how the calculation is done). As mentioned in the outline, arm rotation will likely be used to determine the expression. The only additional difficulty this presents is that arm rotation is some combination of yaw, pitch and roll values, and an appropriate transformation must be devised to obtain the arm rotation from these values. Data flow for the mapping function, then, will look something like this: Raw Input Data -->Inlet of expressionMapping --> Select Yaw, Pitch & Roll Data --> Transform to arm rotation --> Use Accent Weights and RBF calculation --> Expression Probabilities --> Outlet of expressionMapping --> Inlet of Artisynth Manager Artisynth Manager The Artisynth Manager must be able to consider expressions as well as phonemes. There are two relevant classes in this respect: ArtisynthManager itself, as well as CalcPCs, each of which performs the following tasks: i) ArtisynthManager is in charge of receiving data through the inlets, calling CalcPCs' methods, and sending data out through the socket. Currently, map files already support multiple expressions, and these are parsed properly by CalcPCs. What is necessary, then, is to receive expression probabilities, and combine these with phoneme probabilities, sending these in the correct order to CalcPCs. For example, if the entries Ahappy, Aneutral, AAhappy, Aneutral appear in that order in the map file, then ArtisynthManager must send (prob. A) * (prob. happy), (prob. A) * (prob.neutral), (prob. AA) * (prob. happy), (prob. AA) * (prob. neutral) as weights to CalcPCs' calculatePCs method, in that order. This will require: i) An additional inlet in Artisynth Manager to receive expression probabilities and store them in a float array In order to consider expressions as well as phonemes, the Artisynth Manager must take expression probabilities in an additional inlet. The map file already contains entries for different expressions, and the parser (located in the loadMapping method of the CalcPCs object) already loads each entry in the order in which it appears. The calculatePCs method takes an array of weight values, one for each map file entry, and applies them to the vectors descr |
|
View Edit Attributes History Attach Print Search Page last modified on August 25, 2008, at 10:32 AM |