Développement audio - détection d'enveloppe!
- 9 réponses
- 5 participants
- 3 603 vues
- 5 followers
profete162
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]
melinedivine
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.
Anonyme
profete162
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++
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!
profete162
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
Wolfen
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
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 | Soundcloud
profete162
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
Wolfen
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
Pov Gabou
http://clam.iua.upf.edu/
profete162
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!
- < Liste des sujets
- Charte