Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Les Mains dans le Cambouis
Bidouille & Développement Informatique

Le pub des programmeurs

  • 1 927 réponses
  • 117 participants
  • 123 806 vues
  • 130 followers
Sujet de la discussion Le pub des programmeurs
Salut :coucou: y a des programeurs sur AF si oui vous bossez sous quoi ?
Afficher le sujet de la discussion
421
Merci pour vos réponses!!
J'ai déja commencé par rechercher "analyse temps fréquences" ce qui m'a permis (ca va vous permettre d'évaluer mon niveau dans le domaine :lol: ) déja de comprendre plus de chose.

Mon problème en fait c'est que je comprends pas (du tout) comment fonctionne une FFT. Alors pour les MFCC...
Hier(cette nuit) je suis tombé sur la page que voici http://www.dspguide.com/ch12/1.htm qui explique le fonctionnement de la FFT, et... ca ne me fait que me poser plus de question :oops:
En fait je comprends que j'ai un signal discret. Ensuite j'applique à celui-ci un pre-emphasized (déja rien que ce filtre reste assez mystérieux). Ensuite je découpe mon signal en fenètre (chacune décallé d'un certain offset a chaque fois,qui n'est pas égale à la taille de la fenètre).
A partir de laje suis totalement perdu : la fft à une taille, qui représente quelque chose... je suppose que c'est la résolution de mon spectre? mais sur la page cité plus haut, quand il détail l'algo, ils disent qu'a partir d'un signal de N éléments on obtient alors une FFT de N fréquences? (j'ais rien compris?).

Citation : apres avoir teste chaque module separement : filtrage, FFT, filtrage inverse, prediction lineaire, etc...


Voila, la je comprends pas le role de chaque phase... :oops:

En fait pour résumer ma question : ca fait quoi une FFT?

Citation : Deja, pourquoi recoder en java un truc qui existe en C ? Tu peux utiliser JNI, non ?


Il me faut du code entièrement java... de plus je suis pas sur de pouvoir utiliser du code GNU ou autre pour se projet.

Merci encore! Je ne veux pas vous embetter avec ca, juste trouver la piste qui me permetra de mieux m'en sortir. Merci!
422

Citation :
apres avoir teste chaque module separement : filtrage, FFT, filtrage inverse, prediction lineaire, etc...



Ca me parait tendu de coder un truc que tu comprends pas, quand meme... Les MFCC sont une representation frequemment utilisee en parole (reconnaissance automatique de la parole par exemple), et repose sur un model source filtre de la parole: tu fais du bruit dans la gorge,le conduit vocal (comprendre a l'interieur de ta gorge) fait office de filtre, et comme tu peux le modifier lfacilement (meme si tu t'en rend pas compte), tu peux modifier les sons qui en sortent: a, e, i, o, u. La prediction lineaire est une des phases qui modelise le conduit vocal.

Le C de MFCC veut dire cepstral, cad que tu prends ton signal, tu calcules le spectre, puis tu calcules le log, puis tu prends la FFT inverse pour retrouver en temporel. L'idee est que ton signal de parole etant un truc filtre, en spectral, filtrage = multiplication, donc avec le log, ca devient addition, et donc en esperant que ca se recouvre pas, tu as une partie du cepstre qui represente l'impulsion glottal (le bruit d'excitation), et l'autre l'enveloppe spectrale, qui permet justement de faire la difference entre a, e, i, etc...

En fait, les MFCC sont une representation optimisee des principes ci dessus.

Citation :
Il me faut du code entièrement java... de plus je suis pas sur de pouvoir utiliser du code GNU ou autre pour se projet.



On t'a donne un projet d'info bidon, c'est ca ? :ptdr: Pour la FFT, il y a fftw, qui n'est pas GPL, mais plus ou moins MIT (ie BSD) si je me souviens bien, je suis plus sur en fait.
423
Merci Gabou!

oui effectivement c'est dur d'utiliser des algos que l'on ne pige pas :)
je fais juste de l'identification vocal, pas de reconnaissance : je prends tout les vecteurs composé des coeficient cepstraux, sans respecté l'ordre, et je crée un modèle avec un GMM.
Bon je continue mes rechercher avec toutes ces informations :) J'ai déja une bien meilleur vue d'ensemble de la chose maintenant

Merci! Merci!
424
Je te conseille de prendre un livre de traitement du signal pour bien comprendre ce qu'est une transformée de fourier, puis une transformée de fourier discrète et ensuite une FFT... Si tu suis cet ordre, le rôle de chaque étape de la FFT te paraîtra plus évident.

Jul

425
J'ai trouvé ce lien: http://www.dspdimension.com/index.html?dftapied.html
Ca t'aidera peut être

Jul

426
Mais pourquoi tu dois tout coder toi meme ? Ca me parait un peu con, a moins que tu codes ca pour un taf. Parce que rien que la FFT, c'est pas trivial si tu veux implementer ca de maniere optimale, et puis tout le reste fait quand meme appel a pas mal de notion de traitement de signal.

Pour les GMM, je fais un peu de pub, mon module pyem pour python marche bien maintenant, et est relativement utilisable (comprendre peut traiter des dizaines de milliers de samples en plusieurs dizaines de dimensions en temps raisonnable, ie quelque minutes sur des machines pas trop vieilles) tant qu'on se cantonne a des modeles diagonaux:

http://svn.scipy.org/svn/scipy/trunk/Lib/sandbox/pyem/

Il y a aussi le BIC pour le clustering automatique, une implementation initiale de EM recursif, et bientot j'espere des methodes de regularisation pour les matrices de covariance.

Les figures suivantes sont toutes obtenues en une 20ne de lignes de code python :)



427
Merci pour tout ca :)
Mais justement c'est pour un (petit :oops: ) taf.
La partie GMM fonctionne (j'ais comparé avec torch pour debugger, le code le plus attroce du monde... si j'avais su j'aurais regarder le tiens gabou).

Le liens sur les fft est pas mal du tout!! J'ai toujours eu l'impression de passer à coté de quelques choses... :oops:
428

Citation :
(j'ais comparé avec torch pour debugger, le code le plus attroce du monde... si j'avais su j'aurais regarder le tiens gabou).



Tu m'etonnes, du C++ de chercheurs, c'est le pire code du monde. Meme le C++ 'normal' a cote est joli. T'aurais du regarde du cote des codes matlab pour les GMM, quand meme.

Pour les MFCC, tu peux utiliser ce code comme reference pour comparer:

https://labrosa.ee.columbia.edu/matlab/rastamat/mfccs.html

Mais si c'est pour un taf, je comprends vraiment pas l'interet de tout coder en java, surtout la FFT, c'est stupide. Il y a le module de Soras que tu peux utiliser pour de la FFT, qui est rapide pour des puissances de 2, et est utilisable dans du commercial sans cout supplementaire.
429
Pas mal Pov Gabou !

Citation :
Pour les GMM, je fais un peu de pub, mon module pyem pour python marche bien maintenant, et est relativement utilisable.


Man google -> Je veux savoir ce qu'est un GMM.

Je me souviens avoir vu un tutorial en flsah sur le site de NI, mais je ne sais plus si il faut posséder un produit de chez eux ou pas...je vérifie.

Edit : non, en fait y'a pas besoin de s'enregistrer, mais il n'explique rien de bien passionnant sur le fonctionnement de l'algorithme. Ils font la promo de labview, leur soft d'analyse, et nous explique plutot comment régler un soft procédant à une fft, que commment la réaliser.
Mais bon des fois, avoir ue vue utilisateur d'abord, c'est quand même pas mal !

http://soundcloud.com/bat-manson

430

Citation : Tu m'etonnes, du C++ de chercheurs, c'est le pire code du monde.


un condensé de ce que l'on troue dans torch ;)

float *mean_acc_i = mean_acc[i];
float *x = inputs->data;

for(julie = 0; julie < n; julie++) {
*mean_acc_i++ += *x * *x++;
}

float *mean_i = mean[i];
float *weight_acc_i = weight_acc[i];
mean_acc_i = mean_acc[i]

for(andrea = 0; andrea < n; andrea++, weight_acc_i++)
*mean++ = *mean_acc_i++ / *weight_acc_i++

:lol:

(j'ai écris n'importe quoi, seul la syntaxe sert d'exemple)