is an open standard developed by the World Wide Web Consortium since 2005. It was published as a Recommendation of the W3C on October 25, 2012. The document is a technical report specifying a multimodal system architecture and its generic interfaces to facilitate integration and multimodal interaction management in a computer system. It has been developed by the W3C's Multimodal Interaction Working Group.
Description
The Multimodal Architecture and Interfaces recommendation introduces a generic structure and a communication protocol to allow the modules in a multimodal system to communicate with each other.
This specification proposes an event-driven architecture as a general frame of reference focused in the control flow data exchange. It can be used to determine the basic infrastructures needed to command the application's multimodal services.
The architecture is also proposed to facilitate the task of implementing several types of multimodal services providers on multiple devices: mobile devices and cell phones, home appliances, Internet of Things objects, television and home networks, enterprise applications, web applications, "smart" cars or on medical devices and applications.
Logical structure
Multimodal Architecture and Interfaces is the specified description of a larger services infrastructure called The Runtime Framework which provides the main functions that a multimodal system can need. This framework is at a higher level of abstraction than the MMI architecture. The MMI Runtime Framework is the runtime support and communication modules of the multimodal system while MMI Architecture is the description and the specification of its main modules, its interfaces and its communication modes.
The Multimodal Architecture and Interfaces specification is based on the MVC design pattern, that proposes to organize the user interface structure in three parts: the Model, the View and the Controller. This design pattern is also shown by the Data-Flow-Presentation architecture from the Voice Browser Working Group.
A particularity of this architecture is that although the presentation layer represented by theView has traditionally been associated with graphical interfaces; this recommendation abstraction generalizes the View to the broader context of the multimodal interaction, where the user can use a combination of visual, auditory, biometric and / or tactile modalities.
The MMI Architecture recommendation distinguishes three types of components: the Interaction Manager – IM, the Data Component – DC and the Modality Components – MC. This distinction is similar to the separation between the Controller, the Model and the presentation documents of the View in the MVC pattern.
Another characteristic is recursion. The modules are black boxes and it is possible to encapsulate several components in a more complex component, which communicate with an Interaction Manager at a higher level. In this way, the architecture follows the nested dolls principle .
The specification also covers the issues of a distributed implementation on multiple material resources in a network or a centralized implementation, with all the modules installed in a single material support. Information sharing between modules is loose coupled. This promotes low dependence between modules, reducing the impact of changes in one module on other modules, and facilitating the modules' reuse. In this way, the modules have little or no knowledge of the functioning of any other modules and the communication between modules is done through the exchange of messages following a precise communication protocol provided by the architecture's API.
The MMI architecture modules
The interaction manager
The interaction manager is a logical component, responsible for all message exchanges between the components of the system and the multimodal Runtime Framework. It is a communication bus and also an event handler.
Each application can configure at least one Interaction Manager to define the required interaction logic. This controller is the core of the multimodal interaction: It manages the specific behaviors triggered by the events exchanged between the various input and output components. It manages the communication between the modules and the client application. It ensures consistency between multiple inputs and outputs and provides a general perception of the application's current status. It is responsible for data synchronization. It is responsible for focus management. It manages communication with any other entity outside the system.