Red de conocimiento informático - Descarga de software - ¿Escribir un programa para eliminar el ruido de señales de voz o de imágenes utilizando el lenguaje Matlab? Pide ayuda a expertos

¿Escribir un programa para eliminar el ruido de señales de voz o de imágenes utilizando el lenguaje Matlab? Pide ayuda a expertos

Lo sentimos, el programa no se eliminará hasta que vea el filtro Wiener.

Mejora de la voz basada en % de resta espectral

% Parámetros de entrada S datos de voz, frecuencia de muestreo fs, explicado a continuación P, ***11, opcional, con valor predeterminado.

% de resta de "sobresustracción", retiene una pequeña parte del ruido de fondo original y utiliza esta parte del ruido de fondo para cubrir los picos del espectro del ruido musical, eliminando así el ruido musical desagradable.

% Estima el ruido y realiza la resta espectral a través del parámetro dado p. Eliminando así el ruido.

Función [ss, po] = specsubm (s, fs, p)

% Usa resta espectral para mejorar [SS, PO] = (S, FS, P)

p>

%

% Implementación del algoritmo de resta espectral de R Martin (bastante lento)

% Parámetros del algoritmo: t* en segundos, f* en Hertz , k*adimensional

% 1: tg = Constante de tiempo de suavizado (0,04) de estimación de potencia de señal: alta = reverberación, baja = música

% 2: ta = potencia de señal Suavizado estimado constante de tiempo

%

para estimación de ruido (0.1)

% 3: tw = fft longitud de la ventana (se redondeará a 2^ nw muestras)

% 4: tm = longitud mínima del filtro (1,5): alta = respuesta lenta al aumento de ruido, baja = distorsión

% 5: to = constante de tiempo del factor de sobrecontracción (0,08)

% 6: fo = frecuencia de esquina de sobrecompresión (800): alta = distorsión, baja = música

% 7: km = mínimo a usar Número de buffers (4): alto = desperdicio de memoria, bajo = modulación de ruido

% 8: ks = constante de sobremuestreo (4)

% 9: kn = compensación de estimación de ruido (1.5)

% 10: kf = base de resta (0,02): alto = ruidoso, bajo = agradable

% 11: ko = factor de escala de sobrecompresión (4): alto = distorsión, bajo = música

% Verifique los parámetros de entrada de la función. Si hay menos de tres entradas, po es el valor predeterminado y los parámetros de po son los descritos anteriormente.

Si nargin & lt3 po =[0,04 0,1 0,032 1,5 0,08 400 4 4 1,5 0,02 4]. ; else po = p; fin

ns = longitud (segundos);

ts = 1/fs;

ni = pow 2(siguiente pow 2(fs * po(3)/po(8)));

ti = ni/fs

NO = ni * po(8);

nf = 1+piso((ns-NO)/ni);

nm = techo(fs * po(4)/( ni * po(7)));

win = 0.5 *Hamming(NW+1)/1.08; win(end)=[];

ZG = exp(- ti /po(1));

za = exp(-ti/po(2));

zo = exp(-ti/po(5));

p>

px = cero(1+nw/2, 1);

pxn = px

os = px

mb=ones( 1 +nw/2, po(7))* NW/2;

im = 0;

OSF = po(11)*(1+(0:NW/2) ) .*fs/(nw*po(6))).

^(-1);

imidx =[13 21]';

x2im = cero (longitud (imidx), nf);

osim = x2im

pnim = x2im

pxnim = x2im

qim = x2im

for is=1:nf

idx =(1:NW)+(is-1)*ni;

x=rfft(s(idx)). *win);

x2 = x * conj(x);

pxn = za * pxn+(1-za)* x2;

im= rem(im+1,nm);

Si yo

mb(:,1)=min(mb(:,1),pxn);

Otro

mb=[pxn,mb(:,1:po(7)-1)];

Fin

pn=po(9) *min(mb,[],2);

%os=Coeficiente de contracción excesiva

OS = zo * OS+(1-zo)*(1+OSF. *pn. /(pn+pxn));

px = ZG * px+(1-ZG)* x2;

q=max(po(10)*sqrt(pn./x2 ), 1-sqrt(sistema operativo. *pn./px));

ss(idx)= ss(idx)+IR FFT(x . * q); Fin

Si nargout==0

soundsc([s;ss], fs);

Fin