Lecteur Multimeodial Rapport du projet Cours sur les

publicité
Lecteur Multimeodial
Rapport du projet
Cours sur les interfaces multimodales
Christophe Gisler
Denis Bossy
Département d’Informatique
Université de Fribourg
Suisse
20 juin 2007
Table des matières
1 Introduction
1
2 Fonctionnalités de l’application
2.1 Lancement de l’application . . . . . .
2.2 GUI principale . . . . . . . . . . . .
2.3 Menu “Speech” . . . . . . . . . . . .
2.4 Fenêtres des lecteurs vidéo et audio .
2.5 Captures d’écran . . . . . . . . . . .
2.6 Exportation de fichiers vidéo et audio
.
.
.
.
.
.
1
1
1
2
3
7
7
3 Réalisation du projet
3.1 Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Environnement de travail . . . . . . . . . . . . . . . . . . . . .
9
9
9
4 Architecture
9
5 Libraires utilisées
5.1 avetanaBluetooth JSR-82 v1.3.16a .
5.2 WiiRemoteJ v0.8 . . . . . . . . . .
5.3 Sphinx-4 v1.0beta . . . . . . . . . .
5.4 Apple Quicktime for Java v6.1 . . .
5.5 Java Swing . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
10
11
11
11
6 Problèmes rencontrés
6.1 Avec la Wiimote . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Avec Sphinx . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Avec Quicktime for Java . . . . . . . . . . . . . . . . . . . . .
11
12
13
13
7 Améliorations potentielles
13
8 Conclusion
13
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 INTRODUCTION
1
1
Introduction
Dans le cadre du cours de Master en informatique sur les interfaces multimodales (MMI ou Multi-Modal Interfaces), il était demandé aux étudiants
de concevoir par groupe de deux ou trois personnes une application multimodale, c’est-à-dire utilisant plusieurs modalités d’interaction avec la machine.
Le but était mieux saisir la portée des problèmes auxquels il faut faire face
dans la réalisation de ce genre d’applications nouvelles mais de plus en plus
fréquemment utilisées grâce à la floraison de technologies chaque jour plus
performantes.
Notre groupe (Christophe Gisler et Denis Bossy) a choisi de créer un
lecteur multimédia intuitif et multimodal dans le sens que l’utilisateur peut
interagir avec lui en utilisant les deux modalités suivantes : la voix et la
Wiimote (i.e. la manette d’une console de jeux Nintendo Wii fonctionnant
par Bluetooth). Notre programme est capable de gèrer les fichiers vidéo et
audio.
2
Fonctionnalités de l’application
Cette section fait aussi office de manuel de l’utilisateur.
2.1
Lancement de l’application
Afin de lancer l’application, il est indispensable que l’utilisateur soit en
possession d’une Wiimote et d’un module Bluetooth installé et activé. De
plus (et c’est la reconnaissance vocale avec Sphinx qui le requiert), il est
nécessaire de donner -Xmx256m en argument de la VM Java.
2.2
GUI principale
Après ouverture, la première fenêtre qui apparaı̂t est celle de la GUI
(interface utilisateur) principale. Elle se présente comme dans la figure 1.
Un texte dans la fenêtre informe l’utilisateur qu’il doit attendre quelques
secondes pour que la reconnaissance de parole s’active. Il peut ensuite
sélectionner un fichier vidéo ou audio au moyen de sa Wiimote en la bougeant
de haut en bas et de gauche à droite ou en la faisant pivoter axialement (voir
les figures ci-dessous). Les fichiers chargés proviennent du dossier par défaut
nommé “Videos”. S’il y a plus de six fichiers chargés, la fenêtre devient trop
grande, son défilement se fait alors automatiquement (autoscroll ) en suivant
le cadre de sélection. Pour activer la reconnaissance vocale, il faut appuyer
2 FONCTIONNALITÉS DE L’APPLICATION
2
Fig. 1 – GUI principale
sur le bouton “A” (comme “Audio”) de la Wiimote. A ce moment-là, l’utilisateur peut ouvrir le fichier vidéo ou audio sélectionné en prononçant le
mot “Open”, ou tout simplement quitter l’application en prononçant le mot
“Quit” (ou “Close”). D’une manière générale dans l’application, chaque fois
que l’utilisateur veut utiliser une commande vocale, il doit préalablement
appuyer sur “A” pour activer la reconnaissance vocale.
2.3
Menu “Speech”
Durant l’utilisation du Lecteur Multimeodial, il est à noter qu’à tout moment les commandes vocales reconnues sont affichées dans la barre des menus, plus précisément dans un menu qu’on appellera par la suite le menu
“Speech”. Lors des premières utilisations du programme, l’utilisateur a la
possibilité de cliquer sur ce menu (avec la souris !) pour afficher la liste de
tous les mots qu’il peut employer comme commandes vocales, au cas où il ne
les aurait pas encore mémorisés. De plus, tout événement important qui se
produit durant la lecture d’un fichier audio ou vidéo est aussi affiché dans ce
menu (cf. figures dans les paragraphes suivants).
2 FONCTIONNALITÉS DE L’APPLICATION
3
Fig. 2 – Mouvements possibles dans le GUI principal
Fig. 3 – Menu “Speech”
2.4
Fenêtres des lecteurs vidéo et audio
Les fonctionnalités de lecture de fichiers vidéo ou audio sont les suivantes :
Play, Play backward, Pause, Volume up, Volume down : Ce sont
les fonctionnalités standards de tout lecteur multimédia, sauf pour la lecture
en arrière (i.e. à l’envers) qui est peu commnune mais amusante ! La fonction
de lecture s’enclenche automatiquement à l’ouverture d’un film ou d’une
musique. L’état de “pause” s’obtient en faisant un bref mouvement vertical
de haut en bas avec la Wiimote (et ceci est possible à tout moment durant
la lecture, l’avancement ou le reculement).
Backward, Forward Ces deux fonctions d’avancement ou de reculement
dans un film ou un morceau de musique ont ceci de particulier dans le Lecteur Multimeodial qu’il est possible d’en modifier dynamiquement la vitesse
avec la Wiimote en faisant des mouvements circulaires respectivement dans
les sens inverse et normal des aiguilles d’une montre, comme l’illustre la figure 8. Ces deux utilisations combinées par exemple aux fonctions vocales
d’exportation (présentées par la suite) constituent probablement une des attractions phares de l’application. Elles ne sont pas envisageables avec une
2 FONCTIONNALITÉS DE L’APPLICATION
Fig. 4 – Lecture d’un fichier audio
Fig. 5 – Lecture d’une piste audio
Fig. 6 – Play ou lecture
Fig. 7 – Play backward ou lecture en arrière
4
2 FONCTIONNALITÉS DE L’APPLICATION
5
télécommande normale...
Fig. 8 – Mouvements pour Forward et Backward
Fig. 9 – Forward ou avancement rapide
Fig. 10 – Backward ou reculement rapide
Backward slowly, Forward slowly C’est seulement après activation du
mode précis (Precise Mode On), que l’utilisateur a la possibilité de reculer
ou d’avancer lentement, c’est-à-dire avec une vitesse de lecture située entre
-1 et 1. Comme le montre la figure 11 ci-dessous, le mode précis s’active ou
se désactive en faisant un bref et rapide mouvement dans l’axe frontal en
s’éloignant de soi (c’est-à-dire généralement en direction de l’écran). Il se
désactice aussi automatiquement aussitôt que la vitesse de lecture franchit
l’une des 2 bornes -1 ou 1.
2 FONCTIONNALITÉS DE L’APPLICATION
6
Fig. 11 – Dés-/Activation du mode précis d’avancement ou de reculement
Fig. 12 – Dés-/Activation du mode précis d’avancement ou de reculement
Fig. 13 – Forward slowly ou avancement lent mais plus précis
Fig. 14 – Backward slowly ou reculement lent mais plus précis
2 FONCTIONNALITÉS DE L’APPLICATION
2.5
7
Captures d’écran
Lors de la lecture d’un film, il est possible de faire une capture d’écran
et de l’afficher dans une nouvelle fenêtre en prononçant la commande vocale
”Picture”. Le fichier de la capture d’écran est automatiquement sauvegardée
sur le disque dur de l’ordinateur dans le dossier par défaut nommé “Screenshots”. Ensuite, il suffit simplement de dire ”Close” pour fermer la fenêtre
de la capture d’écran effectuée et revenir au lecteur.
Fig. 15 – Capture d’écran d’une vidéo
2.6
Exportation de fichiers vidéo et audio
Lors de la lecture d’un film ou d’un morceau musical, il est possible d’en
faire l’exportation d’une partie et de l’afficher dans un nouveau lecteur en
prononçant les commandes vocales ”From”, ”To” et ”Export” pour respectivement déterminer les points de départ et d’arrivée et afficher le fichier alors
exporté. Ce dernier est automatiquement sauvegardé sur le disque dur de l’ordinateur dans le dossier par défaut nommé “Exports”. Ensuite, il suffit simplement de dire ”Close” pour fermer la fenêtre du lecteur créé spécialement
pour le fichier exporté et revenir au précédent lecteur laissé dans son état. Au
cas où l’utilisateur ne dirait pas les mots “From” ou “To”, ce sont le début
et la fin du fichier d’origine qui sont respectivement pris par défaut.
2 FONCTIONNALITÉS DE L’APPLICATION
Fig. 16 – Exportation d’une vidéo
Fig. 17 – Exportation d’une piste audio
8
3 RÉALISATION DU PROJET
3
3.1
9
Réalisation du projet
Planning
Notre groupe, composé des étudiants Christophe Gisler et Denis Bossy,
s’est répartit les tâches comme suit tout au long de la réalisation du projet.
De la fin du mois d’avril au début du mois de juin, il était prévu que chacun
travaille de son côté, Christophe étant responsable de la partie “Lecteur” (i.e.
gestion de la lecture d’un fichier audio ou vidéo et tout ce qui va autour) et
Denis de la partie GUI principale (affichage d’un interface utilisateur chargeant tous les fichiers audio et vidéo à partir d’un dossier). C’est pourquoi
au début du projet, le premier a plutôt touché à tout ce qui était du domaine
de Quicktime et Wiimote, et le second à tout ce qui touchait à Java Swing
et Sphinx. Ensuite, depuis début juin jusqu’à aujourd’hui, ils ont effectué la
mise-en-commun des deux parties, la finalisation (intégration de Sphinx et
de la Wiimote pour les commandes du lecteur) et le déboggage pour finir par
la rédaction du présent rapport et de la présentation.
3.2
Environnement de travail
Le seul matériel que nous avons emprunté au groupe DIVA était la manette Wiimote. Nous avons développé notre projet dans l’environnement de
programmation Java Eclipse SDK (v3.2.2) de Sun Microsystems, et principalement travaillé sous Mac OS X (v10.4.9) puisque l’implémentation de
la stack Bluetooth (avetena) requirait une license achetée et fournit par le
département d’informatique pour une seule adresse MAC de module Bluetooth par groupe, et nous avons choisi le MacBook Pro de Christophe.
4
Architecture
Cette section se propose de décrire l’architecture de notre programme
Java en listant et décrivant ses différentes classes. Le Lecteur Multimeodial
est ainsi constitué d’un unique paquetage comprenant les six classes suivantes :
MultimeodialPlayer.java est la classe principale du programme. Elle
contient la méthode main() et est responsable de gérer les événements
retournés par la Wiimote et Sphinx, ainsi que les interactions entre la
GUI et le lecteur.
PlayMovie.java est la classe qui va créer la fenêtre Quicktime du lecteur
proprement dit.
5 LIBRAIRES UTILISÉES
10
CreatePictFile.java a pour but d’enregistrer sur le disque dur et d’afficher une image dans une nouvelle fenêtre Quicktime. Dans notre programme, elle est utilisée pour l’affichage et la sauvegarde des captures
d’écran durant la lecture de films.
SphinxManager.java est responsable de tout ce qui concerne le processus
de reconnaissance vocale avec Sphinx. Elle est simplement une adaptation du programme de démonstration “Helloworld” disponible sur le
site du projet Sphinx.
GUI.java est la classe qui, comme son nom l’indique, a pour but la création
de l’interface graphique principale.
MediaListing.java est la classe qui va parser le dossier par défaut qui
contient tous les fichiers audio et vidéo pour retourner un objet permettant à la GUI de les afficher et de les ouvrir.
5
Libraires utilisées
Pour développer notre programme, nous avons eu besoin d’importer les
librairies suivantes :
5.1
avetanaBluetooth JSR-82 v1.3.16a
L’implémentation avetanaBluetooth JSR-82 permet de mettre à disposition d’un programme Java les fonctionnalités Bluetooth de façon transparente. Ainsi, en ajoutant le module avetanaBluetooth à un programme Java,
on lui offre les services Bluetooth de recherche de périphériques sans fil et de
connexion aux services fournit par ces derniers en utilisant une interface Java
bien documentée : JSR-82. avetanaBluetooth supporte les profiles Bluetooth
SDP, L2CAP, BTSPP et OBEX et est disponible pour Windows, MacOS X
et Linux. Le programme avetanaBluetooth est basé sur les piles (stacks) de
protocole Bluetooth les plus répandues et n’utilise donc pas de hardware ou
software spécial, ce qui permet un développement facile, bon marché et multiplateforme d’applications Java “Bluetooth-enabled”. Le seul petit bémol est
que ce programme est payant. Le département d’informatique a donc dû
acheter quelques licenses dont une pour l’adresse MAC du module Bluetooth
de mon ordinateur portable.
5.2
WiiRemoteJ v0.8
WiiRemoteJ constitue la librairie Java pour faire fonctionner la Wiimote
elle-même. Elle est gratuite et livrée avec la JavaDoc ainsi qu’un programme
6 PROBLÈMES RENCONTRÉS
11
de test, WRLImpl.java, que nous avons repris comme base pour notre classe
MultimeodialPlayer.java et que nous avons aussi beaucoup utilisé pour
afficher les courbes des valeurs retournées par les trois accéléromètres de la
Wiimote au fil du temps, puisque c’était là sa fonction première.
5.3
Sphinx-4 v1.0beta
Sphinx-4 est un système de pointe de reconnaissance de parole écrit
entièrement en langage de programmation Java. Il est le fruit d’une collaboration commune entre le groupe Sphinx à l’Université de Carnegie Mellon, les laboratoires de Sun Microsystems, Mitsubishi Electric Research Labs
(MERL) et Hewlett Packard (HP), avec les contributions de l’Université de
Californie à Santa Cruz (UCSC) et du Massachusetts Institute of Technology
(MIT).
5.4
Apple Quicktime for Java v6.1
QuickTime est l’architecture logicielle multimédia d’Apple. Il est multiplatforme et constitue un standard dans l’industrie. Il est utilisé par les
développeurs de logiciels, les constructeurs de hardware et les auteurs de
contenu multimédia pour créer et publier des graphiques, sons, vidéos, textes,
musiques et médias 3D et VR. QuickTime for Java rassemble la puissance
de QuickTime d’Apple et Java, permettant aux développeurs de créer des
applications Java tirant avantage des riches capacités multimédia qu’offre
Quicktime, incluant entre autres celles de lire, créer et éditer des vidéos, de
capturer de l’audio et de vidéo, et de faire des animations 2D et 3D sophistiquées. De nombreuses applications d’exemples sont mis à disposition des
programmeurs sur le site d’Apple, ce qui nous a été très utile étant donné
que la prise en main n’est pas du tout évidente.
5.5
Java Swing
Nous avons utilisé la librairie Swing de Java pour créer l’interface graphique utilisateur principale (GUI).
6
Problèmes rencontrés
Les principaux problèmes auxquels nous fûment confrontés furent les suivants :
6 PROBLÈMES RENCONTRÉS
6.1
12
Avec la Wiimote
La détection des mouvements avec la Wiimote est très imprécise car dans
notre cas nous ne pouvons utiliser que ses trois accéléromètres et pas son
émetteur-récepteur infra-rouge qui constitue une aide fort importante (notamment pour la console de jeux Nintendo). De plus, chaque utilisateur fait
des mouvements différents et qui varient avec le temps, ce qui ajoute encore
une composante aléatoire à cette imprécision. Nous avons donc eu de grandes
difficultés à déterminer les caractéristiques pouvant différencier un mouvement d’un autre. Pour illustrer ceci, voici ci-dessous deux figures représentant
les valeurs retournées par les trois accéléromètres au cours du temps pour
différents mouvements de la Wiimote en utilisation typique de notre lecteur.
Fig. 18 – Mouvements resp. : haut, bas, droite et gauche
Fig. 19 – Mouvements circulaires pour resp. avancer et reculer
7 AMÉLIORATIONS POTENTIELLES
6.2
13
Avec Sphinx
Comme tout logiciel de reconnaissance vocale, Sphinx est peu robuste au
bruit, si bien qu’il fait souvent des fausses détections, ce qui peut entraver le
bon déroulement du programme et vite avoir tendance à frustrer et énerver
l’utilisateur. C’est la raison pour laquelle, à l’instar d’autres groupes, nous
avons opté pour la solution de devoir appuyer sur le bouton ‘A’ de la Wiimote
pour activer la reconnaissance vocale, ceci chaque fois avant de parler. Finalement, nous avons aussi remarqué que l’utilisation d’une grammaire simple
augmente le taux de réussite. Mais d’une manière générale, la reconnaissance
vocale reste difficile à intégrer dans un programme si l’on a comme objectif
qu’elle soit utile et nécessaire !
6.3
Avec Quicktime for Java
La librairie Quicktime for Java est tellement grande, complète, difficile à
prendre en main et à comprendre, que parfois des comportements aléatoires
d’affichage surviennent lors de l’utilisation de notre lecteur. Nous ne savons
pas si c’est nous qui avons programmé quelque chose d’incorrect, mais après
de mutilples recherches sur internet et ses divers forums, nous ne savons pas
encore d’où vient le problème.
7
Améliorations potentielles
Comme améliorations potentielles futures, nous avons pensé qu’il pourrait
être utile et judicieux d’ajouter les fonctionnalités suivantes :
– Les possibilités d’annoter les vidéos et captures d’écran, et de sauvegarder ces annotations ;
– La possibilité d’enregistrer des sortes de “checkpoints” durant la lecture, de manière à pouvoir revenir à des endroits bien précis après
coup ;
– La possibilité de classer les fichiers audio et vidéo selon des critères
communs, comme le font la plupart des lecteurs multimédia.
8
Conclusion
Le but intrinsèque que nous nous étions fixé pour ce projet de Lecteur
Multimeodial était d’exploiter au maximum les deux modalités que constituent la voix et la Wiimote de manière à utiliser le moins de boutons possible
et en aucune manière la souris. Ce but a été quasiment atteint puisque nous
8 CONCLUSION
14
n’utilisons que les boutons ‘+’, ‘-’ et ‘A’ de la Wiimote pour respectivement
régler le volume sonore et activer la reconnaissance vocale. Cependant nous
avons trouvé très difficile de trouver des idées pertinentes pour combiner ces
modalités de manière à créer des fonctionnalités nouvelles et utiles à l’utilisateur. Finalement, nous avons trouvé le projet très intéressant, puisqu’il
nous a donné l’opportunité de découvrir un peu des technologies que nous
ne connaissions pas, à savoir Quicktime For Java, Sphinx et la Wiimote.
RÉFÉRENCES
15
Références
[1] Apple Quicktime for Java http://developer.apple.com/quicktime/
qtjava/
http://developer.apple.com/quicktime/qtjava/
javadocs.html
http://developer.apple.com/samplecode/Java/
idxQuickTime-date.html
[2] Nintendo Wiimote for Java
http://www.world-of-cha0s.
hostrocket.com/WiiRemoteJ/WiiRemoteJ%20v0.8.zip.gz
http:
http://www.wiili.org/
//www.wiili.org/index.php/Main Page
forum/wiimote-via-java-t983-s110.html
[3] Avetana Bluetooth JSR-82 implementation for Java http://www.
avetana-gmbh.de/avetana-gmbh/produkte/jsr82.eng.xml
[4] Sphinx4 speech recognizer for Java http://cmusphinx.sourceforge.
net/sphinx4
Téléchargement