Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 31/05/2015, à 13:09

Benoitfra

VOXGenerator

Bonjour à vous

Je suis le créateur de Google2Ubuntu et PocketVox. Je m'étais désinscrit des forums pour me consacrer à mon travail. Mais je ne suis pas rester sans rien faire pendant ce temps.

Les deux projets précédents visaient à introduire la reconnaissance vocale sur linux. Force est de constater que cela n'a pas vraiment marcher. j'étais seul pour développer et les solutions proposées n'étaient pas assez flexibles ou trop gourmandes en dépendances.

Cette fois-ci je reviens avec un projet en Python: VOXGenerator. J'aimerai bien que les pythonistes de la communauté m'aident à développer ce projet.

Je vais vous décrire les grandes lignes de celui-ci.

L'idée est de réduire au maximum les taches à effectuer par l'utilisateur pour ce faire VOXGenerator repose sur l'écriture de deux fichiers xml seulement mais vous allez vois à quel point cela est puissant.

Parlons du premier le fichier contenant les plugins.

<?xml version="1.0"?>
<plugins>
	<plugin id="0" name="Open" reload="False" ip="127.0.0.1" port="5100">
		<package name="test"  module="module"/>
		<command name="documents" transcription="ouvre mes documents" type="system" exec="ls"/>
		<command name="musiques"  transcription="ouvre ma musique" type="custom"/>
		<command name="images"    transcription="ouvre mes images" type="custom"/>
	</plugin>
    <plugin id="1" name="Action" reload="False" ip="127.0.0.1" port="6000">
		<command name="copier" transcription="copier ceci" type="system" exec="xdotool key ctrl+c"/>
		<command name="coller" transcription="coller ici"  type="system" exec="xdotool key ctrl+v"/>
		<command name="couper" transcription="couper ceci" type="system" exec="xdotool key ctrl+x"/>
	</plugin>
</plugins>

Ce fichier de plugin permet automatiquement de génerer des plugins python:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from voxgenerator import Plugin
from test import module
class Open(Plugin):
    def __init__(self):
        Plugin.__init__(self, '127.0.0.1', 5100)
        self.__id__ = 0
        self.__name__ = 'Open'

        self.__function__[0] = self.documents
        self.__function__[1] = self.musiques
        self.__function__[2] = self.images
        
        self.__command__[0] = 'ouvre mes documents'
        self.__command__[1] = 'ouvre ma musique'
        self.__command__[2] = 'ouvre mes images'
        
        self.__build__('Open', False)
        self.__receive__()
    
    def documents(self):
        os.system('ls')
    
    def musiques(self):
        raise NotImplementedError('subclasses must override musiques()!')
    
    def images(self):
        raise NotImplementedError('subclasses must override images()!')
    
    def __process__(self, name, hyp):
        if self.__name__ == name:
            print 'Plugin ' + name + ' receive : '+ hyp
            idx = self.__selector__.__query__(hyp)
            if self.__function__.has_key(idx):
                self.__function__[idx]()

if __name__ == '__main__':
    p = Open()

Comme vous pouvez le voir chaque plugin est indépendant et communique via TCP avec le pipeline et pourra ainsi être déployé sur n'importe laquelle de vos machine. Un plus de la génération automatique est que si vous avez développé un module python à vous disons une Classe Foo alors il suffira que la classe Foo hérite du plugin et qu'elle réimplemente les fonctions marquées comme "custom" dans le fichier xml de plugin. De plus vous voyez que vous pouvez via la balise "package" qu'il est possible d'importer des packages dont vous pourriez avoir besoin. Pour toutes les commandes marquées "system", une fonction spéciale est créée dans le plugin et permet d’exécuter la commande système associée.

Ensuite viens le second fichier: pipeline.xml :

<?xml version="1.0"?>
<pipelines>
	<dic     file="/home/benoit/PyGNUVoice/sphinx/dictionnary.dic"/>
	<hmm     file="/home/benoit/PyGNUVoice/sphinx/hmm"/>
	<include file="/home/benoit/PyGNUVoice/plugin.xml"/>
	<lmctl   file="/home/benoit/PyGNUVoice/lm/lmctl.txt"/>
	
	<pipeline priority="1" plugin="Open" ip="127.0.0.1" port="5100">
		<activation window="chrome"/>
		<activation mouse="True">
			<x start="0" end="200"/>
			<y start="0" end="200"/>
	    </activation>
		<activation keyword="Jasper"/>
    </pipeline>
   	<pipeline default="True" priority="0" plugin="Action" ip="127.0.0.1" port="6000"/>
</pipelines>

il est assez complexe aux premiers abords mais vous allez voir c'est assez simple.
La balise include vous permet d'inclure le fichier plugin.xml précédent. Lors de l'execution si ce fichier a été modifié alors les plugins python, les modèles de langage et le fichier de contrôle des modèles (lmctl).

Ce dernier fichier permet de choisir dans quel modèle de langage effectué une recherche quand le pipeline de reconnaissance envoie une transcription de votre voix. Il est possible de choisir switcher entre un modèle et un autre via différentes activations qui peuvent être :

* window = une fenêtre particulière a le focus
* keyword = un mot a été prononcé
* mouse  = la souris est dans une certaine zone

Les dépendances sont réduites python, python-xlib, python-gstreamer et pockesphinx bien sur.

Il n'y a pas d'IHM si quelqu'un est motivé je lui laisse cette activité et je serai ravi de travailler avec lui.
On peut également imaginer créer un système (un daemon) permettant de lancer/arrêter les plugins voulus et le pipeline. 

À oui le nom VOXGenerator peut également être modifié, si vous avez une idée simple, concise et efficace.

Dernière modification par Benoitfra (Le 31/05/2015, à 16:34)

Hors ligne

#2 Le 31/05/2015, à 14:48

temps

Re : VOXGenerator

Bonjour,
Puis-je connaître le poids totale de l'application ?
Est-ce que celle-ci est en ko et sans sources externes ?

Je pose cette question, car avec un peu de temps, c'est ce que je peux réaliser.
Cordialement

Dernière modification par temps (Le 31/05/2015, à 14:50)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#3 Le 31/05/2015, à 15:02

Benoitfra

Re : VOXGenerator

Heu si on prend en compte les dépendances externes je ne sais pas ! car il y a pocketsphinx, sphinxbase et pense aussi à prendre en compte le poids des modèle du dictionnaire et hmm assez lourd (48 Mo). Sur mon pc ou je développe et test, j'ai un dossier de 48.4Mo qui contient le tout tu vois que le code ne pèse pas lourd par rapport aux dicos et autres. Pour info pocketphinx est fait pour l'embarqué.

Hors ligne

#4 Le 31/05/2015, à 21:52

temps

Re : VOXGenerator

Merci pour la réponse. J'ai créé il y a plusieurs année un lecteur de texte qui pesait quelques ko, mais mes travaux ne m'ont apporté que des insultes. Aussi, j'ai arrêté de travailler sur ce projet, pour basculer sur un autre projet que j'espérai plus porteur. J'écris la consonne "b" avec 2 octets, j'ai même fait une émission de radio à l'époque. Cela fait plus de 5 ans que j'ai créé mon propre format audio, et sincèrement je veux aider par principe même si je pense que c'est un programme incohérent.
En plus simple, j'aurai bien voulu accorder une journée au projet présenté pour aider, mais à la vue du poids des codes, je pense que c'est impossible en si peu de temps.

Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#5 Le 01/06/2015, à 07:38

Benoitfra

Re : VOXGenerator

Peu importe si cela est coherent ou non ! L important est d avoir une idee, la developper et la promouvoir.
On ne peut pas se contenter de creer des distibutions linux qui certes ont un jolie nom mais n apporte rien de neuf. L important c est d innover en temps que malvoyant je peux t assurer que le controle par la voix est coherent.


