42 lines
1.2 KiB
Mathematica
42 lines
1.2 KiB
Mathematica
|
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);
|
||
|
|
||
|
% Affichage du spectrogramme et des 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);
|
||
|
axis xy;
|
||
|
title('Pics spectraux')
|
||
|
xlabel('Temps (s)');
|
||
|
ylabel('Frequence (Hz)');
|
||
|
drawnow;
|
||
|
|
||
|
export_fig(gcf, "saves/exo1_" + num2str(numero_morceau) + ".png", '-png', '-painters', '-m2');
|