Forum Linux.général Array microphone + reconnaissance vocal

Posté par . Licence CC by-sa
Tags : aucun
5
11
juin
2013

Bonsoir les linuxiens !
Je farfouille sur le net sans vraiment avoir de certitude sur les résultats que j'y ai trouvé.

Je vais bientôt m'installer un petit projet de reconnaissance vocale et je cherche un microphone usb esthétique et pas trop cher à brancher sur un raspberry pi.

Visiblement le top c'est un "tableau de microphone" ou plutôt un "array microphone" qui puisse me permettre de me faire entendre correctement partout dans la pièce.

Donc avant d'acheter une bouse et d'être déçu de mon achat (en terme de qualité d’acquisition du son et et d'esthétique) je viens poser la question à la communauté :-)

Qu'est-ce que vous me conseilleriez ? une kinect ? :-)
Merci d'avance pour vos réponses

Cordialement.
Popof

Voici les quelques liens que j'ai trouvé :

http://www.acousticmagic.com/
http://www.amazon.com/MXL-AC404-USB-Conference-Microphone/dp/B001TGTDFM/ref=pd_cp_pc_0/192-2639905-4250555
http://www.amazon.com/Samson-Mic-Compact-USB-Microphone/dp/B001R76D42/ref=pd_cp_pc_1/192-2639905-4250555
http://www.knowbrainer.com/NewStore/pc/viewPrd.asp?idproduct=143
http://www.amazon.com/Blue-Microphones-Yeti-USB-Microphone/dp/B002VA464S

  • # Microphone array

    Posté par . Évalué à 5.

    Microphone array

    Je crois qu'ils l'ont encore au MIT, tu peux sûrement l'acheter pas cher ils arrivent pas en s'en débarrasser.

    http://groups.csail.mit.edu/cag/mic-array/

    Il te faut au moins ça, sinon le son va être pourri.

    Non sérieux tu comptes en mettre combien de micro ? Quel logiciels vas-tu utiliser ?

    Sinon en lien pour du tableau de microphones tout neuf prêt à l'emploi (enfin plus ou moins) moi j'ai ça :

    http://www.clearone.com/products_beamforming_mic_array

    Je trouve pas le prix par contre :) Il doit falloir passer par un revendeur !

  • # reconnaissance vocale et condition d'enregistrement

    Posté par . Évalué à 2.

    il ne faudrait pas plutot tabler sur une bonne insonorisation de la piece, genre chambre sourde, plutot que juste un mur de micro ?

    enfin je dis ca, je dis rien, mais n'importe quel micro te permet de t'enregistrer ta voix, et de le faire depuis partout dans une piece de 30m2
    faut juste parler plus fort quand tu es à l'autre bout de la piece.

    comment je le sais ?
    parce que je fait parfois des conferences Skype avec un PC dans la salle de reunion, branché sur le video projecteur.
    on n'a jamais eu besoin d'un micro par personne autour de la table (12 places assises), le PC est juste posé au milieu.

    • [^] # Re: reconnaissance vocale et condition d'enregistrement

      Posté par (page perso) . Évalué à 3.

      De la reconnaissance vocale c'est assez différent de la reconnaissance humaine. Déjà t'as pas envie de gueuler la nuit par-ce que tu es à 7m du micro. Ensuite pour les micros, il y en a qui sont vraiment perfectionnés et qui vont vraiment prendre que la voix humaine et pas les aboiements ni la musique par exemple, pareil si tu parles dos au micro, certains vont capter et d'autres quasi pas donc ça vaut le coup d'investir quand on a un besoin spécifique comme ça (par contre désolé pour l'auteur du journal, je connais pas de bonnes références)

  • # Question annexe

    Posté par (page perso) . Évalué à 2.

    Puisque la question initiale porte sur les grilles de microphones, je me permet d'ajouter ma petit question sur le sujet. Savez-vous si de telles grilles sont parfois utilisées pour sélectionner les sources sonores en fonction de leur positionnement spatiale (déduit du déphasage et des variations d'amplitudes entre les signaux captés par les différents micros ?

    Par exemple, dans une salle de spectacle on pourrait imaginer employer un tel dispositif pour sélectionner les orateurs sans que chacun ne doive trimbaler un microphone. On pourrait imaginer pouvoir discriminer les sons produits sur la partie droite de la scène de ceux produits au centre et à gauche, et séparer tout ces derniers des sons produits par les enceintes et la salle.

    • [^] # Re: Question annexe

      Posté par . Évalué à 3.

      C'est un peu le principe non ? J'ai pas dû comprendre ta question.

      Vu que ça permet de repérer spatialement une source sonore (les militaires l'utilisent par exemple pour détecter des tirs d'artillerie) ont doit forcément pouvoir filtrer par partie de l'espace.

      Par contre le m'interroge justement sur le logiciel et les algorithmes utilisé par ce genre de dispositif (je sens qu'il y a du gros brevet des familles là dessus).

      • [^] # Re: Question annexe

        Posté par (page perso) . Évalué à 2.

        En effet, aux vues de la documentation commerciale de différents liens donnés, il semble que ce soit effectivement le genre de chose qui soit faite. Mais est-ce bien le cas ?

        Et puis, cela semble être destiné à des conversations dans des petites pièces. Aussi je me demande si c'est applicable dans des endroits un peu grand. Car alors se pose le problème suivant : étant donné la vitesse du son dans l'air et les fréquences acoustiques, est-il possible d'obtenir un interféromètre suffisamment précis pour traiter le signal à temps pour pouvoir réémettre la partie sélectionner sans avoir une distorsion ou un décalage trop fort ?

        Dernière partie de ma question : est-ce que ces techniques à l'heure actuelle permettent effectivement des applications de sonorisation telle que donner la parole à différents groupes sur une scène par une simple modification des paramètres de sélection du signal ?

        Quand au fait que le domaine soit certainement couvert de brevet, je n'en doutes pas. Mais la technique à la base est bien connue, fort ancienne, et parfaitement publique. Il s'agit d’interférométrie (cf. wikipedia). Exactement comme pour la majorité des grands radio-télescopes. On analyse le décalage entre les signaux captés. Et en fonction de la position connue des capteurs, cela permet de déterminer la position de la source. Avec deux capteurs, on obtient juste la direction (cf. ouïe), mais avec plus on peut envisager de connaître précisément la localisation dans l'espace.

        • [^] # Re: Question annexe

          Posté par . Évalué à 3. Dernière modification le 12/06/13 à 23:43.

          Dernière partie de ma question : est-ce que ces techniques à l'heure actuelle permettent effectivement des applications de sonorisation telle que donner la parole à différents groupes sur une scène par une simple modification des paramètres de sélection du signal ?

          Je pense que non car dans le cas que tu cites on fait beaucoup plus simple :

          groupe 1 -> micro 1, groupe 2 -> micro 2, etc… :)

          De plus, dans le cas de la musique on n'utilise pas le même type de micro pour un tambour ou un haut-bois…

          On met bien sûr les micros à coté de chaque groupe. Il ne sont donc pas forcement sur une même ligne ni même un même plan. Je pense que c'est plutôt ce genre de dispositif (quelques micros, genre un ou deux par pièce, aux endroits stratégiques) qui pourrait faire l'affaire de l'auteur du journal.

          Ou alors on part dans l'interférométrie avec un tableau tout fait ou autre micro du même genre mais là comme tu dis on ne connaît pas la qualité, la précision de ces trucs. Le résultat ne serait pas forcément meilleurs qu'avec une prise de son classique (comme celle pour un groupe de musiciens) avec un micro près de chaque source (pour faire court…)

          De la sorte on pourrait déjà assez « simplement », avec une reconnaissance vocale qui distinguerait les voix, déterminer qu'une personne vient de passer de telle à telle pièce. Oui OK si elle ferme pas sa gueule dès qu'elle est dans la deuxième pièce ! :)

          • [^] # Re: Question annexe

            Posté par (page perso) . Évalué à 2.

            L'intérêt que j'imagine pour mon idée, serait double éviter d'avoir à trimbaler les microphones et réduire drastiquement les besoins en connectique, grâce à une distribution fixe de micros (au plafond par exemple), et au prix d'une moindre adaptativité : les capteurs ne seraient évidemment pas adaptés au type de son à capté mais génériques.

            • [^] # Re: Question annexe

              Posté par . Évalué à 3. Dernière modification le 13/06/13 à 17:19.

              À cause des murs dans une maison ou un appart je suppose qu'il faut un tableau de micro par pièce, ça va être compliqué et cher.

              grâce à une distribution fixe de micros (au plafond par exemple)

              Dans une salle de réunion avec le bousin à 24 micros dont j'ai donné le lien plus haut, au plafond et avec des sources sonores (les bouches des gens) quasiment réparties sur un plan parallèle à celui des micros, oui je suppose que ça doit fonctionner assez redoutablement.

  • # Merci bcp pour votre intérêt pour le sujet

    Posté par . Évalué à 2.

    Salut et merci bcp pour votre intérêt pour le sujet

    Pour aller plus le loin je suis le développeur de ce petit projet domotique nommé webx : www.wiseflat.com
    Il s'agit d'un projet basé sur xPL-perl associé à une petite interface web en jquery, ainsi que bcp de scripting, etc… Vous trouverez bcp plus d'informations sur mon site.

    Maintenant que tout fonctionne assez bien, je me suis lancé dans un premier temps sur la mise en place d'une solution audio multiroom avec pulse audio, vous trouverez un article que je viens d'écrire sur le sujet dans la section blog Texte du lien

    L'audio multiroom fonctionnant plutôt bien, je voudrais m'attaquer à la reconnaissance vocale et comme on est sous linux, bah je veux un projet sous linux. J'ai découvert ce petit projet Texte du lien sur lequel je compte bien investir de mon temps pour l'intégrer à Webx. D'où l'intérêt d'un microphone usb sous linux qui me permette de faire mes tests tranquillement et ne pas avoir de doute sur le micro que je vais acheter…
    Voilà vous savez tout !

    • [^] # Re: Merci bcp pour votre intérêt pour le sujet

      Posté par . Évalué à 1.

      En fait l'utilisation d'une grille de micro est peut être inutile dans mon cas. Mais les caractéristiques d'un tel micro semblent être la solution idéale pour faire de la reconnaissance vocale dans un appartement (avec les divers bruit qu'il peut comporter, la vie des gens, la musique, etc)

      En fait je pense même en acheter un pour chaque RPI et mettre les RPI dans des pièces différentes de manière à pouvoir piloter à la voix ma solution domotique depuis n'importe où dans l'appartement… C'est pour ça que j'ai configuré un multiroom.

      • [^] # Re: Merci bcp pour votre intérêt pour le sujet

        Posté par . Évalué à 3. Dernière modification le 12/06/13 à 17:24.

        en fait j'ai bien compris ton probleme,
        mais je ne comprends toujours pas l'interet d'un mur de micro dans ta piece.

        dans tous les cas tu aurais un traitement à faire pour filtrer et ne garder le son que d'un micro plutot qu'un autre pour savoir dans quelle piece, ou quelle partie de la piece se trouve l'interlocuteur.

        mais tu pourrais n'avoir que 2 ou 3 micros bien positionnés, tu aurais le meme probleme de selectionner le micro ou se trouve l'utilisateur.

        y a qu'a voir le truc du MIT

        The I/O bandwidth and computational power necessary to process these streaming data has pushed the limits of traditional computer architectures and I/O schemes. To this end, our group has been designing a scalable polymorphic computer architecture called Raw, specifically designed to process large volumes of streaming data, such as that created by a microphone array. Our microphone array, which generates nearly 50 MB of data every second, is an appropriate target application for this architecture.

        ils ont du créé un ordinateur specifique pour traiter le flux (50Mo/s) de leur 1020 micro qui constituent le mur

        car il ne faut pas oublier que, dans ton cas aussi, plus tu as de micros, plus tu auras de flux à analyser pour savoir ce qui se passe et dans quelle piece.

        • [^] # Re: Merci bcp pour votre intérêt pour le sujet

          Posté par . Évalué à 0.

          Héhé pour ça j'ai ma technique … J'ai des détecteurs de mouvement dans chacune des pièces.

          Les micro seront actifs si il y a du mouvement dans la pièce.
          J'imagine que c'est assez simple via le shell d'activer/désactiver une entrée micro. C'est ce que je compte faire.

          ex :si j'entre dans la cuisine = mouvement -> activation du micro. Que je parle ou pas, de toute façon c'est Jarvis qui s'occupera de savoir si c'est à lui qu'on s'adresse. Si il y a du mouvement dans le salon et qu'on souhaite s'adresser à Jarvis, il sera aussi en mesure d'exécuter l'action demandée.

          L'intérêt d'avoir un micro dans chaque pièce n'est pas d'être sur que l'on m'entende mais plus de pouvoir exécuter des commandes différentes simultanément… et oui moi j'ai le don d'ubiquité ;-)

          De même que si on est plusieurs à parler dans une pièce, Jarvis doit savoir si on s'adresse à lui ou pas (d'ou peut être, d'avoir un "array microphone" qui semble bien plus performant qu'un micro classique)…

          D'où ma question initiale, quel type de micro me faudrait il sans me ruiner ?
          Est-ce qu'un micro tout simple serait suffisant ?

          @Neox : l'intérêt d'un avoir un mur de micro, pour moi c'est d'être sur que en face/à côté et/ou seul/à plusieurs le son puisse être correctement décoder par jarvis. Mais j'ai trouvé des microphone array qui sont bcp plus discret que celui du MIT :-)
          Merci d'avance

        • [^] # Re: Merci bcp pour votre intérêt pour le sujet

          Posté par . Évalué à 0. Dernière modification le 12/06/13 à 18:17.

          @Neox : car il ne faut pas oublier que, dans ton cas aussi, plus tu as de micros, plus tu auras de flux à analyser pour savoir ce qui se passe et dans quelle piece.

          ce n'est pas qu'un RPI qui travaille… Jarvis tourne sur chaque RPI (1 RPI/pièce).

          Pour le moment webx, c'est un RPI qui pilote tout (mysql, nginx, services xpl-perl) Les services perl font des requêtes à la base de données locale. Les autres RPI pour le moment ne me servent qu'au multiroom audio.

          Mais demain, je compte monter un cluster de 4 RPI ou chaque noeud fera tourner mon projet webx. Les services xPL-tourneront sur tous les RPI, excepté mysqld et ngninx.

          Dans cette configuration là, je modifierai mes scripts pour m'adresser à l'adresse ip virtuelle du cluster (le noeud actif). Les requêtes faites à la base de données provenant des autres RPI (select/insert/update/delete) seront faite via le réseau au noeud actif (c'est à dire sur l'adresse ip virtuelle), celui qui hébergera mysql et nginx.

          L'intérêt évident à cette configuration est d'avoir un moteur décisionnel décentralisé et que si le noeud actif tombe, un autre puisse redémarrer la base de données… là où se pose mon problème c'est sur les réplications dans les bases de données des autres RPI… Mais c'est un autre débat

          J'espère que vous me suivez :-)

          • [^] # Re: Merci bcp pour votre intérêt pour le sujet

            Posté par . Évalué à 2.

            comme j'adore taquiner les createurs avec mes questions candides,
            il se passe quoi quand ta femme est dans la cuisine (hou la mysogynie de geek)
            et toi dans le salon
            avec les enfants qui jouent dans la chambre…

            tu auras bien 4 micros actifs à gerer…

            • [^] # Re: Merci bcp pour votre intérêt pour le sujet

              Posté par . Évalué à 0.

              Lol pourtant la reconnaissance vocale c plutôt WAF ? Les enfants on s'en fout j'en ai pas :)
              Bah chacun fera ça vie ?
              Chaque rpi activera jarvis et chacun pourra profiter du bigniou

              Par contre je suis pas sur que les rpi supporte la charge. Le cpu sera sûrement à 100% c ma seule crainte .

              Bon en tout cas à par titiller tu m'as tjrs pas proposé le micro de mes rêves :-)

              En tout c sur la suite de mon programme c'est une meilleure gestion des scénarios domotique et un jarvis supra intelligent

              • [^] # Re: Merci bcp pour votre intérêt pour le sujet

                Posté par . Évalué à 3.

                sauf si tes pieces font 100m2 chacune, un seul micro classique fera deja bien le travail.
                apres plus que le micro c'est la qualité des algo de reconnaissance vocale et la puissance de calcul qui vont faire le boulot.

                regarde la reconnaissance vocale de ton telephone voire de ton kit bluetooth dans ta voiture, tu as un "pauvre" micro sous le retroviseur interieur
                et pourtant tu as la music, le bruit de roulement de la voiture, et la reconnaissance vocale fonctionne.

                donc à mon avis mettre plusieurs micros dans la piece, c'est te prendre la tete pour savoir lequel est le principal, etc.

                fais tes essais deja avec un micro standard avec le raspberry et avec un PC normal pour etudier la charge CPU
                tu verras ensuite à faire plus compliqué avec de multiples micros branchés sur la meme machine.

                • [^] # Re: Merci bcp pour votre intérêt pour le sujet

                  Posté par . Évalué à 0.

                  C exactement le genre de réponse que je voulais entendre.

                  Je vais chercher un micro dans ce goût là.

                  Passez moi voir mon projet pour tester un de ces 4 ?

                  A + et merci neox!

                  • [^] # Re: Merci bcp pour votre intérêt pour le sujet

                    Posté par . Évalué à 1.

                    Tiens regarde…
                    SARAH est un superbe projet du genre "jarvis like"…
                    J'ADORE ! Seulement gros défaut c'est sous windows… mais la communauté est vraiment violente ! Il suffit de voir le nombre de plugins développés par elle…

                    Regarde la vidéo https://plus.google.com/u/0/114550238194237575829/posts/32fqeqfPKGR?cfem=1

                    Son plugin fonctionne vraiment bien.
                    Le mec utilise le micro de son pc et il mentionne bien "ca risque de bugger avec le micro basique". Bah c'est justement ce que je voudrais éviter de l'achat de mon premier micro…
                    A+

                  • [^] # Re: Merci bcp pour votre intérêt pour le sujet

                    Posté par . Évalué à 1.

                    Conseil: prend un micro directif (cardio ou hypercardio), la source sera plus facile à localiser, et tu auras moins de bruit ambiant. Mais je suppose que c'est de toutes façons la directivité des micros usb.
                    Pas besoin d'une matrice de micro (même pour faire de la localisation, c'est pas tellement utile par rapport à l'algo à développer), d'autant plus si ce n'est que la reconnaissance qui t'intéresse. Avec deux oreilles on s'en sort à peu près en azimuth. Pourquoi faire plus compliqué?

                    Et sinon, tu comptes faire ça comment, la reconnaissance vocale?

                    • [^] # Re: Merci bcp pour votre intérêt pour le sujet

                      Posté par . Évalué à 0. Dernière modification le 13/06/13 à 00:45.

                      J'ai un peu cherché des projets déjà existant mais je me suis arrêté sur celui là http://jarvis.comze.com/index.html
                      J'ai contacté le développeur, son projet est encore jeune mais j'aimerai bcp l'aidé à le développer.
                      La base est là (dans son code) : sudo apt-get install sox espeak mbrola-fr1 skype cmatrix xdotool ssmtp freetux-tv

                      J'ai juste besoin d'aller plus loin et de tisser plus de lien avec mon système domotique.
                      Il faut que je structure mon API restfull pour que son Jarvis puisse l'interroger en toute simplicité.
                      Je pense qu'on va bosser ensemble…
                      Et du coup y a plein de questions qui me viennent …
                      - Jarvis doit exécuter des ordres. Il ira récupérer tout ce qu'il peut faire depuis mon API rest (scénarios, actions sur des modules, plugins météo, plugin WOL, plugin météo, etc)
                      - mais il doit aussi en apprendre de lui même et créer des scénarios dans mon système (encore une fois via l'api) à la demande…
                      Le cerveau ce n'est pas jarvis c'est webx, Jarvis c'est juste un prolongement de ma pensée et de mes envies :-)

                      Je me suis pas encore "vraiment" intéressé au sujet… faut que je me documente avant de me lancer dans cet IA mais pour la partie gestion des scénarios de vie de ma maison sont construit dans webx. Après, comme je l'ai écrit précédemment c'est pour la partie plugin afin que Jarvis sache quoi faire… J'aime bien le web services et je pense que mes plugins vont être développé dan ce gout là, c'est portable et facilement évolutif.

                    • [^] # Re: Merci bcp pour votre intérêt pour le sujet

                      Posté par . Évalué à 0.

                      Et d'ailleurs… si tu as des références, ça m'intéresse :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.