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

Calcul scientifique Python Discussion :

Utilisation transformée de Fourier rapide (FFT)


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Utilisation transformée de Fourier rapide (FFT)
    Bonjour,

    J'ai pu voir sur votre forum des sujets en lien avec ma question mais je préfère ouvrir un nouveau sujet pour plus de clarté. Après pas mal de recherches sur le web je n'ai pas trouvé de solutions à mon problème.

    Je voudrais réaliser la FFT d'un fichier wav, de façon à avoir son spectre de fréquence, cependant je ne maîtrise pas assez le concept mathématiques et Python pour le faire moi même. Ainsi pour débuter j'ai trouvé sur internet ce code https://sites.google.com/site/haskel...on-numpy-scipy, cependant quand je le fais tourner sur mes fichiers wav j'ai des erreurs de ce style :

    Traceback (most recent call last):
    File "<tmp 2>", line 24, in <module>
    y=data[:,1]
    IndexError: too many indices

    Je pense que cela peut être du au fait que mon fichier ne soit pas au bon format. J'ai donc essayé de modifié la fréquence d’échantillonnage sur Audacity mais sans succès. Pour information le fichier a les caractéristiques suivantes: Mono, 44100Hz, 32 bits flottant.

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Mes souvenir de fft sont trop loin pour que je puisse beaucoup t'aider. Cependant, par curiosité, j'avais fait il y a quelques temps un petit code .
    Voilà mon petit code de test. Il charge un fichier wav, et affiche son spectre dans une fenêtre :

    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
    19
    20
    21
    import matplotlib.pyplot as plt
    from scipy.io import wavfile
    from scipy.fftpack import rfft
     
    fs, data = wavfile.read('ringin.wav')  # chargement du fichier wav.
    # fs est la fréquence d'échantillonnage / s => 44100 points/seconde
     
    print(fs, len(data))  # 44100 49728
     
    a = data.T[0]  # 1er canal. type de data et a: class 'numpy.ndarray'
     
    print(len(a))
     
    b = [(elem / (2 ** 8)) * 2 - 1 for elem in a]  # changement d'échelle des valeurs
     
    c = rfft(b)  # liste de complexes. type de c: class 'numpy.complex128'
     
    d = len(c) // 2  # on n'a besoin que de la moitié de la liste fft
     
    plt.plot(abs(c[0:(d - 1)]), 'r')  # affichage
    plt.show()
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ton aide mais j'ai encore une erreur :

    Traceback (most recent call last):
    File "<tmp 3>", line 12, in <module>
    print(len(a))
    TypeError: object of type 'numpy.int16' has no len()


    Je ne vois pas trop comment la résoudre.

    EDIT: c'est bon j'ai trouvé un autre fichier son qui fonctionne. Cependant il n'y a pas d'échelle en abscisse, l'unité utilisée est-elle arbitraire ?

Discussions similaires

  1. Utilisation de la Transformée de Fourier Rapide
    Par TigZox dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 24/04/2012, 12h32
  2. La Transformée de Fourier Rapide
    Par babakaber dans le forum Signal
    Réponses: 3
    Dernier message: 01/02/2012, 17h42
  3. Réponses: 2
    Dernier message: 14/10/2011, 14h17
  4. La transformée de Fourier rapide (FFT)
    Par driss80 dans le forum Fortran
    Réponses: 5
    Dernier message: 25/02/2008, 13h43
  5. Transformée de fourier rapide
    Par Aida dans le forum Traitement du signal
    Réponses: 23
    Dernier message: 03/01/2006, 15h14

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