Sujet : Re: Pitch shifting
De : guillet.francois (at) *nospam* wanadoo.fr (François Guillet)
Groupes : fr.sci.maths fr.sci.biologieDate : 05. May 2021, 09:05:05
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <609243c8$0$3713$426a74cc@news.free.fr>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
User-Agent : MesNews/1.08.06.00
robby a exposé le 04/05/2021 :
...
mais bon, si tu te fiche de la phase, pourquoi ne pas juste la mettre à zero, et ne garder que le module de la freq (à décaler à ta guise) ?
J'ai essayé, mais c'est finalement bien moins bon que de prendre l'atan(y/x). Et comme dans ce cas, cela revient à resynthétiser le signal qu'on avait déjà, on a tout intérêt à simplement garder telles quelles les composantes real/imag qu'on a compressées.
( ou disons, à 2pi.random(f) pour éviter la correlation massive en 0 ).
comme ça elle tombera automatiquement d'aplomb si tu met tes iFFT bout a bout.
J'essaierai. Plutôt une petite variation autour de la valeur atan(y/x).
( Ma correction de la phase avec -(2*pi*i*(1-k)) indiquée plus haut a finalement été une erreur. Ca atténuait mes clics de rupture de phase, mais ceux-ci n'étaient dûs qu'à une erreur de calcul sur les index des fréquences négatives. Une fois corrigé, les clics disparaissent, et finalement la méthode de base toute bête F'=k*F reste la meilleure malgré les atténuations périodiques à la fois en fréquence et en temps.
Sauf si tu fais un recouvrement a la reconstruction, auquel cas il manque des infos.
Oui, c'est un pb.
...
MES FFT FAITES POUR LE DECODAGE RADIO, LESQUELLES SONT LONGUES !
on ne sait toujours pas si "longue" signifie une fraction de secondes ou plusieurs minutes.
Au moins 4 à 8 fois plus longues que les STFT préconisées.
Je ne vais pas tout refaire.
>
ah mais les données sont déjà acquises ?
Qu'entends-tu par "données" ?
On peut choisir la taille FFT comme on veut mais je n'ai pas pris l'option de la changer dynamiquement suivant la fonctionnalité choisie, comme le pitch shifting.
...
pour l'instant je laisse de côté l'analyse de ce que tu veux dire, mais surtout: est-ce que tu fait cette opération dans le spectre, puis iFFT ?
oui
Ou juste après la transformation souhaitée tu fait une resynthèse directe "à la mano" ? ( somme des sinusoides ).
Comprends pas, ça revient au même. Si je pars des composantes real/image de la FFT, que je compresse, puis que je fais la iFFT, c'est la même chose que si je calcule l'amplitude et la phase à partir de real/image, puis que je recalcule les composantes real/imag en faisant real[i] = a[i] cos(2*pi*i/n + phase[i] avec a[i]=sqrt(real²+imag²) et phase[i]=atan(imag/real), puis iFFT. L'iFFT est toujours nécessaire.
La resynthèse je l'ai faite pour pouvoir jouer facilement sur la phase qu'on a à l'étape intermédiaire, et voir ce que ça donne, mais c'est du temps de calcul gaspillé.
Toute la différence porte sur les valeurs de k permises ( parceque prendre k = 1.137941 dans un la FFT risque de lui faire tout drôle :-D )
Je me suis pour le moment limité à k<1. k>1 devrait marcher aussi facilement mais pour l'extension de spectre il faut un autre algo.