IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Audio Discussion :

Reconnaissance musicale pour PC


Sujet :

Audio

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut Reconnaissance musicale pour PC
    Salut,
    Je cherche un logiciel pour PC qui s’exécute en arrière plan (genre dans la "notification area" de windows) qui reconnait et affiche la musique jouée sur une étiquette pas loin de la dite "notification area" (le message devrait être discret) à chaque fois qu'il reconnait une musique.
    En supplément, j'aimerais qu'il soit équipé d'un bouton "partager sur facebook" pour que lorsqu'on appuye sur ce bouton, on génère le statut "écoute TITRE de ARTISTE." sur facebook.
    Ce n'est pas que je sois un fou du partage sur facebook, mais il m'arrive de tomber sur des musiques que j'aimerais faire découvrir aux autres.

    Si ce logiciel n'existe pas, pensez-vous qu'il soit facile à programmer (de préférence en C/C++) et si c'est le cas, de quels outils j'aurais besoin?

    Je vous remercie d'avance pour votre contribution.

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    salut,
    avant de me lancer dans ce projet, est-ce possible de récupérer ce qui sort des enceinte, par la carte son ou je ne sais quoi?

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 815
    Points : 218 179
    Points
    218 179
    Billets dans le blog
    117
    Par défaut
    Bonjour

    En théorie, oui, car Audacity le fait.
    Il faut trouver le bon mapping des périphériques pour le faire.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour

    En théorie, oui, car Audacity le fait.
    Il faut trouver le bon mapping des périphériques pour le faire.
    Qu'est ce que fait audacity? je l'ai téléchargé mais je ne sais pas de quoi tu parle.

    "le bon mapping des périphériques"... est-ce que ca va me poser des problèmes, genre est-ce que ca va poser des problèmes de compatibilités?
    je te remercie d'avance pour ta contribution.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 815
    Points : 218 179
    Points
    218 179
    Billets dans le blog
    117
    Par défaut
    Audacity est un logiciel d'édition de sons, qui entre autre, permet d'enregistrer le son sortant des enceintes.
    Mais, sous Windows 7 et 8, il faut configurer sa machine de la façon expliquée dans la FAQ : http://wiki.audacityteam.org/wiki/Mi...lbar_Issues#cp
    C'est pour cela que je parlais de mapping spécifique.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    ok thank you, j'vais voir ca.

    EDIT : ouah c'est compliqué^^
    en y repensant, je n'ai pas réussi à trouver un logiciel de capture vidéo qui ne bug pas au niveau des sons, exemple CamStudio m'affiche 'WaveoutGetSelectControl()'

    du coup je me pose la question de la faisabilité de développement de ce futur programme...

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    resalut,
    dans audacity, au lieu de MME j'ai selectionné 'Windows WASAPI' et ca enregistre très nettement le son. D'abord, avez-vous cette option dans audacity? ensuite pensez-vous que je puisse l'utiliser pour mon projet?

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    voila un debut,
    un mec utilise WASAPI pour enregistrer le flux sortant des speakers :
    http://blogs.msdn.com/b/matthew_van_...-you-hear.aspx

    sources en C++, ca me va très bien ^^ (en pièce jointe)
    Fichiers attachés Fichiers attachés

  9. #9
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    salut,
    quelqu'un aurait une idée pour faire reconnaître de la musique (sous format .wav) pour récupérer le titre et l'artiste? via internet ou pas?

    pour l'instant j'ai posté chez echonest : https://developer.echonest.com/forums/thread/1541
    mais pas de réponse.

  10. #10
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    question simple :
    j'utilise visual C++ 2012 pour l'application qui enregistre ce qui sort des enceintes, mais je veux que ca se déroule en backgroud.
    Alors j'ai réussi à faire en sorte d'enregistrer 4 secondes puis de quitter l'application tout en créant le .wav, mais maintenant je voudrais supprimer la fenêtre du bash, comme je l'ai dis précedement, l'application devra tourner en backgroud.
    j'ai mis en commentaire tout les printf ainsi que les #include <stdio.h>, mais ca doit pas être ca, comment on fait sous visual C++ ?

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 815
    Points : 218 179
    Points
    218 179
    Billets dans le blog
    117
    Par défaut
    Cela se désactive à partir des options du projet (je ne peux dire laquelle précisément). Une recherche sur internet vous fournira la réponse, car c'est une demande courante.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  12. #12
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    Salut,
    En principe je vais utiliser 'ffmpeg' associé à 'Virtual Audio Capture Grabber' pour la capture audio (ce qui me permet d'enregistrer 30 secondes de ce qui sort des enceintes),
    et 'Echonest' pour la reconnaissance musicale,

    Dans un premier temps, je vais essayer d'enregistrer 30 secondes du son toutes les 2 minutes. Connaissez-vous, en C/C++ un meilleur outil que <time.h> pour la gestion du temps?

  13. #13
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 815
    Points : 218 179
    Points
    218 179
    Billets dans le blog
    117
    Par défaut
    En quoi time n'est pas suffisant ?
    Peut être un système de timer, il doit y en avoir nativement pour chaque plateforme
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  14. #14
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    J'pensait qu'il y avait des librairies de temps plus "lisible" que timer.h.
    Enfin bon, j'ai adopté une autre technique : j'utilise une combinaison de Sleep() et de goto

    J'ai un soucis à l'execution d'une ligne de commande qui fonctionne bien avec system() mais pas avec WinExec(),

    voila, je veux executer cette ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -F "api_key=XXX" -F "filetype=mp3" -F "track=@sound.mp3" "http://developer.echonest.com/api/v4/track/upload" > info.txt
    mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        system("curl -F \"api_key=XXX\" -F \"filetype=mp3\" -F \"track=@sound.mp3\" \"http://developer.echonest.com/api/v4/track/upload\" > info.txt");
        //WinExec("curl -F \"api_key=XXX\" -F \"filetype=mp3\" -F \"track=@sound.mp3\" \"http://developer.echonest.com/api/v4/track/upload\" > info.txt",SW_SHOWDEFAULT);
    me crée bien le fichier info.txt et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        //system("curl -F \"api_key=XXX\" -F \"filetype=mp3\" -F \"track=@sound.mp3\" \"http://developer.echonest.com/api/v4/track/upload\" > info.txt");
        WinExec("curl -F \"api_key=XXX\" -F \"filetype=mp3\" -F \"track=@sound.mp3\" \"http://developer.echonest.com/api/v4/track/upload\" > info.txt",SW_SHOWDEFAULT);
    ne me le crée pas et génère cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    curl: (6) Could not resolve host: >
    curl: (6) Could not resolve host: info.txt
    j'ai cherché sur google, rien trouvé.
    note : je doit utiliser WinExec() et non system() car dans le futur, mon programme n'affichera pas de fenêtre de commande.

    je vous remercie d'avance pour votre contribution, et particulièrement littlewhite qui m'est d'une grande aide.

  15. #15
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 815
    Points : 218 179
    Points
    218 179
    Billets dans le blog
    117
    Par défaut
    D'après moi, WinExec ne gère pas la redirection, notamment car il ne lance pas de terminal/de système comparable à un terminal avec des flux.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  16. #16
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    Effectivement,
    du coup, à la place de WinExec, j'utilise CreateProcess avec quelques arrangements ( http://www.developpez.net/forums/d14...createprocess/ ).


    Voici les bases de mon programme, si vous avez du temps, vous pouvez le tester en :
    téléchargeant VirtualAudioCaptureGrabber
    puis mon projet

    executez _A pendant la lecture d'une musique "connue", au bout de 70 secondes, en ouvrant le fichier 'info.txt', vous devriez retrouvez l'album, le titre et l'artiste et d'autres info.
    note : puisque le programme et en loop eternel (chaque 70 secondes, il trouve la musique jouée) pour le killer, allez dans le gestionnaire des tâches.
    si quelque chose ne va pas, s'il vous plait dite le moi.

    pour la suite de mon projet, je vais utiliser les expressions régulières, j'aimerais, du fichier info.txt, attraper "artist" : "ARTISTE" et "title" : "TITRE" et enregistrer ces deux info dans un fichier 'message.txt' qui contiendra donc une seule ligne : 'ARTISTE - TITRE',
    sachant que si le fichier info.txt ne contient pas le mot "song_id", cela veut dire que la musique n'a pas été trouvé et que je voudrais remplir 'message.txt' par 'unknown'.

    je vous tiens au courant lorsque je serais à l'étape où il faut créer l'application en tant que notification area (je ne sais pas comment ca s'appelle en vrai, ce genre d'application).
    comme dis au début de ce sujet, j'aimerais afficher une étiquette pendant on va dire 5 secondes juste au dessus de la notification area avec 'ARTISTE - TITRE'

  17. #17
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    Salut,
    J'essaie d'utiliser boost/regex.hpp pour utiliser les expressions régulières.
    J'ai donc téléchargé boost sur le site officiel et j'ai eu beaucoup de mal à le compiler, j'ai donc utilisé une version précompilé de quelqu'un sur le net et j'ai beaucoup moins d'erreurs à la compilation sauf celle-la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ||=== Build: Release in _A (compiler: GNU GCC Compiler) ===|
    C:\Users\Admin\Google Drive\TRAVAUX\PROGRAMMING\C++\MyMusicRecognition\_A\main.cpp||In function 'int main()':|
    C:\Users\Admin\Google Drive\TRAVAUX\PROGRAMMING\C++\MyMusicRecognition\_A\main.cpp|41|warning: deprecated conversion from string constant to 'LPSTR {aka char*}' [-Wwrite-strings]|
    C:\Users\Admin\Google Drive\TRAVAUX\PROGRAMMING\C++\MyMusicRecognition\_A\main.cpp|46|warning: deprecated conversion from string constant to 'LPSTR {aka char*}' [-Wwrite-strings]|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp|| undefined reference to `_Unwind_Resume'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp|| undefined reference to `_Unwind_Resume'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp|| undefined reference to `_Unwind_Resume'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp|| undefined reference to `_Unwind_Resume'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp:(.text$_ZNK5boost16exception_detail10clone_implINS0_19error_info_injectorISt11logic_errorEEE7rethrowEv[__ZNK5boost16exception_detail10clone_implINS0_19error_info_injectorISt11logic_errorEEE7rethrowEv]+0xa6)||undefined reference to `_Unwind_Resume'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp:(.eh_frame+0x9b)||undefined reference to `__gxx_personality_v0'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp:(.eh_frame$_ZNK5boost16exception_detail10clone_implINS0_19error_info_injectorISt11logic_errorEEE7rethrowEv+0x13)||undefined reference to `__gxx_personality_v0'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp:(.eh_frame$_ZNK5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEE7rethrowEv+0x13)||undefined reference to `__gxx_personality_v0'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp:(.eh_frame$_ZNK5boost16exception_detail10clone_implINS0_19error_info_injectorINS_11regex_errorEEEE7rethrowEv+0x13)||undefined reference to `__gxx_personality_v0'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(regex.o):regex.cpp:(.eh_frame$_ZN5boost16exception_detail19error_info_injectorISt11logic_errorED1Ev+0x13)||undefined reference to `__gxx_personality_v0'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(cpp_regex_traits.o):cpp_regex_traits.cpp|| undefined reference to `_Unwind_Resume'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(cpp_regex_traits.o):cpp_regex_traits.cpp|| undefined reference to `_Unwind_Resume'|
    C:\boost\prebuilt\lib\libboost_regex-mt-s.a(cpp_regex_traits.o):cpp_regex_traits.cpp:(.eh_frame+0x4b)||undefined reference to `__gxx_personality_v0'|
    ||=== Build failed: 13 error(s), 2 warning(s) (0 minute(s), 6 second(s)) ===|


    vous avez une idée?

  18. #18
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    finalement pas besoin de regex, j'me suis débrouillé avec des string.find et des string.substr

    --------------
    1ERE ETAPE DE MON PROGRAMME TERMINEE
    --------------
    Pour le tester :
    Télécharger et installer : VirtualAudioCaptureGrabber
    Télécharger et dézipper : Mon projet
    executez _A pendant la lecture d'une musique "connue" et "de bonne qualité", au bout d'environ 80 secondes, en ouvrant le fichier 'message.txt', vous devriez retrouvez le titre et l'artiste OU unknown si la reconnaissance n'a pas fonctionnée.
    note : puisque le programme et en loop eternel (chaque 80 secondes environ, il trouve la musique jouée) pour le killer, allez dans le gestionnaire des tâches.
    si quelque chose ne va pas, s'il vous plait dite le moi.



    Pour la deuxième partie, je pense que je vais utiliser Qt, qu'en pensez vous? La 2eme étape consiste d'en faire une application dont l'icone sera dans la notification area de windows, et afficher toute les 80 secondes une bulle/étiquette juste au dessus de la notification area dans laquelle il y aura le contenu de message.txt, c'est à dire 'ARTIST - TITRE'. clic droit sur l'icone de la notification area ouvrira un menu dont la première ligne sera 'ARTIST - TITRE', la deuxième sera l'état du programme (ENREGISTREMENT ou ANALYSE) et la dernière ligne du menu 'Quitter'
    (La troisième étape sera une troisième ligne du menu 'Envoyer sur facebook' qui générera le statut 'écoute TITRE de ARTISTE'
    L'étape finale sera d'empacter tout ca (avec l'installeur de VirtualAudioCaptureGrabber.exe) et d'en faire un programme s'executant au démarage du systeme )

    Bien sûre dans la version finale, tout sera en anglais et il n'y aura pas d'étiquette répétitive, ni d'étiquette si message.txt est 'unknown'.


    Et ma re-question : Pour la deuxième partie, je pense que je vais utiliser Qt, qu'en pensez vous?

  19. #19
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 815
    Points : 218 179
    Points
    218 179
    Billets dans le blog
    117
    Par défaut
    Qt est une solution, mais qui me semble personnellement lourde pour juste avoir des notifications.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  20. #20
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Points : 119
    Points
    119
    Par défaut
    salut,
    il existe quoi de plus léger?

Discussions similaires

  1. Reconnaissance manuscrite pour site web
    Par lrinaldi dans le forum Imagerie
    Réponses: 1
    Dernier message: 20/02/2013, 11h43
  2. Logiciel de reconnaissance vocale pour remplir champs de formulaire
    Par midiweb dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 25/11/2011, 15h15
  3. Réponses: 0
    Dernier message: 06/12/2010, 19h56
  4. Réponses: 13
    Dernier message: 13/08/2010, 11h58
  5. reconnaissance vocale pour le jeu
    Par Asmod_D dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 18/09/2007, 01h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo