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

Python Discussion :

Mini projet traitement du signal sur Python


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 5
    Par défaut Mini projet traitement du signal sur Python
    Bonjour,

    Dans le cadre d'un mini-projet scientifique (TIPE pour CPGE), je me suis intéressé aux différentes méthodes de reconnaissance musicale comme Shazam. J'aimerais bien "concevoir" quelques petits programmes sur Python, avec mes quelques notions, me permettant d'illustrer l'exposé. Je vais donc tâcher de vous expliquer sommairement le principe. (Je m'appuie essentiellement sur https://360d471c148c379e7f0425504027...PhD_thesis.pdf)

    La reconnaissance d'un morceau de musique à l'aide de Shazam se fait essentiellement à travers l'étude du spectre de l'échantillon source que l'on compare à une base de donnée.
    Pour résumer la méthode : On part d'un sonagramme (diagramme en 3D affichant l'intensité et la fréquence du signal en fonction du temps) qui caractérise un signal donné, puis on "découpe" ce spectrogramme en carré comme ci dessus (figure b). Enfin, dans chaque carré, on relève la valeur maximale du signal dans ce domaine précis pour constituer une sorte d'empreinte audio propre à chaque échantillon, que l'on pourra plus tard comparer aux empreintes dans la base de donnée. http://prntscr.com/9vxxmf

    Si j'ai bien compris (corrigez moi si je me trompe), cette comparaison d'empreinte permet à la fois une grosse économie de ressources de stockage et une complexité, au sens informatique, correcte (moins de truc à comparer, et fichier moins lourd à stocker dans la base de donnée), mais permet également une souplesse dans la reconnaissance du signal (par exemple, la présence de bruit qui peut potentiellement entravé la reconnaissance peut ne pas être gênante si le signal n'est pas trop perturbé. Si on se mettait à comparer le spectrogramme en entier, il faudrait un échantillon qui correspondent parfaitement à un fichier de la base de donnée).

    Pour ma part, j'ai quelques idées de programme mais je n'ai ni les compétences, ni la documentation adéquate, pour savoir si c'est réalisable essentiellement sur Python. Les voici:
    -Programme qui prendrait en entrée un échantillon audio sous forme mp3 ou autre et qui renverrait l'empreinte audio (sous forme d'une image ). Pour ça, il faudra sûrement dans un premier temps obtenir le sonagramme du signal, et je sais pas si c'est possible de faire quelque chose avec la transformée de Fourrier directement sur Python. Si c'est trop complexe, je peux toujours travailler directement sur le spectrogramme d'Audacity par exemple. Pour le reste, je pense que c’est réalisable à partir d'outils Python (découper des domaines carrés d'études, puis relever le point maximal dans chacun de ces domaines et tout flanquer dans un tableau). Le plus gros mur que je vois c'est que le spectrogramme change au cours du temps, donc j'ai pas trop d'idée sur comment appréhender la chose, et j'accepte volontiers toutes pistes ou idées de votre part.
    -Programme qui permet à partir d'un fichier audio (où bien d'un sonagramme) de rentrer son empreinte audio dans une base de donnée, ou bien de la comparer avec les données présents dans la database. Malheureusement mes connaissances en MySQL sont vraiment très limités et je ne sais pas trop par où commencer.
    Si jamais il y'a des connaisseurs en traitement du signal audio axé info et qui auraient le temps de m’éclaircir sur certains points noirs, je leurs en serais très reconnaissant. Je suis également ouvert à toutes suggestions.

    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Tout est faisable avec python sans doute mais le projet me semble bien ambitieux pour un sujet de TIPE.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Salut,

    Citation Envoyé par shazam Voir le message
    Pour ma part, j'ai quelques idées de programme mais je n'ai ni les compétences, ni la documentation adéquate, pour savoir si c'est réalisable essentiellement sur Python.
    Avec Python, on peut tout faire d'autant qu'on peut se faire aider par des bibliothèques écrites en C/C++. Mais savoir cela ne va sans doute pas vous avancer beaucoup car pas grand monde fera le boulot à votre place.
    Le plus compliqué est de découper le travail à réaliser en unités logiques (des rondelles). C'est un travail de conception qui n'a rien à voir avec le codage en Python. Si on peut vous aider ce sera plutôt dans la réalisation des détails de certaines rondelles:
    - comment réaliser telle fonctionnalité en Python -

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 5
    Par défaut
    Citation Envoyé par marco056 Voir le message
    Tout est faisable avec python sans doute mais le projet me semble bien ambitieux pour un sujet de TIPE.
    Oui en fait c'est ce dont je redoutais, si le programme en entier n'est pas tenable sur une page A4, ça va pas être possible

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Une petite dizaine de pages, peut-être...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 5
    Par défaut
    Bonsoir,

    Après de plus amples réflexions, j'ai décidé de ne pas faire quelque chose d'aussi ambitieux qu'au départ, mais quelque chose de relativement simple (le programme doit tenir sur une page A4, donc ça limite bien les objectifs). En fait, je compte juste choper un sonagramme directement à partir de Sonic Visualiser (j'ai testé, ça rend plutôt bien pour pouvoir faire des relevés http://prntscr.com/9ztvwq ) et de travailler sur Python à partir de l'image. Mon but étant de construire une grille de domaine (découpe du temps et de la fréquence) pour pouvoir relever le maximum d'intensité dans chaque domaine sachant que l'intensité est représentée une gamme de couleur. Mais pour pouvoir faire ça il faut que je puisse comparer 2 couleurs entre eux. Savez vous comment ça marche sur Python ? Comment un pixel de couleur est caractérisé ? J'imagine que chaque couleur est référencée avec un code couleur; est-ce que par exemple 2 couleurs quasiment identiques qui diffèrent très légèrement par la teinte aura des numéro de codes proches ? Comment puis-je obtenir le code couleur d'un pixel donné ?

    Mais sinon, (vous allez rire) je n'arrive pas à commencer à écrire mon programme sur Python chez moi sur mon PC Windows faute d'avoir des modules nécessaires (au lycée les modules etc ..sont tous déjà installés avec des machines sous linux). Là en l'occurrence j'aurais besoin de matplotlib, mais j'ai aucune idée de comment ça marche, qu'est-ce que je dois installer, quelle version, si ma version de python est compatible avec le module etc ... Pourriez vous me conseiller une version de python qui ne me demande pas de télécharger 10 fichiers et de faire des manips fastidieuses pour un débutant comme moi ?

  7. #7
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Tu installes spyder et tu auras tout.
    Installe cela à la racine (C)
    https://pypi.python.org/pypi/spyder

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 5
    Par défaut
    Citation Envoyé par marco056 Voir le message
    Tu installes spyder et tu auras tout.
    Installe cela à la racine (C)
    https://pypi.python.org/pypi/spyder
    Qu'entendez-vous par installer ? Une extraction ? Dans quel dossier ?
    Je l'ai extrait dans le dossier Python mais ça ne marche toujours pas. J'ai comme message d'erreur " ImportError: cannot import name 'pyplot' "

  9. #9
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Désolé, le lien n'était pas bon.
    Voici un lien correct :
    http://sourceforge.net/projects/winp...n_3.4/3.4.3.6/
    QT5 est en principe correct.
    32 ou 64 bit suivant la bécane mais 64 est en principe valide sur les machines récentes.

Discussions similaires

  1. [Python 3.X] Importer des données .csv pour du traitement de signal sous Python
    Par SleepProgramRepeat dans le forum Général Python
    Réponses: 4
    Dernier message: 21/01/2015, 17h52
  2. Traitement de signal sur C++
    Par mokhfi dans le forum C++
    Réponses: 4
    Dernier message: 25/03/2011, 10h57
  3. aide sur un mini projet
    Par thedon dans le forum C++
    Réponses: 0
    Dernier message: 03/01/2009, 01h42
  4. demande propositions mini-projet sur les réseau
    Par imadin dans le forum Général Java
    Réponses: 3
    Dernier message: 27/02/2008, 07h56
  5. Traitement assez compliqué sur un signal
    Par Gui13 dans le forum LabVIEW
    Réponses: 3
    Dernier message: 27/06/2007, 09h30

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