Il y a plein de choses a faire sur le projet :
Travailler au packaging
A l internationalisation
Charcher d autre activation (j'en ai 2 ou trois autres en stock)
Travailler pour ameliorer la generation de code
Proposer d autre generateur C, C++....
Proposer et concevoir des plugins
Ou tout simplement repandre l idee

Avis aux amateurs

Dernière modification par Benoitfra (Le 01/06/2015, à 07:40)

Hors ligne

#6 Le 01/06/2015, à 08:20

temps

Re : VOXGenerator

Bonjour,
J'espère sincèrement que tu vas trouver des DEV pour t'aider sur ce projet.
Concernant la reconnaissance vocale et la lecture automatique,
je pense que dès que j'ai mis au point une version finale de la BAUL,
ces fonctions découleront d'elles-mêmes, et il est fort probable que mon projet soit finit avant VOXGenerator
Le top serait d'avoir le choix avec plusieurs techniques possibles.
Il ne faut pas se trompé, à une époque, j'ai passé plusieurs semaines à travailler en alternance sur mon projet et des outils cités dans VOXGenerator.
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#7 Le 01/06/2015, à 09:58

Benoitfra

Re : VOXGenerator

Le plus imoortant pour moi c est le controle vocale. Je veux juste permettre aux utilisateurs de controler leur pc avec leur voix. Pocketsphinx fonctionne et a un bon support. De plus, VOXGEnerator est deja bien avance

Hors ligne

#8 Le 13/06/2015, à 18:28

Benoitfra

Re : VOXGenerator

A PRIORI LA COMMUNAUTÉ EST MORTE. AUCUNE VOLONTé

Hors ligne

#9 Le 28/06/2015, à 19:47

voxdemonix

Re : VOXGenerator

Benoitfra a écrit :

A PRIORI LA COMMUNAUTÉ EST MORTE. AUCUNE VOLONTé

Tu t'adresses tout simplement au mauvais forum. Va voir du côté de Sarah et Yana voir Jarvis (moins connus). Là les gens y traitent du sujet spécifique de la reconnaissance vocale, du speech-to-text etc.
Sur ubuntu-fr tu trouvera plus tôt des gens discutant pc et internet de façon générale, tu trouvera très peu de gens ici concernant la robotique, la domotique ou la sécurité avancé.

Et retient: il n’existe pas UNE communauté mais tout plein de communautés allant de 1 membres a plusieurs milliers, n'espère pas poster un topic sur un forum et parler a l'ensemble les libristes francophone (!= français).

Dernière modification par voxdemonix (Le 28/06/2015, à 19:50)


~~~≃≃≃≃ VoxDemonix infernalis creatorem ≃≃≃≃~~~

Hors ligne

#10 Le 28/06/2015, à 21:25

Benoitfra

Re : VOXGenerator

Heu l objectif etant d integrer la reconnaissance vocale sur les bureaux linux je pense que le poste a toute sa place  ici par contre la communaute ubuntu est terminee et ne sert plus a rien. Je dirai meme qu ubuntu est mort en general. Pas moyen de lancer des projets. Bien sur il y a d autres communautes mais celle ci etait la plus active peut etre y aurait il eu des enthousiastes mais rien.

Hors ligne

#11 Le 29/06/2015, à 15:30

voxdemonix

Re : VOXGenerator

Je sais pas ou tu as vu qu'ubuntu-fr était la communauté la plus active, surtout concernant la programmation... Après je ne te dis pas que ton topic n'a pas ça place, mais qu'il est vain de croire que tu va le populariser ici.
Ubuntu-fr est un site d'entre-aide (un wiki et un forum), pas de développement de projet (pas de github, ni de mécanisme de partage de code), pas de mécanisme de financement de projet (kickstarter, tipee) ni même de mécanisme d'articles comme LinuxFR.

Le contrôle de machine via ordre vocaux est très a la mode, et beaucoup de monde attends que Linux rattrape son retard sur Windows mais avec comme condition que l'utilisateur finale ne soit pas uniquement malvoyant et que les techno employées respectent la communautés (principalement des jeunes (-35ans) qui codent en langage interprété (javascript dans le cas de Sarah si je ne m'abuse) avec des tendances spécifique (g33k)).

De plus: comme disent TOUT les profs de programmation "Ne ré-invente PAS la roue, jeune jedi, sauf si la roue que tu utilises est carré".
Ce que tu désires faire existe déjà mais avec comme défaut, dans le monde linux, le speech-to-text qui bug. Si tu résouds le problème du speech-to-text qui n'est pas utilisable, toute la partie exécution des ordres reçus etc existe déjà dans les projets que je t'ai cité plus haut et tu n'aura donc aucune difficulté a trouver des gens et du code déjà fonctionnel smile

PS: va voir ceci ( http://lacantine.ubicast.eu/videos/22-06-2013-150912/ et https://www.youtube.com/watch?v=-SVzSXtb15k) avant de répondre a mon message, tu ne sera vraiment pas déçu smile

Dernière modification par voxdemonix (Le 29/06/2015, à 15:58)


~~~≃≃≃≃ VoxDemonix infernalis creatorem ≃≃≃≃~~~

Hors ligne

#12 Le 30/06/2015, à 07:21

Benoitfra

Re : VOXGenerator

Heu c est pas mon premier projet dans ce domaine et les projets ne se focalisent pas du tout sur mon objectis. Integrer la reconnaissance vocale sur lrs bureaux necessite de faire des choix. Les technos utilisees ne dont utilisables et pas pratiques du tout pour le bureau linux. D ou mes travaux et mrs choix dbus, python, pocketsphinx et l envie de creer quelque chose de simple pour une prise en main rapide.
L idee ici est de partager des idees pour ameliorer l integration grace pourqupi pas a l aide de devs et savoir ce que les utilisateurs reclament. Le projet est en grande partie fonctionnel. Fin du troll. Si vius etes motivés je vous attends.

Hors ligne