Flux rss
Rechercher : dans
Par :

Programmation matlab pour karaoke

manda13, le dimanche 29 avril 2007 à 18:53:54 
 Signaler ce message aux modérateurs

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

1

^^, le mercredi 2 mai 2007 à 16:54:02

Up

Répondre à ^^

2

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

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

 benny, le dimanche 6 mai 2007 à 16:03:29
  • +1

... dur dur le matlab !

Répondre à benny
[programme matlab sur labview] salut, est ce que quelqu'un peut m'aider à trouver un moyen de transferer un programme Matlab sur labview. merci d'avance. @+ www.commentcamarche.net/forum/affich-2228038-programme-matlab-sur-labview
Optimisation d'un programme matlab s'il vous plais jai besoin d'un coup de main, le programme suivant prend des heurs pour donner le résultat. je suis pas un pro de programmation, je matipule des grosses matrice, j'aimerai l'optimiser y a t'il un moyen est comment. merci beaucoup. www.commentcamarche.net/forum/affich-1372446-optimisation-d-un-programme-matlab
Programmation matlab (Résolu) Bonjour, Etant donné que je suis nul en programmation et plus particulièrement en matlab, je voudrais savoir si quelqu'un pourrait m'aider à faire la programmation sur 2 thèmes parmis la liste suivante: 1. Résolution de f(x)=0 2. Résolution de... www.commentcamarche.net/forum/affich-4645095-programmation-matlab
Programme karaokéBonjour, je cherche un programme pour changer mes chansons mp3 en CD karaoké que je pourrait faire jouer sur mon DVD karaoké de salon et voir deffiler les parole en bas de l,ecran merci a tous si quelqu'un peut m'aider bobkerry www.commentcamarche.net/forum/affich-4774119-programme-karaoke
Programmation matlab en utilisant feval (Résolu)Bonjour, je suis vraiment débutante sur matlab, je veut juste savoir comment on peut utiliser la fonction feval en programmation et merci beaucoup www.commentcamarche.net/forum/affich-4941281-programmation-matlab-en-utilisant-feval
Programmation Matlab, Traitement d'imageBonjour, j'ai un petit problème sous matlab, j'essaye de normaliser (entre 0 et 1) les valeurs d'une image RGB (entre 0 et 255): a = imread('image.tiff'); test= a(:,:,1)/255; Tout bête normalement, Et la, je me retrouve avec que des 0 ou des 1... J'ai... www.commentcamarche.net/forum/affich-941602-programmation-matlab-traitement-d-image
Structure d'un programmeA quoi ressemble un programme informatique? L'allure d'un programme dépend du type de langage utilisé pour faire le programme... Toutefois, à peu près tous les langages de programmation sont basés sur le même principe : Le programme est constitué... www.commentcamarche.net/contents/langages/structure.php3