1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| function supsilence(signal)
signal = resample(signal, 5000, 44100);
% On travaille en mono
signal = signal(:,1);
figure
% Affichage du signal
subplot(311)
plot(signal, 'b')
title('Signal');
% Calcul de l'énergie (approximation)
S = abs(signal);
m = min(S(:));
S = S - m;
M = max(S(:));
S = S/M;
e = S.^2;
% Affichage de e
subplot(312)
plot(e, 'r')
title('~Energie~');
% Seuillage de e
seuil = .06;
e = e>seuil;
% Affichage du seuil
hold on
plot([0 numel(e)],[seuil seuil],'m-')
% Détection des "silences"
idx(1) = find(e>seuil,1,'first');
idx(2) = find(e>seuil,1,'last');
signal(1:idx(1)) = [];
signal(idx(2):end) = [];
% Affichage des silences détectés
subplot(313)
plot(signal, 'b')
title('Signal + filtrage');
signal_envers=signal(end:-1:1);%signal à l'envers
figure
subplot(311);
plot(signal_envers, 'b')
title('Signal_envers');
% Calcul de l'énergie (approximation)
S1 = abs(signal_envers);
m1 = min(S1(:));
S1 = S1 - m1;
M1 = max(S1(:));
S1 = S1/M1;
e = S1.^2;
% Affichage de e
subplot(312)
plot(e, 'r')
title('~Energie~');
% Seuillage de e
seuil = .06;
e = e>seuil;
% Affichage su seuil
hold on
plot([0 numel(e)],[seuil seuil],'m-')
% Détection des "silences"
idx(1) = find(e>seuil,1,'first');
idx(2) = find(e>seuil,1,'last');
signal_envers(1:idx(1)) = [];
signal_envers(idx(2):end) = [];
% Affichage des silences détectés
subplot(313)
plot(signal_envers, 'b')
title('Signal_envers + filtrage');
%affichage du signal sans silence
figure
s= signal_envers(end:-1:1);%signal à l'envers
plot(s, 'b'); |
Partager