51 lines
1.4 KiB
Matlab
Executable file
51 lines
1.4 KiB
Matlab
Executable file
clear;
|
|
close all;
|
|
taille_ecran = get(0, 'ScreenSize');
|
|
L = taille_ecran(3);
|
|
H = taille_ecran(4);
|
|
|
|
chemin = '/mnt/n7fs/ens/tp_jmelou/Shazam/Morceaux/';
|
|
fichiers = dir([chemin '*.wav']);
|
|
|
|
% Lecture d'un fichier audio :
|
|
numero_morceau = 02;
|
|
[y, f_ech] = audioread([chemin fichiers(numero_morceau).name]);
|
|
|
|
% Découpage d'un extrait de 15 secondes :
|
|
y = y(1:f_ech * 15);
|
|
|
|
% Paramètres :
|
|
n_fenetre = 512; % Largeur de la fenêtre (en nombre de points)
|
|
n_decalage = 256; % Décalage entre deux fenêtres (en nombre de points)
|
|
fenetre = 'hann'; % Type de la fenêtre
|
|
|
|
% Calcul du sonagramme :
|
|
[Y, valeurs_t, valeurs_f] = TFCT(y, f_ech, n_fenetre, n_decalage, fenetre);
|
|
S = 20 * log10(abs(Y) + eps);
|
|
|
|
% Calcul des pics spectraux :
|
|
[pics_t, pics_f] = pics_spectraux(S);
|
|
|
|
% Calcul des paires de pics spectraux :
|
|
paires = appariement(pics_t, pics_f);
|
|
|
|
% Affichage du spectrogramme et des paires de pics spectraux :
|
|
figure('units', 'normalized', 'outerposition', [0 0 1 1]);
|
|
imagesc(valeurs_t, valeurs_f, S);
|
|
caxis([-40 20]);
|
|
hold on;
|
|
plot(valeurs_t(pics_t), valeurs_f(pics_f), 'ro', 'MarkerSize', 7, 'MarkerFaceColor', 'r', 'LineWidth', 1);
|
|
|
|
for i = 1:1:size(paires, 1)
|
|
hold on;
|
|
plot([valeurs_t(paires(i, 3)) valeurs_t(paires(i, 4))], ...
|
|
[valeurs_f(paires(i, 1)) valeurs_f(paires(i, 2))], 'r', 'LineWidth', 1);
|
|
end
|
|
|
|
axis xy;
|
|
xlabel('Temps (s)');
|
|
ylabel('Frequence (Hz)');
|
|
drawnow;
|
|
|
|
export_fig(gcf, "saves/exo2_" + num2str(numero_morceau) + ".png", '-png', '-painters', '-m2');
|