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

Caml Discussion :

Implémentation d'un algorithme de FFT.


Sujet :

Caml

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Par défaut Implémentation d'un algorithme de FFT.
    Bonjour à tous,

    Actuellement étudiant en prépa Maths Spé, je prépare un sujet de recherche à présenter aux concours, à la fin de l'année.
    J'ai voulu m'orienter vers un projet physique/informatique... En particulier, j'aimerais implémenter un algorithme pouvant calculer une transformation de Fourier à partir d'un signal audio.
    Peut-être n'ai-je pas encore conscience de ce à quoi je m'attaque, me direz-vous... En fait, j'aimerais en profiter pour analyser du point de vue mathématique différentes méthodes algorithmiques pour approximer fourièrement (!) un signal qui n'est pas défini à tout instant, de moins l'infini à plus l'infini, ce qui fait que finalement, même si mon projet Caml n'aboutit pas.
    Pour être précis, voici ma principale question :
    Y a-t-il une possibilité d'acquisition d'un signal audio par Caml ? J'entends par là : puis-je lui faire analyser le contenu d'un fichier wav, dans l'optique de lui appliquer une FFT ?
    J'ai quelques mois pour m'en charger... Et certes que quelques jours pour abandonner.

    Merci de votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    je pense qu'il n'y aura aucun soucis pour calculer une FFT, mais en revanche j'ai un doute pour l'acquisition depuis un WAV

    mieux faut utiliser une lib c pour l'import et interfacer avec OCaml
    http://anne-pacalet.developpez.com/t...-cpp-et-ocaml/
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    Tu peux bien-entendu analyser un WAV, mais uniquement si tu possèdes le format de fichier. Peut-être sur internet...

    D'un autre côté, pour avoir travaillé sur le sujet, laisse-moi te dire que la FFT n'est pas une reconstruction de la fonction sous-jacente. En fait, il faut voir la FFT comme un gros vecteur donnant certaines informations sur le signal ; mais en aucun cas, les coefficients calculés grâce à la FFT ne correspondent à de vrais coefficients de Fourier.

    En réalité, on utilise la FFT pour tirer des informations instantannées sur un certain signal, comme une mesure de l'amplitude de telle fréquence dans le signal à instant donné, et non la valeur de l'amplitude. D'ailleurs, il existe plusieurs définitions de FFT, aucune ne donnant le même résultat... et pour cause, elles sont toutes définies à une mesure près. Passer de l'une à l'autre revient à passer d'une mesure à une autre.

    Ca c'est pour le côté théorique.

    Pour le côté pratique... il faut savoir que :

    1- 99% des infos sur internet sont préparées par des physiciens... et ça, c'est pas rien de le dire...

    2- qu'il s'agit d'un sujet relativement bateau... donc il faudra vraiment que tu apportes un regard personnel pour convaincre

    3- la FFT, tout le monde croit maîtriser le sujet...

    4- tu perdras un temps fou à mouliner des infos de qualité ultra-médiocre, et les bons papiers sur le sujet ne sont vraiment pas légion

    5- il existe une pléthore d'algorithmes, mais en réalité seulement quelques uns qui soient vraiment utilisables, et leur implantation n'est pas gagnée d'avance, même si elle n'est pas insurmontable. En clair, il te faudra programmer beaucoup mieux que naïvement.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Par défaut
    D'abord un grand merci pour votre réactivité !
    En fait, ce que je voudrais vraiment faire, ce serait étudier différents types d'analyse spectrale et leur application sur un domaine particulier : la reconnaissance de notes... Par exemple, je sais qu'une foultitude de logiciels gratuits sur Internet font office d'accordeur de Guitare en passant une FFT au signal reçu par le micro. Le principe n'est pas d'une grande difficulté théorique : il ne s'agit que de déterminer la fréquence qui a la plus grande amplitude. Mon idée était d'aborder le problème en mettant en évidence certains problèmes, ou plutôt certaines limitations de la FFT, pour ensuite dériver vers un domaine assez récent en analyse spectrale, et qu'on ne voit pas du tout en prépa, la transformée en ondelettes...
    Grand InOCamlWeTrust, je n'ai pas compris ta première phrase : "posséder" un format de fichier ? Autrement, y a-t-il une autre forme de signal que je pourrais acquérir plus facilement ?
    Autrement, gorgonite me propose de passer par C et OCaml (Ça tombe bien, il existe déjà plein de programmes adaptés en C.), mais je n'y connais rien... À la limite, peut-être devrais-je essayer de travailler sous OCaml (Et je connais ton point de vue là dessus, modéro ^^), mais je crains de m'y perdre rapidement...
    Encore merci.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Par défaut
    Si c'est la question, utiliser OCaml au lieu de Caml light sera certainement une bonne idée, et comme c'est facile de passer de l'un à l'autre, tu ne devrais pas t'en priver.

    gorgonite a suggéré une interface C pour utiliser une lib de lecture des .wav. Je pense que tu n'en as en fait pas besoin, il existe une libsndfile-ocaml qui devrait répondre à tes besoins : http://www.mega-nerd.com/libsndfile/Ocaml/Sndfile.html.

    PS : par "posséder le format", il entend que tu dois avoir accès aux spécifications du format, pour savoir comment les informations y sont stockées.

  6. #6
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    Citation Envoyé par Mp-X. Voir le message
    D'abord un grand merci pour votre réactivité !
    En fait, ce que je voudrais vraiment faire, ce serait étudier différents types d'analyse spectrale et leur application sur un domaine particulier : la reconnaissance de notes... Par exemple, je sais qu'une foultitude de logiciels gratuits sur Internet font office d'accordeur de Guitare en passant une FFT au signal reçu par le micro. Le principe n'est pas d'une grande difficulté théorique : il ne s'agit que de déterminer la fréquence qui a la plus grande amplitude. Mon idée était d'aborder le problème en mettant en évidence certains problèmes, ou plutôt certaines limitations de la FFT, pour ensuite dériver vers un domaine assez récent en analyse spectrale, et qu'on ne voit pas du tout en prépa, la transformée en ondelettes...
    Grand InOCamlWeTrust, je n'ai pas compris ta première phrase : "posséder" un format de fichier ? Autrement, y a-t-il une autre forme de signal que je pourrais acquérir plus facilement ?
    Autrement, gorgonite me propose de passer par C et OCaml (Ça tombe bien, il existe déjà plein de programmes adaptés en C.), mais je n'y connais rien... À la limite, peut-être devrais-je essayer de travailler sous OCaml (Et je connais ton point de vue là dessus, modéro ^^), mais je crains de m'y perdre rapidement...
    Encore merci.
    En effet, pour ce que tu veux faire, il n'y a pas de problèmes.

    Le seul truc, c'est de savoir lire les .wav, mais je ne suis pas sûr que ce soit compliqué.

    Pour info, le "son", ça n'existe pas en informatique : il n'y a que des suites d'octets. Point. Pour faire ce que tu veux, tu peux acquérir ton "son" avec le logiciel de ton choix, et ensuite l'analyser avec OCaml.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Par défaut
    Merci pour vos réponses complètes... Je vais donc devoir essayer de comprendre la structure d'un fichier wav, mais je m'y attendais déjà.
    Au boulot, maintenant ^^
    On va faire joujou avec OCaml...

Discussions similaires

  1. Implémentation de l'algorithme ESPRIT
    Par elhaoud dans le forum Signal
    Réponses: 5
    Dernier message: 19/05/2008, 20h45
  2. Implémentation de l'algorithme de kmeans
    Par kevin2008 dans le forum C++
    Réponses: 0
    Dernier message: 18/04/2008, 11h29
  3. Implémentation d'un algorithme foireuse
    Par khazna dans le forum C++
    Réponses: 15
    Dernier message: 05/03/2008, 14h29
  4. Implémentation de l'algorithme FCM en C
    Par hoolaka dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 11/02/2008, 22h57
  5. Réponses: 1
    Dernier message: 07/03/2007, 09h28

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