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
| clc
clear all;
close all;
signal = wavread('2.wav');
signal = resample(signal, 5000, 32000);
% 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 = .15;
e = e>seuil;
% Affichage su seuil
hold on
plot([0 numel(e)],[seuil seuil],'m-')
% Détection des "silences"
s=sign(diff([inf;e].'));
idxmin=strfind(s,[0 1]);
% Conservation des silences suffisamment longs
% Modifier le paramètre T
T = 3000;
d = diff(idxmin);
temp = find(d>T);
t = idxmin(temp);
t(2,:) = idxmin(temp+1);
% Affichage des silences détectés
subplot(313)
plot(1:numel(signal),signal, 'b',t,e(t),'m-s')
title('Signal + silences'); |
Partager