LAB. 02 - Manejo de Sonido Con Matlab

LABORATORIO DE PROCESAMIENTO DIGITAL DE SEÑALES EXPERIENCIA 2 UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS FACULTAD DE ING

Views 112 Downloads 66 File size 169KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

LABORATORIO DE PROCESAMIENTO DIGITAL DE SEÑALES

EXPERIENCIA 2

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS FACULTAD DE INGENIERIA ELECTRONICA Y ELECTRICA EXPERIENCIA 2 MANEJO DE SONIDO CON MATLAB I.

OBJETIVOS a) Abrir archivos de sonido en formato WAV y acceder a las muestras digitalizadas b) Comprender y manipular la frecuencia y periodo de muestreo de los audios digitales para su reproducción c) Manipular archivos de sonido estéreo d) Realizar diversos procesamientos a los sonidos digitalizados

II.

EQUIPOS Y MATERIALES Computador con Matlab

III.

MARCO TEORICO a) El computador funciona en forma discreta, no continua. b) La señal análoga pasa por un proceso de muestreo y digitalización. c) El muestreo se realiza a cierta frecuencia (fs) o periodo (Ts). d) Cuanto menor sea el periodo de muestreo, el sonido será más próximo al real. e) A cada muestra tomada le corresponde un tiempo discreto y la misma muestra pero digitalizada a N bits.

En la Figura 1, se muestra una señal digitalizada a 8bits/muestra.

Figura 1 – Señal digitalizada a 8bits/muestra

IV.

INFORME PREVIO

1.- Muestre la estructura y campos de un archivo WAV. 2.- Explique qué sentido tiene la frecuencia de muestreo durante la conversión de analógico a digital y de digital a analógico. 3.- Averigüe las frecuencias de muestreo y bits/muestra empleados comercialmente y en qué sistemas o aplicaciones se emplean.

LABORATORIO DE PROCESAMIENTO DIGITAL DE SEÑALES

EXPERIENCIA 2

VI. PROCEDIMIENTO 01.- Generación y reproducción de una señal audible fs = 44000 Ts = 1/fs T = 3 tn = 0:Ts:T

%Definimos la frecuencia de muestreo %Definimos el periodo de muestreo %Duración del sonido en segundos %Generación de los instantes de muestreo

y = sin(2*pi*440*tn); %Generación de señal muestreada %Generación de las muestras digitalizadas %Note que está reproduciendo una señal de 440 Hz wavwrite(y,fs,'d:\tono440.wav') audiowrite('d:\tono440.wav', y, fs) %Grabe en formato WAV plot(tn,y) sound(y,fs)

%Graficar la señal en el tiempo %¿Cuántos puntos se graficó? %Reproduzca el sonido por los parlantes

pause

%¿Para qué sirve este comando?

y1 = y(1:1000) tn1 = 0:Ts:999*Ts plot(tn1,y1) sound(y1,fs)

%Se parte la señal, mil puntos %Mil instantes de muestreo %Gráfico, ¿qué tiempo se graficó y escuchó? %¿Qué tiempo se escuchó? %Escuche la señal

02.- Tonos y operaciones con tonos. Para generar un sonido en Matlab se usa el comando SOUND, utilice HELP para obtener mayor información. Un tono se define como un coseno de cierta frecuencia:

y(t) =Acos(wt + ) = Acos(2¶ f t + )

Al reproducir se escuchará un tono de frecuencia f. Genere una frecuencia fundamental y dos armónicos y realice lo siguiente: a) Súmelos b) Multiplíquelos c) Combine varias operaciones entre ellas. Grafíquelos y reprodúzcalos. 03.- Generación y reproducción de una señal de audio estéreo. Genere una matriz de dos columnas, cada una con una señal distinta y envíela a los parlantes con el comando SOUND. fs = 44000 Ts = 1/fs T = 3

%Definimos la frecuencia de muestreo %Definimos el periodo de muestreo %Duración del sonido

tn = 0:Ts:T; %Generación de los instantes de muestreo, vector FILA x1 = sin(2*pi*340*tn); %Generación de la señal 1 x2 = sin(2*pi*840*tn); %Generación de la señal 2 size(x1) % size(x2) % sound(x1, fs) sound(x2, fs)

