TP-traitement-audio-visuel/TP11/creation_bdd.m

45 lines
1.1 KiB
Mathematica
Raw Normal View History

2023-06-22 18:47:16 +00:00
clear;
close all;
chemin = '/mnt/n7fs/ens/tp_jmelou/Shazam/Morceaux/';
fichiers = dir([chemin '*.wav']);
bdd = containers.Map('KeyType','uint32','ValueType','any');
% 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
for id = 1:length(fichiers)
% Lecture d'un fichier audio :
disp(fichiers(id).name);
[y,f_ech] = audioread([chemin fichiers(id).name]);
% 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);
% Calcul des identifiants :
identifiants = indexation(paires);
% Stockage des identifiants :
for i = 1:length(identifiants)
identifiant = identifiants(i);
entree = [paires(i,3) id];
if bdd.isKey(identifiant)
bdd(identifiant) = [bdd(identifiant) ; entree];
else
bdd(identifiant) = entree;
end
end
end
save bdd.mat bdd;