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 790 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
401

Citation :
'ai pas compris ça par contre. 40 dB...humm. En me présentant un grand nombre, tu me signifie qu'il y a un grand écart entre les deux puissances que tu compares.



A chaque etape du MP, tu prends l'atome qui maximise la correlation avec le signal de depart, puis tu recommences sur le residuel. Donc les 40 dB, ca veut dire que le residual est 40 dB plus faible que le signal original, avec seulement 10 atomes.
402
Quand on n'est pas de la partie, on ne comprend rien du tout... :mrg:
403

Citation : A chaque etape du MP, tu prends l'atome qui maximise la correlation avec le signal de depart, puis tu recommences sur le residuel. Donc les 40 dB, ca veut dire que le residual est 40 dB plus faible que le signal original, avec seulement 10 atomes.

Oui voila, c'est exactement ce que ça veut dire.

Au départ de l'algo, ton résiduel est le signal de départ. Puis l'algo grignotte le signal et t'as un principe de vases communicants entre l'énergie du résiduel et l'énergie des atomes. A l'étape n, tu as n atomes et les n corrélations associées d'une part, et un résiduel Rn d'autre part. La décomposition est terminée lorsque ton résiduel est du silence (plus exactement, du silence après reconversion en échantillons entiers, vu que tu travailles en flottants).

A chaque étape, tu peux arrêter l'algo et t'amuser à écouter le signal constitué de la somme des atomes trouvés pondérée par les corrélations, ou bien à écouter le résiduel.

Je me rends compte que j'ai pas été très clair dans mon exemple de compression. L'index n'est pas une position relative à l'énumération de tous les signaux possibles, ce qui n'aurait pas d'intérêt. C'est un nuplet de paramètres qui décrivent la structure du dictionnaire et le résultat de la poursuite sur ce dictionnaire. Il ne s'agit pas non plus de stocker tous les signaux possibles.

Autre exemple:
1 minute de signal mono 16 bits 44.1kHz => 5.04MB, soit 4.2e7 bits

On suppose que le dictionnaire est constitué de sinusoides tronquées. On peut paramétrer ce dictionnaire avec les grandeurs:
. fréquence -> flottant 64 bits
. position du début du support -> entier 32 bits
. phase en vigueur en début du support -> flottant 64 bits
. longueur du support -> entier 32 bits
(en comptant large pour le stockage)

et de plus:
. corrélation -> flottant 64 bits

La connaissance de ce quintuplet identifie de manière unique une sinusoide tronquée parmi toutes celles possibles.

Boîte noire de synthèse:
quintuplet -> signal : finger in ze nose

Boîte noire d'analyse:
sinusoide tronquée inconnue de 1 minute -> quintuplet : MP

Ce que je voulais dire c'est que l'ensemble de ces deux boîtes noires forme un codec intéressant, vu que 64+32+64+32+64 = 256 << 4.2e7 !
Et sans pertes :mrg:

Bon évidemment le dictionnaire est gigantesque (tout en étant une infime partie du dictionnaire exhaustif) et on peut difficilement utiliser ce codec pour autre chose que.. des sinusoides tronquées :mdr:

En espérant avoir été plus clair..
A man, a plan, a canal : Panama
404

Citation :
A chaque etape du MP, tu prends l'atome qui maximise la correlation avec le signal de depart, puis tu recommences sur le residuel. Donc les 40 dB, ca veut dire que le residual est 40 dB plus faible que le signal original, avec seulement 10 atomes.



+

Citation :
Bon évidemment le dictionnaire est gigantesque (tout en étant une infime partie du dictionnaire exhaustif) et on peut difficilement utiliser ce codec pour autre chose que.. des sinusoides tronquées

En espérant avoir été plus clair..



=
J'ai compris ! Merci !
Je vais regarder cette fameuse fonction FoF pour le coup.