LABORATORIO DE PROCESAMIENTO DIGITAL DE SEÑALES x3=[x1 x2]; size(x3) plot(tn, x3) sound(x3, fs)

%Genere otro audio combinando x1 y x2

x1=x1'; x2=x2'; x3=[x1 x2]; size(x3) plot(tn, x3) sound(x3, fs)

%Transpuesta %Transpuesta %Combine las transpuestas

EXPERIENCIA 2

%Cuál es la diferencia de usar o no usar transpuesta

04.- Generación de una señal senoidal con intensidad creciente o decreciente %Generar una señal senoidal de 1.5KHz fs = 8000 %Definimos la frecuencia de muestreo Ts = 1/fs %Definimos el periodo de muestreo T = 3 %Duración del sonido tn = 0:Ts:T %Generación de los instantes de muestreo x1 = sin(2*pi*1500*tn); %Generación de la señal muestreada sound(x1,fs) Ahora generar una señal rampa de la misma duración: rampa=tn/T; Combinarla con la señal senoidal de tal forma que: a) Escuche la senoidal de menor a mayor intensidad. b) Escuche la senoidal de mayor a menor intensidad. 05.- Tonos para barrido de frecuencia Desarrolle un programa que genere una onda senoidal de frecuencia creciente en el tiempo, que barra desde unos 15 Hz hasta los límites de audición. fs = 96000 %Definimos la frecuencia de muestreo Ts = 1/fs %Definimos el periodo de muestreo T = 20 %Duración del sonido tn = 0:Ts:Ts; %Generación de los instantes de muestreo rampa = 22000*tn/T; %Frecuencia máxima x1 = sin(2*pi*rampa.*tn); %Generación de la señal plot(tn,x1) sound(x1,fs) Pruebe con otras: fs, frecuencia máxima y duración 06.- Modificación de la velocidad de reproducción y otros efectos Consiga un archivo WAV estéreo, puede buscar en Internet [s fs] = wavread('estereo.wav'); [s fs nbits] = wavread('estereo.wav'); fs

nbits [s fs] = audioread('estereo.wav'); fs length(s) size(s) Duracion = length(s)*(1/fs) %Duración en segundos %wavplay(s,fs) %Comando antiguo Audio = audioplayer(s, fs); play(Audio); Canal_L = s(:,1); Canal_R = s(:,2);

%Canal izquierdo %Canal derecho

LABORATORIO DE PROCESAMIENTO DIGITAL DE SEÑALES length(Canal_L) wavplay(Canal_L, fs) wavplay(Canal_L, 2*fs) wavplay(Canal_L, .8*fs)

EXPERIENCIA 2

%Cantidad de muestras %Reproducción a velocidad normal %Reproducción a doble velocidad %Reproducción a 0.8 de velocidad

%Reproduzca a las velocidades indicadas usando audioplayer y play %Verifique si los sonidos son los mismos en cada canal %Grafique cada canal subplot(3,1,1) plot(s) subplot(3,1,2) plot(Canal_L) subplot(3,1,3) plot(Canal_R)

Recorte del sonido a la mitad >>s_recortado = canal_L(1:length(s)/2) >>length(s_recortado) >>Duracion2 = length(s_recortado)*(1/fs) >>wavplay(s_recortado,fs)

%Duración en segundos

Inversión del sonido >>s_inv = canal_R(end:-1:1) >>wavplay(s_inv,fs) Eliminación de muestras >>s_di = canal_L(1:2:end) >>wavplay(s_di,fs) 07.- Palindromos Pronuncie y grabe el siguiente texto con el Matlab o la grabadora de Windows, use formato WAV: “DABALE ARROZ A LA ZORRA EL ABAD” Lea el archivo de sonido desde Matlab: [y fs] = wavread('palindromo.wav'); Obtenga la longitud o cantidad de muestras: Tamano = length(y) Invierta las muestras y reproduzca la invertida y luego la original. z = y(end:-1:1) sound(z,fs) pause sound(y,fs) Grafique ambas señales y compare. 10.- Pruebe con otros palíndromos. A mamá Roma le aviva el a amor a Papá y a Papá Roma le aviva el amor a Mamá. Eva usaba rímel y le miraba suave. La ruta nos aportó otro paso natural. Le avisará Sara si va él. Sometamos o matemos. Adán no cede con Eva y Yavé no cede con nada.