comment le bruit de l'être supprimé à partir d'un son enregistré,à l'aide de la fft de MATLAB?
Je veux supprimer les bruits de sons enregistrés et de faire de la fft de trouver des fréquences fondamentales du son, mais je ne sais pas comment faire pour supprimer ces bruits. J'enregistre le son de la chute d'objets à partir des hauteurs différentes. Je veux trouver la relation entre la hauteur et la fréquence maximale du signal enregistré.
[y,fs]=wavread('100cmfreefall.wav');
ch1=y(:,1);
time=(1/44100)*length(ch1);
t=linspace(0,time,length(ch1));
L=length(ch1);
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
Y1=log10(Y);
figure(1)
f = fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(Y1(1:NFFT/2+1))) ;
[b,a]=butter(10,3000/(44100/2),'high');
Y1=filtfilt(b,a,Y1);
% freqz(b,a)
figure(2)
plot(f,2*abs(Y1(1:NFFT/2+1))) ;
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('|Y(f)|')
xlim([0 50000])
% soundsc(ch1(1:100000),44100)
OriginalL'auteur yuna | 2011-05-04
Vous devez vous connecter pour publier un commentaire.
Disant qu'il y a du bruit dans le signal est très vague et ne rend pas beaucoup d'informations à tous. Certaines questions sont:
L'approche que vous prendrez certainement dépendent les réponses aux questions ci-dessus.
Cependant, à partir de l'expérience de l'installation que vous avez décrit, je suppose que le bruit est juste un bruit de fond, que dans la plupart des cas, peut être assimilée à blanc dans la nature. Bruit blanc fait référence à un " bruit statistique modèle qui dispose d'une puissance constante à toutes les fréquences.
L'approche la plus simple est d'utiliser un filtre passe-bas ou passe-bande filtre pour ne conserver que les fréquences qui vous intéresse (un rapide coup d'oeil à la fréquence du spectre devrait le révéler, si vous ne la connaissez pas déjà). Dans un la réponse précédente de la mine, à une question sur le filtrage à l'aide de MATLAB, j'ai donner des exemples de création de filtres passe-bas et les pièges les plus courants. Vous pouvez le lire sans doute grâce à cela et voir si cela vous aide.
Un exemple simple:
Envisager une sinusoïde avec une fréquence de 50 Hz, échantillonné à 1000 Hz. Pour cela, j'ajoute un bruit blanc Gaussien tel que le SNR est ~ à-6dB. Le signal original et le signal bruyant peut être vu dans la ligne supérieure de la figure ci-dessous (seulement 50 échantillons sont présentés). Comme vous pouvez le voir, il semble presque comme si il n'y a pas d'espoir avec le bruit du signal à l'ensemble de la structure semble avoir été détruit. Toutefois, en prenant une FFT, révèle l'enterré sinusoïde (indiqué dans la rangée du bas)
Filtrage du signal bruyant avec une étroite bande du filtre de 48 à 52 Hz, nous donne une "nettoyer" le signal. Il y aura bien sûr une perte de l'amplitude à cause du bruit. Cependant, le signal a été récupéré à partir de ce qui ressemblait à une cause perdue au début.
La façon de procéder dépend de votre application. Mais j'espère que cela vous a aidé à comprendre certaines des bases de filtrage du bruit.
MODIFIER
@Shabnam: Cela fait près de 50 commentaires, et je ne vois vraiment pas vous faire un effort pour comprendre ou à tout le moins, à essayer des choses sur votre propre. Vous devriez vraiment apprendre à lire la documentation et d'apprendre les concepts et l'essayer au lieu de courir en arrière pour chaque erreur. De toute façon, essayez de la manière suivante (modifié à partir de votre code) et de montrer la sortie dans les commentaires.
Facile sont des exemples de ce que conduire à une meilleure compréhension des concepts plus compliqués. Ce que j'ai expliqué, c'est la base pour le filtrage. Comme je l'ai mentionné, la façon de procéder dépend de la nature du bruit et certes, je ne vais pas enregistrer de l'audio et de regarder pour le hypothétique de bruit. En outre, il n'y a aucune garantie qu'il est reproductible exactement, comme le bruit pourrait être dû à votre système d'acquisition de données. Je suis désolé, mais ce que vous me demandez, c'est l'équivalent de l'écriture chez le médecin et dire que vous ne vous sentez pas bien. Il n'y a pas assez visuelle/sonore/informations factuelles pour lui de faire un diagnostic.
remercions de votre commentaire.je pense qu'un malentendu qui s'est passé.c'est environ un mois, je suis à la recherche de la réponse et je suis familier avec votre explication.cependant j'essaie plus de comprendre l'identité de bruits.
S'il vous plaît poster un complot de la fft. Peut-être, nous pouvons vous suggérer quelque chose en le regardant. Vous pourriez ne pas avoir assez de rep pour télécharger une image, mais si vous le télécharger quelque part et poste le lien en commentaire, je vais éditer votre post pour vous.
Je voudrais vous montrer mon fft intrigue,mais comment?
OriginalL'auteur abcd
Réponse à votre question est très dépendante des caractéristiques de ce que vous appelez "le bruit" - sa distribution spectrale, le bruit stationnaire ou non, la source du bruit (est-il né dans l'environnement ou de l'enregistrement de la chaîne?).
Si le bruit est à l'arrêt, j'.e ses caractéristiques statistiques ne changent pas au fil du temps, vous pouvez essayer de l'enregistrement de quelques secondes (10 à 15 est une bonne estimation initiale), du bruit, de la préforme de la FFT, puis soustraire la valeur du bruit dans FFT bin
n
de votre mesure de la FFT binn
.Vous pouvez lire quelques arrière-plan ici: http://en.wikipedia.org/wiki/Noise_reduction
L'approche ci-dessus ne fonctionnera pas. Le bruit est par définition aléatoire. En soustrayant un enregistrement du bruit à partir d'un autre enregistrement de bruit sera tout simplement le double de la variance du bruit (c'est à dire qu'il va faire empirer les choses).
Oli Charlesworth - Vous droit si elle est effectuée dans le domaine temporel, mais dans le domaine de fréquence du bruit peut certainement être réduit par la soustraction de deux valeurs. C'est exactement comme l'application d'un filtre de réduction de bruit. Je vais modifier ma réponse sur ce point plus clair.
La soustraction dans le domaine de fréquence est équivalente à la soustraction dans le domaine temporel, la FFT est une opération linéaire. Un filtre est multiplicatif dans le domaine de fréquence...
Charlesworth - je parle de la moyenne de l'amplitude, en prenant le
abs
de la fréquence de bruit, et de le soustraire de laabs
de la fréquence du signal, et depuisabs
n'est pas une opération linéaire, votre argument ne tient pas dans ce cas. Si un bruyant bin est atténué, le signal résultant est moins bruyant.OriginalL'auteur Itamar Katz