Par contre pour l'intérêt en compression, le seul réel + que peut apporter une décomposition sur un ensemble générateur redondant est pour une compression avec perte mais sur un dico adapté.
Cela me fait un peu penser aux algo type Huffman in-line où on édite le dictionnaire au fur et à mesure que l'on compresse : on se rajoute les termes intéressants dans notre dico au cours de l'analyse.

Parce que l'analyse via MP, semble avoir des avantages (le côté glouton en est un, selon moi) mais je n'ai pas encore bien en tête comment exploiter ce type de décomposition...

Il faut que je regarde de près comment on détermine dans le Matching pursuit quel est l'index de la prochaine fonction, car cela présuppose une structure interne du dico. Je sens une orthogonalité ou une pseudo orthogonalité...
Car si la condition qui structure le dico est faible, y'a moyen d'imaginer en analyse synthèse des choses rigolotes !

Je prends un dictionnaire avec le MP de fonctions exotiques, type les sons de base d'une 808, et que je fais tourner l'algo MP sur une boucle de...808, je devrais obtenir des résultats en synthèse non ?

http://soundcloud.com/bat-manson

405

Citation : Cela me fait un peu penser aux algo type Huffman in-line où on édite le dictionnaire au fur et à mesure que l'on compresse : on se rajoute les termes intéressants dans notre dico au cours de l'analyse.

Ah bon? Ce que tu décris me fait penser à Lempel-Ziv, mais ça fait longtemps que j'ai pas touché à des algos de compression, je suis un peu à côté de la plaque. Si j'ai évoqué la compression dans le premier exemple, c'est juste pour faire le rapprochement entre compression efficace et parcimonie de poursuite. Et le 2ème exemple n'était là que pour clarifier, vu que de toute façon faire de la compression de cette manière ne sera possible que dans très très longtemps, manifestement.

Attention car dans le cas de MP le dictionnaire est absolument statique. Ce que tu suggères, rendre le dico adaptatif, est intéressant mais c'est à un niveau supérieur dans l'adaptabilité, et j'ai encore jamais vu ça. La seule chose qui s'en rapproche, c'est l'idée qui consiste à laisser tomber le dictionnaire de départ en cours de route et de basculer sur un dictionnaire d'ondelettes. Ceci se justifie à cause d'un gros désagrément de MP: le comportement asymptotique. Faut voir que lorsque MP a fini de grignoter toutes les structures temps/fréquence bien localisées, il s'attaque au seuil de bruit et ça lui donne beaucoup de mal, c'est comme s'il avait de moins en moins d'appétit. Passer à un dictionnaire d'ondelette à ce moment-là est une bonne idée mais:
- on ne sait pas détecter de manière robuste le moment où le résiduel devient du bruit
- l'idée est bonne si le but est la parcimonie. En revanche si le but est la représentation temps/fréquence c'est pas terrible parce que la localisation temps/fréquence d'une ondelette est pourrie.


Citation : Je vais regarder cette fameuse fonction FoF pour le coup.

Je crois qu'un des deux F signifie 'formant' parce que historiquement on a trouvé que c'était un bon modèle pour des enveloppes de phonèmes. Pov Gabou devrait pouvoir en dire plus.. Il y a deux paramètres qui permettent d'avoir des profils ADSR variés. Pour le dictionnaire chirp/FoF dont j'ai parlé, les deux paramètres étaient fixes. J'aurais bien aimé faire rentrer ces paramètres dans le dictionnaire mais il était déja énorme (2 paramètres de fréquence au lieu d'un seul) et rajouter ne serait-ce qu'un degré de liberté à un dictionnaire est catastrophique pour les perfs :(((

Citation : Parce que l'analyse via MP, semble avoir des avantages (le côté glouton en est un, selon moi) mais je n'ai pas encore bien en tête comment exploiter

Il y a un truc qui me plaît particulièrement avec les décompositions du genre MP, c'est que tu arrives à une description 100% déterministe de ton signal, au lieu de la description déterministe + stochastique habituelle..

Citation : Il faut que je regarde de près comment on détermine dans le Matching pursuit quel est l'index de la prochaine fonction, car cela présuppose une structure interne du dico. Je sens une orthogonalité ou une pseudo orthogonalité...

