rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Programmation matlab pour karaoke

Posté par manda13, le dimanche 29 avril 2007 à 18:53:54
Bonjour à tous ,
je dois écrire un programme en matlab pour séparer la musique et paroles d'une chanson (principe du karaoke). J'ai trouvé quelques petits trucs, et j'ai même essayer de faire un code mais j'avoue que je suis un peu perdue (je n'ai que 3 mois de connaissance au niveau matlab).
Voici comment est fait mon programme:

-TFCT composée de trois etapes :

- decoupage de notre signal en trame de longueur L avec pourcentage de recouvrement p
- multiplication des T trames par une fenêtre de pondération wa
- calcul de la transformée de fourier discréte (TFD) sur N points de cacune des trames

-filtrage de wiener

-puis TFCT-1

J'aimerais savoir si c'est exact ou si je suis loin du compte et par la même occasion si vous avez des codes...

Merci à tous
Configuration: Windows XP
Firefox 2.0.0.3
Répondre à manda13  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
^^, le mercredi 2 mai 2007 à 16:54:02
up
Répondre à ^^

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
manda, le jeudi 3 mai 2007 à 10:39:43
bonjour afin de compléter le sujet voici le code source , tout d'abord la fonction principale puis wiener.m qui est utilisée ds le fichier principal

clear all;
close all;


[ y, fs, nbits ] = wavread( 'Blue20s.wav' );

hist(y(:,2),1000);
title('gaussienne distribution');

Ts = 1/fs
t=0:Ts:0.5;


left = y(:,1)';
right = y(:,2)';

figure;
subplot(2,1,1);
plot( t, left(1:length(t)) );
title( 'left ear' );
subplot(2,1,2);
plot( t, right(1:length(t)) );
title( 'right ear' );


%La s´eparation de sources s’effectue dans le domaine frequentiel. On represente les
%signaux par leur TFCT dont le calcul peut se decomposer en 3 etapes:

%decoupage avec un recouvrement de 1024 points soit 50% des points de la FFT

fs = 1/Ts;
N=2048; % nombre de points pris pour les fonctions à étuder
t=[1:N]/fs;

%parametre fct
NFFT = 2048; %nombre de points pris pour la FFT
fe = 8000; %frequence d'echantillonnage du signal
NBR = 1024; % nombre de points de recouvrement
fenetre = hamming(NFFT); % fenetre de recouvrement


s =[left' right']; %signal a etudie


t=1:length(s);
figure;
subplot(211);
plot(t, s);
title('concatenation de left et right');
subplot(212);
plot(fenetre);
figure;
i = 1;
IndInf = 1;
IndSup = NFFT;

while IndSup<length(s)
ss = s(IndInf : IndSup);
ss = ss.*fenetre'; %multiplication des T trames par une fenetre de ponderation
X(i,:) = abs( fft(ss) ); %calcul de la Transformee de Fourier Discrete (TFD) sur N points de chacune
%d’elles
IndInf = IndInf + NFFT - NBR;
IndSup = IndSup + NFFT - NBR;
i=i+1;
end

%surf(X(:, 1: NFFT/2));
[L, c] = size(X);
mesh( [1:L], [1:NFFT/2]*fe/NFFT, X(:, 1:NFFT/2)');
title('representation de la TFCT ');

wiener(y,4,'carre',0.01,0.5);

while IndSup<length(s)
ss = y(IndInf : IndSup);
ss = ss.*fenetre'; %multiplication des T trames par une fenetre de ponderation
X(i,:) = abs( ifft(ss) ); %calcul de la Transformee de Fourier Discrete (TFD) sur N points de chacune
%d’elles
IndInf = IndInf + NFFT - NBR;
IndSup = IndSup + NFFT - NBR;
i=i+1;
end
wavwrite(X,'Blue20s.wav' );

////////////// wienr.m

function wiener(y,sbox,type,sigma,alpha);


[L,c]=size(y); % Taille de l'image


% Convolution
box = zeros (L,c);

switch type
case 'carre'
box(1:sbox,1:sbox) = 1;
end

box = box / sum(box(:));
Yy = fft2(y);
Hh = fft2(box,L,c);
Cc = Yy.*Hh;
co = real(ifft2(Cc));

% Calcul du bruit
sigma = sqrt(sigma);
noisy = (co + sigma*randn(size(co)) + 0);
noisy = max(0,min(noisy,1));
Gg = fft2(noisy);

% Filtre inverse
%Ffinv=Gg./([abs(Hh)<1e-1].*1e-1+Hh);
%finv=im2uint8(abs(ifft2(Ffinv)));

% Filtre de Wiener
H2=abs(Hh).^2;
Ffwin=H2.*Gg./([(H2+sigma).*Hh<1e-14].*1e-14+((H2+sigma).­*Hh));
fwin=abs(ifft(Ffwin));

figure;
plot(fwin);
title('filtre de wiener');

MERCI
Répondre à manda

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
manda13, le samedi 5 mai 2007 à 15:35:47
personne n'a la moindre idée?

même une idée générale serait la bienvenue...
Répondre à manda13

4


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
 benny, le dimanche 6 mai 2007 à 16:03:29
... dur dur le matlab !
Répondre à benny
Discussions pertinentes trouvées dans le forum
07/02 14h54Programmation matlab en utilisant feval8
14/01 09h58Programmation matlab9
08/08 17h52Programme matlab3
10/06 10h12Programme Matlab de PQC1
Plus de discussions sur « programmation matlab pour karaoke »
Logiciels pertinents trouvés dans les téléchargements
Télécharger vanBasco's Karaoke Player 2.53vanBasco's Karaoke Player - vanBasco's Karaoke Player est un lecteur de fichier MIDI supportant les formats Karaoke (. kar ) et MIDI (.mid, .midi,...Catégorie: Lecteurs audio
Licence: Freeware/gratuit
Télécharger progeCAD 2008 2008 SmartprogeCAD 2008 - Vous recherchez une solution gratuite afin de vous familiariser avec le domaine du CAD ? Ce logiciel est fait pour vous....Catégorie: 3D
Licence: Freeware/gratuit
Télécharger Crimson Editor 3.70Crimson Editor - Crimson Editor est un éditeur professionnel de code source pour Windows. Ce programme, très léger en terme de taille,...Catégorie: Webmaster
Licence: Freeware/gratuit
Télécharger uTorrent 1.7.7uTorrent - µTorrent est un client BitTorrent , c'est-à-dire un logiciel de téléchargement Peer-To-Peer (P2P) capable de gérer les...Catégorie: Téléchargement
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « programmation matlab pour karaoke »