Bonjour,
En complément du topic traitant de la création du .wav monofréquence, je passe actuellement à l'étape clé de la FFT. Grace à l'aide de oiffrig , la création du fichier .wav se fait de la sorte:
Dans la varable Valeur, je sauvegarde les valeurs prises par la fonction sinus (avec f = 200Hz) sur 1 période environ.
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 import math, numarray as NA, wave, numarray as NA2 freq = 200. freqech = 44100 duree = 10. omega = 2 * math.pi * freq son = NA.arange(0., duree, 1./freqech, NA.Float64) son = NA.sin(omega * son) son *= 32768. son = son.astype(NA.Int16) wavfile = wave.open('AutreAmplitude200.wav','w') wavfile.setparams((1, 2, freqech , len(son), 'NONE', 'not compressed')) wavfile.writeframes(son.tostring()) wavfile.close() Valeurs = son[0:222]
En appliquant la fonction fft issue du module numarray, je devrais donc obtenir quelque chose me disant qu'effectivement j'ai un signal de l'ordre de 200Hz.
Or le résultat obtenu est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 from numarray import fft print fft.fft(Valeurs,450).real
La première valeur correspond à la composante continue du signal, autrement sa valeur moyenne, OK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 3.51000000e+02 3.02301824e+06 2.29319478e+05 -1.96406314e+06 -1.23762282e+04 -4.48999295e+05 -1.02429368e+04 -2.03945581e+05 -9.59045653e+03 -1.15423303e+05 -9.26517011e+03 -7.30000882e+04 -9.02794648e+03 -4.93465665e+04 -8.82407680e+03 -3.47937512e+04 -8.63322297e+03 -2.52527407e+04 -8.44808818e+03 -1.86411046e+04 -8.24596904e+03 -1.39443011e+04 -8.04285242e+03 -1.04709028e+04 -7.82704600e+03 -7.87677142e+03 -7.59881077e+03 -5.88953325e+03 -7.36427447e+03 -4.36747628e+03 -7.11766236e+03 -3.17780670e+03 ETC...
Mais Quid des autres valeurs? Amplitudes de quelles harmoniques, fréquences(cos, sin)? Pourquoi des valeurs négatives?
Si vous avez des suggestions....
Partager