Ben ton dictionnaire couvre tout le plan temps/fréquence, avec des supports de tailles variées (puisque c'est le but). Donc fatalement oui, tu as des orthogonalités. Evidemment c'est pas facile à imaginer en dimension N.. Une condition suffisante d'orthogonalité, c'est que deux atomes ont des supports temporels (ou fréquentiels) disjoints. Il existe la notion d'incohérence de dictionnaire, qu'on peut calculer en faisant un genre de bilan des orthogonalités croisées, et prédire ainsi que le dictionnaire aura de l'appétit. Je crois que ça s'appelle la fonction de Babel, je vérifierai.

Citation : Je prends un dictionnaire avec le MP de fonctions exotiques, type les sons de base d'une 808, et que je fais tourner l'algo MP sur une boucle de...808, je devrais obtenir des résultats en synthèse non ?

J'ai du mal à comprendre la manip que tu imagines. Pourrais-tu préciser?
A man, a plan, a canal : Panama
406
Sur la manip étrange que j'imagine...si on fait tourner un MP avec comme limite un certain nombres d'itération,
on devrait avec un jeu de fonctions exotique comme dico (qui n'en est pas vraiment un) obtenir la projection du signal observé sur l'espace généré par ces fonctions exotiques...c'est le cractère ACP qui fait cela, mais sur du glouton...

Je prends l'espace des sons générés par translation dilatation des sons d'une 808, je pète dans un tuyau, et je regarde comment sonne un pet dans un tuyau composé à l'aide de sons de 808.
En MP ça fait : je prends comme dico les sons de 808, je pète dans un tuyau et je lance mon MP dessus.
ça doit être cool non ?

http://soundcloud.com/bat-manson

407
Rrhhhhhô la faute !

Citation :
certain nombreS

http://soundcloud.com/bat-manson

408
Ah oui j'ai pigé :mdr:

Ben si tu te fixes comme limite une vingtaine d'atomes, ça risque de faire un peu batteur sous acide.
Et par contre si tu choisis de laisser tourner l'algo suffisamment longtemps, t'auras un genre de morphing entre le son de ton.. sample et le son de 10 batteurs sous acide.

Citation : ça doit être cool non ?

Faut voir :ptdr:

Fais gaffe que Roland te fasse pas un procès :mrg:
A man, a plan, a canal : Panama
409
En fait, pour faire ce genre de choses, vaut mieux ptet regarder tout ce qui est concatenative synthesis.
J'ai pas trop regardé mais cela semble être cette idée d'analyse.
Comme ça, je vais pouvoir péter dans des tuyaux pendant un an !
Enfin bref je dois voir mon directeur de recherche demain. Il risque de me dire un truc du genre : "ton papier sur l'audio et le web est pas mal, mais il faut que tu le creuses plus. Ce serait bien si tu te sortais les doigts du cul et que tu te mettais sur ce sujet pour ta thesis"...

En synthèse, il reste de toute manière du boulot. Quand on voit Brass d'Arturia, on se dit : "ouf, il reste du boulot !"
D'ailleurs c'est basé sur des travaux de l'IRCAM soit dit en passant, non ?

http://soundcloud.com/bat-manson

410

Citation :
Parce que l'analyse via MP, semble avoir des avantages (le côté glouton en est un, selon moi) mais je n'ai pas encore bien en tête comment exploiter ce type de décomposition...



Un exemple c'est la detection de frequence fondamental dans un signal polyphonique: le premier article sur le MP harmonique de Gribonval donne un exemple simple d'application pour ce type de taches. Un projet peut justement etre de faire un algo un peu plus interessant.

Pour le time stretch, l'interet du MP est evident si ton dictionnaire contient que des atome faciles a etendre/compresser temporellement tout en gardant la meme frequence (time stretch par vocoder de phase utilise le meme modele sous jacent, finalement: faire du time stretch avec le vocoder de phase suppose que dans une fenetre donnee, dans un canal donne, tu n'as qu'une sinusoide).