Spectre audio Scilab
Résolu
funbreizhou
Messages postés
89
Statut
Membre
-
Ben -
Ben -
Bonjour,
Je fais actuellement un projet tuteuré sur le traitement d'un signal sonore. Je dois traiter le signal avec scilab, représenter la FFT et le filtrer afin de garder uniquement le fondamental. Jusque là tout va bien.
Seulement j'ai un problème avec le spectre qui (à mon avis) n'est pas ce lui que je devrais trouver (je le considère à l'envers ...)! Si quelqu'un pouvait me dire si mon spectre est bon, ou si il y a une phrase à modifier dans le programme, ça serait vraiment sympa ! ça me bloque depuis maintenant 2 mois et je peux difficilement avoir de l'aide avec les professeurs ... Si jamais je n'ai pas été clair (ce que je peux comprendre ! =] ) posez vos questions ! Merci d'avance !!
Voici mon programme :
clear;
[y,fe,bits]=wavread("C:\Users\Thibault\Documents\Projet Tuteuré 2009\BANJO_HI.wav");fe,bits
playsnd(y,fe)
//Caractéristiques de départ
sig=y';
[L,C]=size(sig);
N=length(sig);
//Transformée de Fourrier du signal
spect=fft(sig,-1);
f=fe*(0:N-1)/N;
n=size(f,'*');
Te=1/fe
t=Te*(0:N-1);
Z=[spect(1:N)];
//définition du filtre du filtre passe bas, butteworth d'ordre 10
G=analpf(10,'butt',[0 0],2*%pi*1000);
GAIN=freq(G(2),G(3),%i*2*%pi*f);
G=[GAIN(1:N)];
//
//filtrage
SIGPB=G'.*spect;
sigpb=fft(SIGPB,1);
//Affichage du spectre
xset("window",2); xbasc(0); xset("font size",4);
plot2d(f,abs(Z/N))
//affichage des graphes
//N°1
xset("window",0); xbasc(0) ; xset("font size",4);
plot2d(f,abs(spect(1:n))/N)
plot2d(f,abs(G(1:n)))
xtitle("Représentation du filtre utilisé","fréquence(Hz)","amplitude (V)")
//N°2
xset("window",1); xbasc(1) ; xset("font size",4);
plot2d(f,abs(SIGPB(1:n))/n)
xtitle("Représentation du spectre filtré","fréquence (Hz)", "ampltide (V)")
//N°3
xset("window",3); xbasc(3) ; xset("font size",4);
plot2d(t,sig(1:N))
plot2d(t,sigpb,2)
xtitle("Signal + signal filtré en fonction du temps","temps (s)", "amplitude (V)")
playsnd(sigpb',fe)
Je fais actuellement un projet tuteuré sur le traitement d'un signal sonore. Je dois traiter le signal avec scilab, représenter la FFT et le filtrer afin de garder uniquement le fondamental. Jusque là tout va bien.
Seulement j'ai un problème avec le spectre qui (à mon avis) n'est pas ce lui que je devrais trouver (je le considère à l'envers ...)! Si quelqu'un pouvait me dire si mon spectre est bon, ou si il y a une phrase à modifier dans le programme, ça serait vraiment sympa ! ça me bloque depuis maintenant 2 mois et je peux difficilement avoir de l'aide avec les professeurs ... Si jamais je n'ai pas été clair (ce que je peux comprendre ! =] ) posez vos questions ! Merci d'avance !!
Voici mon programme :
clear;
[y,fe,bits]=wavread("C:\Users\Thibault\Documents\Projet Tuteuré 2009\BANJO_HI.wav");fe,bits
playsnd(y,fe)
//Caractéristiques de départ
sig=y';
[L,C]=size(sig);
N=length(sig);
//Transformée de Fourrier du signal
spect=fft(sig,-1);
f=fe*(0:N-1)/N;
n=size(f,'*');
Te=1/fe
t=Te*(0:N-1);
Z=[spect(1:N)];
//définition du filtre du filtre passe bas, butteworth d'ordre 10
G=analpf(10,'butt',[0 0],2*%pi*1000);
GAIN=freq(G(2),G(3),%i*2*%pi*f);
G=[GAIN(1:N)];
//
//filtrage
SIGPB=G'.*spect;
sigpb=fft(SIGPB,1);
//Affichage du spectre
xset("window",2); xbasc(0); xset("font size",4);
plot2d(f,abs(Z/N))
//affichage des graphes
//N°1
xset("window",0); xbasc(0) ; xset("font size",4);
plot2d(f,abs(spect(1:n))/N)
plot2d(f,abs(G(1:n)))
xtitle("Représentation du filtre utilisé","fréquence(Hz)","amplitude (V)")
//N°2
xset("window",1); xbasc(1) ; xset("font size",4);
plot2d(f,abs(SIGPB(1:n))/n)
xtitle("Représentation du spectre filtré","fréquence (Hz)", "ampltide (V)")
//N°3
xset("window",3); xbasc(3) ; xset("font size",4);
plot2d(t,sig(1:N))
plot2d(t,sigpb,2)
xtitle("Signal + signal filtré en fonction du temps","temps (s)", "amplitude (V)")
playsnd(sigpb',fe)
A voir également:
- Spectre audio Scilab
- Musique audio - Télécharger - Lecture & Playlists
- Realtek audio driver - Télécharger - Pilotes & Matériel
- Analyseur de spectre audio - Télécharger - Création musicale
- Scilab - Télécharger - Édition & Programmation
- Transcription audio en texte word gratuit - Guide
3 réponses
salut,
oui ça ressemble à ce que je dois trouver, après de là à dire que c'est ça ... j'en suis moins sûr !
j'vais rechercher sur ces forums !
merci de ton aide.
Thibault
oui ça ressemble à ce que je dois trouver, après de là à dire que c'est ça ... j'en suis moins sûr !
j'vais rechercher sur ces forums !
merci de ton aide.
Thibault
salut, je ne connais pas scilab, mais si tu mets ton fichier son et des screenshots de ton programme à dsposition (par ex. avec http://dl.free.fr/ ), j'essaierai de te dire si c'est ok ou pas.
Salut,
merci de me venir en aide !
Alors que je t'explique :
pour la première capture (http://dl.free.fr/getfile.pl?file=/GYA2o36T j'ai un spectre qui pour moi est bilatéral. je l'ai donc centré en 0, et c'est là qu'il est inversé avec un fondamental qui est à 17000 Hz (incohérent). En + les harmoniques seraient avant le fondamental ... bref ! bizarre
Pour la deuxième capture (http://dl.free.fr/getfile.pl?file=/foPUCtLd j'ai le même spectre, seulement je ne l'ai pas centré en 0. Là le résultat est cohérent puisque j'ai mon fondamental à #1100 Hz. Si ce spectre évoluait entre 0 et 11000 Hz, ça serait celui que j'attendais. Seulement à partir de 11000 Hz, je ne comprends plus rien ... je suis un peu perdu !
Alors soit :
-mon premier spectre est bon (ce qui m'étonnerait) et mon problème est résolu.
-j'ai fait une faute dans mon programme ce qui engendre cette "inversion" !
voici le son que j'analyse (http://dl.free.fr/getfile.pl?file=/0YP0W2M5
Merci d'avance.
Thibault
merci de me venir en aide !
Alors que je t'explique :
pour la première capture (http://dl.free.fr/getfile.pl?file=/GYA2o36T j'ai un spectre qui pour moi est bilatéral. je l'ai donc centré en 0, et c'est là qu'il est inversé avec un fondamental qui est à 17000 Hz (incohérent). En + les harmoniques seraient avant le fondamental ... bref ! bizarre
Pour la deuxième capture (http://dl.free.fr/getfile.pl?file=/foPUCtLd j'ai le même spectre, seulement je ne l'ai pas centré en 0. Là le résultat est cohérent puisque j'ai mon fondamental à #1100 Hz. Si ce spectre évoluait entre 0 et 11000 Hz, ça serait celui que j'attendais. Seulement à partir de 11000 Hz, je ne comprends plus rien ... je suis un peu perdu !
Alors soit :
-mon premier spectre est bon (ce qui m'étonnerait) et mon problème est résolu.
-j'ai fait une faute dans mon programme ce qui engendre cette "inversion" !
voici le son que j'analyse (http://dl.free.fr/getfile.pl?file=/0YP0W2M5
Merci d'avance.
Thibault
ton premier spectre est bon, d'après moi (je ne suis pas un expert, mais ça ressemble bien à ce que j'ai étudié un peu, j'obtiens le même spectre en regardant sur un autre programme) .
Mais attention : la fondamentale n'est pas la plus "forte", car les intensités sont différentes aussi.
Il me semble bien que l'idée c'est que tous tes "pics" sont parfaitement séparés par le même intervalle, qui est la fondamentale (puisque toutes les harmoniques sont des multiples de la fondamentale). Vérifie en "mesurant" la différence entre tes différents pics si ça ne fait pas 1100 Hz ;) (personnellement à vu de nez je dirai plutot 800 ou 900 Hz)
Vérifie éventuellement en allant voir un forum spécialisé de son et de musique.
Mais attention : la fondamentale n'est pas la plus "forte", car les intensités sont différentes aussi.
Il me semble bien que l'idée c'est que tous tes "pics" sont parfaitement séparés par le même intervalle, qui est la fondamentale (puisque toutes les harmoniques sont des multiples de la fondamentale). Vérifie en "mesurant" la différence entre tes différents pics si ça ne fait pas 1100 Hz ;) (personnellement à vu de nez je dirai plutot 800 ou 900 Hz)
Vérifie éventuellement en allant voir un forum spécialisé de son et de musique.
En fait je voyais 2 spectres puisque mon signal était échantillonné à 22 KHz ! il n'y avait donc pas de symétrie, c'était une superposition en gros des spectres. Habituellement ce genre de fichier son est échantillonné à 44 KHz ... mon programme et mes spectres étaient donc bons, c'est juste que je n'avais pas bien assimilé la notion d'échantillonnage.
Thibault