En este artículo, vamos a discutir cómo desarrollar un audífono digital usando MATLAB.
MATLAB significa Laboratorio Matrix. Es un lenguaje de alto rendimiento que se utiliza para la informática técnica. Permite la manipulación de arrays, el trazado de funciones, la implementación de algoritmos y la creación de interfaces de usuario. Es a la vez un lenguaje de programación y un entorno de programación. Permite el cálculo de sentencias en la propia ventana de comandos.
Enfoque paso a paso:
- Damos una señal de voz de entrada al modelo de MATLAB.
- Luego agregamos ruido a la señal de voz de entrada porque para este sistema la señal de entrada es una señal limpia, se agrega algo de ruido para simular una situación real.
- Ahora usamos el filtro Wavelet para reducir el ruido.
- Usamos el modelador de frecuencia para corregir la pérdida de audición de ciertas frecuencias.
- La compresión de amplitud se utiliza para mejorar la ganancia de la señal.
Diagrama de flujo basado en el enfoque anterior:
Aquí estamos usando AWGN (ruido gaussiano blanco aditivo) porque AWGN es un modelo fundamental utilizado en hipótesis de datos para emular el impacto de numerosos ciclos arbitrarios que ocurren en la naturaleza. AWGN tiene un espectro de frecuencia continuo y uniforme en una banda de frecuencia específica y tiene la misma potencia por Hertz de esta banda.
MATLAB
clc clear close all % disp('recording...'); % recObj = audiorecorder; % recordblocking(recObj,5); % disp('recorded'); % %% % disp('playing recorded sound...'); % play(recObj); % pause(7); %% % y = getaudiodata(recObj); % input= 'Counting-16-44p1-mono-15secs.wav'; disp('input sound') % input = 'audio.wav'; % [in,fs] = audioread(input); % [y,fs] = audioread(input); load handle.mat fs=Fs; y = y(:, 1); % info = audioinfo(input); sound(y); pause(10); figure,plot(y); title('input'); xlabel('samples'); ylabel('amplitude'); y = awgn(y,40); noi = y; figure,plot(y); xlabel('samples'); ylabel('amplitude'); title('awgn'); disp('playing added noise...'); sound(y); pause(10) %'Fp,Fst,Ap,Ast' (passband frequency, stopband frequency, passband ripple, stopband attenuation) hlpf = fdesign.lowpass('Fp,Fst,Ap,Ast',3.0e3,3.5e3,0.5,50,fs); D = design(hlpf); freqz(D); x = filter(D,y); disp('playing denoised sound'); figure,plot(x); title('denoise'); sound(x,fs); xlabel('samples'); ylabel('amplitude'); pause(10) % freq shaper using band pass T = 1/fs; len = length(x); p = log2(len); p = ceil(p); N = 2^p; f1 = fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',2000,3000,4000,5000,60,2,60,2*fs); hd = design(f1,'equiripple'); y = filter(hd,x); freqz(hd); y = y*100; disp('playing frequency shaped...'); sound(y,fs); pause(10); % amplitude shaper disp('amplitude shaper') out1=fft(y); phase=angle(out1); mag=abs(out1)/N; [magsig,~]=size(mag); threshold=1000; out=zeros(magsig,1); for i=1:magsig/2 if(mag(i)>threshold) mag(i)=threshold;mag(magsig-i)=threshold; end out(i)=mag(i)*exp(j*phase(i)); out(magsig-i)=out(i); end outfinal=real(ifft(out))*10000; disp('playing amplitude shaped...'); sound(outfinal,fs); pause(10); load handle.mat figure; subplot(2,1,1); specgram(noi); title('Spectrogram of Original Signal'); subplot(2,1,2); specgram(outfinal); title('Spectrogram of Adjusted Signal');
Producción:
Publicación traducida automáticamente
Artículo escrito por pranavkrishnateja y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA