sharkgua a écritBonne idée mais il faut être vachement bon en prog pour reussir cette exploit !
créer des algorythmes pour que tel son soit le même que tel autre son il faut être (je pense) vachement doué Oo
Oui c'est sur... bon nous, on est peut-être pas doués à ce point, mais on est nombreux et bénévoles, c'est un avantage. Et puis je me dis une chose simple, mais qui n'est pas facile à expliquer: c'est que les logiciels de reconnaissance vocale ont pour but premier de retranscrire des mots-audio en mots-texte, alors que notre objectif premier à nous est plutôt de controler le PC avec un minimum d'efforts, un minimum d'énervement et un maximum d'efficacité (cf la vidéo de gnome-voice-control). La reconnaissance de mots est bien plus lourde et plus complexe que la simple comparaison de deux échantillons sonores (dans le but d'établir un taux de correspondance) même si c'est un peu plus compliqué que cela.
.
J'ajouterais que finalement, la partie la plus intéressante est précisément le fonctionnement de cet "algorythme". J'ai quelques vagues idées sur le sujet. Je pars de la courbe sonore telle qu'on peut la contempler dans un logiciel de son, et je me pose des questions. Car ce qui n'apparaît pas au premier abord sur cette courbe, c'est sa profondeur. En zoomant, on se rend compte que des ondes plus courtes se superposent aux ondes plus longues. Et plus on zoome, plus les détails apparaissent. Cette profondeur du son m'intrigue un peu. Si on voulait créer un algorythme de reconnaissance, et si on décidait par exemple de ne retenir que les maxima et les minima de l'onde sonore, à quelle échelle devrait-on se situer ? Et sur quelle durée devrions nous agir ? Où sont les timbres des sons ? Où est l'environnement acoustique de la pièce ou du lieu ? Où se trouve la différence entre le même mot prononcé par deux personnes différentes physiquement sur la courbe ? Ce ne sont que de simples interrogations pour l'instant, mais j'ai bon espoir qu'il existe une méthode simple de détection. Peut-être est-ce déja le cas dans le programme de sphinx. Je ne sais pas, je suis encore dans la phase de documentation.
.
A propos des courbes sonores, je voudrais ajouter une dernière réflexion. Étant audiophile et donc concerné par la certaine perte de qualité liée au passage de l'analogique au numérique, j'ai été ravi d'apprendre que le mp3 - laissons à part la problématique des formats propriétaires - encode les sons sous forme d'équations. Au lieu de retenir un ensemble de points de coordonnées X et Y, on retient une courbe de telle amplitude et telle fréquence dont l'intensité varie dans un laps de temps déterminé. Je trouve ça très bien, parce que à l'instar des images vectorielles-vs-bitmap, on peut toujours recalculer les points en fonction de la définition disponible. J'ai donc un autre rêve tout aussi fou que celui-ci qui serait la conversion directe depuis l'analogique vers un format numérique mais sans passer par une numérisation classique en forme d'escalier. On devrait pouvoir, avec le matériel adéquat, encoder directement un vinyl dans un format numérique entièrement constitué d'équations, avec une qualité qui devrait friser avec la qualité de profondeur "infinie" de l'analogique, chose que le numérique de type "bitmap" n'arrivera jamais à faire aussi bien, et fera toujours de façon beaucoup plus lourde et beaucoup moins naturelle. Un son est une onde. Une onde est une courbe. Une courbe est une équation. Il est donc plus logique d'enregistrer une équation qu'un ensemble de points. La qualité du vinyl dans nos PC, et peut-être même au delà... les équations complexes de Miles Davis dans nos diffuseurs... Mais laissons là ces rêveries et revenons à nos moutons. Cette réflexion servait juste à introduire l'idée des équations correspondant aux sons.
.
Une théorie veut que tout signal complexe comme celui d'une onde sonore puisse être décomposé en une somme de sinusoïdes simples (cf
les transformées de Fourier). Ce qu'il nous faudrait, toujours dans l'idée d'un système simple pour commander le PC par la voix, c'est trouver la façon de faire qui demande le moins de ressources possibles, mais qui garantit bien entendu le minimum de résultats attendus. Je pense qu'il faut "filtrer directement la source". Le son doit couler à travers notre programme et en coulant, il doit modifier des variables au passage. Variables qui dans certaines conditions déclencherons le passage à 1 d'autres variables, en conséquence de quoi les commandes correspondantes seront exécutées. Pas compliqué, si ? Et bien sur ça n'empêche pas d'expérimenter aussi du côté de sphinx. En jouant sur les deux côtés (à plusieurs) on devrait obtenir des résultats plus ou moins rapides, en fonction du taux de participation au projet. Venez nombreux.
.