Se connecter
Se connecter

ou
Créer un compte

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

Sujet Développement audio - détection d'enveloppe!

  • 9 réponses
  • 5 participants
  • 3 588 vues
  • 5 followers
Sujet de la discussion Développement audio - détection d'enveloppe!
Bonjour à tous, cherchant une rubrique de ce forum se rapprochant de l'informatique, je me suis dit que "les mains dans le cambouis" était ce qui s'en rapprochait le plus, sinon, dites moi ou aller!!!


Je developpe pour le moment des plugins audio en c++ et je recherche à faire de la transformation de voix ( je vais pas faire trop technique, j explique en gros)

C'est à dire que le spectre de mon signal étant connu ( un vecteur de float ) j aimerais en retrouver l enveloppe comme sur ce dessin:

DESSIN A TITRE INFORMATIF TROUVE SUR LE NET, IL EST JUSTE LA POUR SE DONNER UNE IDEE, CE N'EST EFFECTIVEMENT PAS UNE FFT MAIS CA Y RESSEMBLE



Hors sujet : Partie technique
En gros le but est découper un signal de paroles en petits échantillons, faire leur FFT, déformer l'enveloppe sans toucher au pitch - d'ou l'intéret de retrouver l'enveloppe, de la déformer, en déplaçant légerement les formants et de remettre le signal avec le même pitch à l'intérieur -
et ensuite recombiner ces morceaux en ayant bien sur fait la FFT inverse!



Pourriez vous m'indiquer ou je pourrais trouver des développeurs informaticiens du domaine de l'audio?

ou quelqu'un sur le forum saurait-il m'aider?


Je vous en remercie[HS]
2

Hors sujet : Ce que tu montres là ressemble d'avantage à une série d'amplitudes qu'à un spectre. Tu n'es qu'à une FFT près du spectre ;)



Pour calculer ton enveloppe, ce qui se fait classiquement est de calculer le RMS sur une "petite" fenêtre coulissante d'échantillons. Il existe d'autres méthodes de suivi d'enveloppe aussi, mais elles se basent souvent sur le RMS comme première approche. C'est surement un bon point de départ.

Voilou !

++
V.
3
Ce que tu cherches peut se faire par démodulation par détection d'enveloppe. Tu élève ton signal au carré, et tu le filtre passe bas.
4
Un grand merci à vous Canari-Bay et Vanilia! La solution de Canari-bay m'a l'air la plus efficace à mettre en oeuvre, et j aurais quelques questions sur le RMS de Vanilia:

Hors sujet :

Citation : Ce que tu montres là ressemble d'avantage à une série d'amplitudes qu'à un spectre. Tu n'es qu'à une FFT près du spectre



oui, effectivement, le dessin est juste mis à titre d'exemple, mais c'est la seule illustration claire que j'aie trouvé! ( il se peut que certains développeurs qui pourraient m'aider ne connaissent pas la FFT mais bien la démodulation donc, j ai préféré faire simple



Citation :
ce qui se fait classiquement est de calculer le RMS sur une "petite" fenêtre coulissante d'échantillons. Il existe d'autres méthodes de suivi d'enveloppe aussi


Qu'entends tu par RMS? les méthodes de suivi d'enveloppe sont-elles disponibles gratuitement? existe-t-il des projets tout faits me permettant de retrouver cela?


Citation : Ce que tu cherches peut se faire par démodulation par détection d'enveloppe. Tu élève ton signal au carré, et tu le filtre passe bas.


Voila exactement ce qu'il me faut!!! Mais l'outil de filtrage passe bas est-il disponible quelquepart? Je ne connais pas encore les sites de programmation c++ :oops:

Comme pour vanilia, ce filtrage est-il disponible quelquepart gratuitement? (pas besoin d'élever au carré car contrairement à mon exemple le "seuil" en vert est à zéro! - cf premier commentaire Hors-Sujet) ces outils de développement sont ils en distribution gratuite?


Je pourrais effectivement le faire moi-même vu que j'ai les outils de fft disponibles dans mon projet, mais si cela a déjà été bien fait avec des améliorations auxquelles je n'aurais pas pensées, ce serait top!
5
Je suis désolé, mea culpa, mais j essayais d expliquer ca simplement pour les informaticiens purs qui ne connaitraient peut etre pas la FFT! j 'ai donc pris l'image la plus representative que j'ai trouvé et elle ne collait effectivement pas!


J ai donc écrit au départ de grosses boulettes dont je suis moi-même choque apres relecture!!!! Je suis completement désolé et te présente mes excuses!
Je sortais d'un beau paquet d'heures devant la programmation et j'étais completement à la masse, j ai écrit le message un peu vite!

effectivement, j'ai fait le gros boulet la dessus et ne saurais jamais comment m'excuser assez pour la perte de temps occasionnée
6
Tu développes ça comment ? Avec quelles librairies ?

Pour ce genre d'applications, c'est bien de bosser avec Matlab par exemple, comme ça on a pas à gérer toute la partie audio, et ça permet de disposer d'outils en tout genre déjà programmés (matrices, FFT, affichage de formes d'ondes, design de filtres RIF et RII...).

Sinon, je te conseille d'utiliser la librairie FFTReal de Laurent de Soras si tu comptes faire ça en C++, et de lire la partie sur les filtres du bouquin en PDF gratuit de www.dspguide.com. T'auras des bonnes bases avec tout ça :clin:

Sans oublier les exemples de code gratuits de musicdsp.org, je pense qu'il y a quelques lignes de code pour des détecteurs d'enveloppe. Enfin en gros le principe est toujours le même, élever le signal au carré puis filtrer. Après ça dépend de ce que tu veux faire, du type d'enveloppe (peak ou rms), si tu veux gérer l'attack/release...

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape

7
Les bibliotheques FFT, fenetrâge etc... Proviennent de mon université ou je rédige mon mémoire, elles sont certainement assez differentes ou "personnalisée" à notre utilisation.



Effectivement, Matlab est un outil terrible et le travail complet a été effectué en quelques heures. Malheureusement pour mon mémoire, je dois en réaliser un plugin VST d'où la programmation en c++ qui n'est pas du tout mon domaine et demande beaucoup plus de travail qua matlab quand on ne s'y connait pas du tout!


Je vais donc regarder aux librairies que tu me conseilles ( la fft ne me pose pas de problemes du tout! c ets juste l enveloppe comme je dis) et voir si ca contient la détection d'enveloppe et comporte mon bonheur!

un grand merci à toi!





Citation : Sans oublier les exemples de code gratuits de musicdsp.org, je pense qu'il y a quelques lignes de code pour des détecteurs d'enveloppe. Enfin en gros le principe est toujours le même, élever le signal au carré puis filtrer. Après ça dépend de ce que tu veux faire, du type d'enveloppe (peak ou rms), si tu veux gérer l'attack/release...



Pas besoin d'élever au carré pour moi car le signal varie entre [0] et [valeur] il me faut donc juste la partie filtrage (note qu avec la fft que je sais faire, je pourrais le faire moi même mais ca me parait tres barbare)

Maintenant apres tests, je vous dirai si j ai besoin de réadapter le signal à l'oreille ou pas avec le rms!




encore merci à tous pour ces réponses rapides
8
Autre source d'information qui pourrait t'être utile, il y a une suite de plug-ins développés sous Linux (pas du VST désolé) qui est open source, tu peux donc voir comment c'est foutu à l'intérieur, ça s'appelle CAPS, tu tapes CAPS + LADSPA dans Google et tu tombes rapidement dessus. Je me souviens y avoir vu un détecteur d'enveloppe :clin:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape

9
10
Merci les gars, c ets bien gentil.. mais le mémoire impliqu ede faire du vst et le projet est quasi fini...

Bah j'ai trouvé pour l enveloppe, je prends simplement la moyenne sur x points et x ets un parametre du plugin.. ca donne des effets assez interessants!