FMOD FSOUND_DSP_GetSpectrum() - C++ - Programmation
Marsh Posté le 06-01-2006 à 13:47:39
le tableau de 512 valeurs correspond à l'image du spectre à un instant donné (par exemple : http://monkey.grotto.free.fr/dotcl [...] vj-0.3.png : on affiche le spectre au fur et à mesure de la lecture d'un mp3; plus c'est blanc, plus la valeur est proche de 1 et le noir tend vers 0).
Pour savoir comment elle fonctionne, voir le sample livré avec fmod.
Et sinon faut faire une analyse pas à pas pour savoir comment change le spectre dans le temps (montée ou descente des valeurs des hautes aux basses fréquences).
Marsh Posté le 06-01-2006 à 14:20:17
Ok, ça parrait bien compliqué si je veux faire un truc automatiser.
Sinon, y a t-il une fonction qui te renvoit l'amplitude du signal et à partir d'une certaine amplitude je recupère la position par rapport aux temps.
Y a t'il une fonction qui te filtre les petits bruits dû au microphone.
Dois je continuer sur l'analyse de spectre ou mon idée d'amplitude peut tenir la route ?
Merci
Marsh Posté le 06-01-2006 à 14:34:09
Rien n'est fait dans ce sens, tu dois tout te taper à la main concernant les filtres
Il va falloir parser le signal à la main ...
Marsh Posté le 06-01-2006 à 15:05:52
Ya t il une fonction qui te renvoit l'amplitude du signal, j'ai trouver la fonction FSOUND_GetAmplitude mais elle me renvoit que 0 ou 255, je pense qu'elle renvoit 0 quand il ya un silence et 255 quand il ya du bruit alors que je veux juste l'amplitude.
Marsh Posté le 06-01-2006 à 15:07:31
Ben c'est l'amplitude
ce n'est pas 0 ou 255 : l'entier retournée est compris entre 0 et 255
Marsh Posté le 06-01-2006 à 15:21:01
my_stream = FSOUND_Stream_Open("record.wav", 0, 0, 0);
FSOUND_Stream_Play( 0, my_stream);
je lance un timer ensuite qui doit normalement tte les millisecondes executer les lignes de code suivantes
amplitude = FSOUND_GetAmplitude(0);
Edit2->Text = IntToStr(amplitude);
Il est bon mon bout de code ???
Marsh Posté le 09-01-2006 à 16:06:29
ReplyMarsh Posté le 12-01-2006 à 12:18:10
oui je l'ai essayé ca me met toujours 255 merci pour ton lien mais pour lire un fichier initialiser et liberer et fermer je sais deja faire.
Marsh Posté le 12-01-2006 à 14:31:46
http://www.fmod.org/docs/HTML/FSOUND_GetAmplitude.html
c'est pas le signal, c'est le volume en tant que paramètre appliqué au signal.
Marsh Posté le 12-01-2006 à 15:04:23
ok comment on trouve l'amplitude ou l'energie du signal en cours de lecture avec FMOD ?
Marsh Posté le 12-01-2006 à 15:17:29
GetSpectrum retourne 512 valeurs comprises entre 0 et 1 qui representent en faite le spectre du signal si je ne dit pas de betises, le problème c'est que je n'ai pas vraiment de connaissances en analyse spectrale donc je sais pas comment je pourrai utiliser cette fonction.
Marsh Posté le 13-01-2006 à 09:45:29
Si le spectre sur une plage donnée est >0, il y a du son et donc tu peux savoir que quelqu'un parle ... Attention à distinguer le bruit du son (en moyennant ou autre)
Marsh Posté le 13-01-2006 à 10:09:14
sinon tu prends quelques harmoniques type de la voie humaine, style ~4Khz, et si passé une certainte amplitude tu considères que qu'un cause...
Marsh Posté le 13-01-2006 à 13:47:36
+1, les informations interessantes se situent dans les basses fréquences
Marsh Posté le 06-01-2006 à 12:36:47
Bonjour,
Je travaille actuellement sur un projet de traitement audio, je dois enregistrer un signal (voix d'un enfant qui prononce un mot) dans un fichier wav puis je dois determiner le moment où l'enfant commence à prononcer le mot et le temps de réponse.
Pour enregistrer la voix de l'enfant, c'est fait mais pour traiter le signal, j'ai quelques difficultés.
Après quelques recherches, j'ai trouvé une bibliothèque audio qui s'appelle FMOD, je l'ai utiliser pour enregistrer le signal et je dois l'utiliser pour le traiter, on m'a conseillé d'utiliser la fonction FSOUND_DSP_GetSpectrum(), j'ai vu qu'elle était utilisée pour faire de l'analyse spectrale.
Je voulais avoir quelques précisions sur cette fonction :
Voilà si quelqu'un peut m'aider ca serait sympa.
Merci
Amine
Message édité par Amine78 le 06-01-2006 à 12:37:18