0% encontró este documento útil (0 votos)
116 vistas24 páginas

Investigacion PDS

texto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
116 vistas24 páginas

Investigacion PDS

texto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

FACULTAD DE INGENIERÍA DE SISTEMAS Y

ELECTRÓNICA

Trabajo de investigación

“Procesamiento de audio con Matlab”

Autor:
Huarancca Sulca, Leonardo 1410725

Carrera:
INGENIERÍA MECATRÓNICA

Profesor: Orellana Ambrosio, Miguel Ángel

Lima, 2018

pág. 1
INDICE

INTRODUCCIÓN---------------------------------------------------------------------------- Pág. 3

OBJETIVO GENERAL--------------------------------------------------------------------- Pág.

OBJETIVOS ESPECÍFICOS-------------------------------------------------------------Pág.

1. DEFINICIÓN----------------------------------------------------------------------------- Pág.

1.1. SONIDO---------------------------------------------------------------------- Pág.

1.2. Matlab------------------------------------------------------------------------ Pág.

1.2.1. Características de Matlab para procesar audio.


1.3. Cargar sonidos a matlap
1.3.1. Formato wav
1.3.2. Estándares de audio
1.4. Modos de carga de archivos wav.
2. COMANDOS
2.1. comando wavread
2.1.1. Sintaxis
2.1.2. AUDIOREAD
2.2. COMANDO AUDIOPLAYER
2.2.1. Sintaxis
2.3. COMANDO SIZE
2.3.1. Sintaxis
2.4. COMANDO PLOT
2.4.1. Sintaxis
2.5. COMANDO SOUND
2.5.1. Sintaxis
3. DESARROLLO
4. APLICACIONES
4.1. Recorte del audio
4.2. Inversión de la señal
4.3. Control de la velocidad de reproducción del audio

pág. 2
5. CODIGO COMPLETO
6. Bibliografía

pág. 3
INTRODUCCIÓN

El procesamiento de sonido es uno de los estudios más extensos en el rubro


digital, ya que este fenómeno se encuentra en todo nuestro ambiente, por ello de
siglos atrás se fueron investigando y creando equipos electrónicos los cuales son
capaces de transmitir un sonido a diferentes frecuencias y varias el volumen
sonoro. En esta investigación se utiliza el software Matlab y sus herramientas
para procesar un sonido el cual se editará de tres formas para poder apreciar las
diferentes aplicaciones que tiene, así también se logra visualizar y escuchar el
sonido.

Objetivo general

 Investigar el funcionamiento de un procesamiento de sonido con Matlab.

Objetivos específicos

 Desarrollar tres tipos de procesamiento de audio.


pág. 4
 Describir los comandos de cada procesamiento.
 Visualizar y escuchar los cambios del audio procesado.

1. DEFINICIÓN
1.2. SONIDO.

Es un fenómeno que el hombre logra percibir y obtener gran cantidad de


información, el cual es producido por el aire donde se genera el movimiento
de una onda de presión también llamada onda acústica. La parte que logra
captar este fenómeno es el órgano auditivo el cual capta la onda acústica el
cual se descompone en frecuencias y se transforma en estímulos
eléctricos, en donde el cerebro se encarga de procesar este sonido.

Por otro lado para imitar este sistema que nuestro cuerpo lo interpreta, se
crearon los micrófonos el cual se encarga de capturar el sonido, donde
convierte la onda acústica en señales eléctricas, del mismo modo para
percibir estos sonidos se utilizan altavoces el cual hace lo contrario
convierte la señal eléctrica en una onda acústica.

Para poder captar estas ondas y trasmitir a la computadora se convierte las


señales eléctricas que provienen del micrófono en señales digitales como
se muestra en la figura 1.

Figura 1. Conversión de señal analogía a digital.

1.3. Matlab

Matlab proviene de las abreviaturas Matrix LaBoratory, el cual es un


software que ayuda a la solución matemática con datos en la computadora,

pág. 5
las funciones de matlab con muy variadas y pueden ejecutarse mediante
comando y utilzarse para desarrollar programas, así mismo este software
cuenta con una plataforma de ayuda online a la hora de presentarse
errores o a la falta de conocimiento de alguno de ellos, tambein se puede
ejecutar la opción help seguido del comando, ejemplo ( help wavread ).
Para la investigación se utilizó MATLAB R2014a en el cual se enfocara
sobre el tema de procesamiento de sonidos.

Figura 2

Figura 3

1.3.1. Características de Matlab para procesar audio.


 Este software ofrece lo que se requiere para el ingreso y salidad de audio.
 Cuenta con funciones de alto nivel para el tratamiento de señales.
 Logra procesar a tiempo real los audios
 Al concluir la programación se puede confiar del software y lograr
implementar en algún sistema físico.

pág. 6
1.4. Cargar sonidos a matlap

Para lograr reproducir un sonido en matlab existen varias formas, pero


antes de ello se debe de tener un archivo de audio en formato wav el cual
es aceptado por el software..

1.4.1. Formato wav

También llamado Waveform Audio File Format (wav) este formato


cuenta sin comprensión de datos el cual es propiedad de Microsoft e
IBM el cual es usado para almacenar sonidos en formatos digitales,
este admite archivos mono y estéreo con diversa resoluciones y
velocidades de muestreo, para la condición de muestreo se usa el
protocolo PCM que se encarga de convertir la señal analógica en digital
por medio de un tren de impulsos.

El estándar que se considera es de 44100 Hz de muestreo y 16 bits de


resolución.

Figura 4. Condiciones de muestreo


1.4.2. Estándares de audio

Muestreo:

 8 kHz (telefonía)
 22,05 kHz (comunicación por radio)
 32 kHz (video miniDV)
 44,1 kHz (CD)
 48 kHz (Audio profesional y televisión digital)

pág. 7
 96 kHz (Audio de alta definición, DVD y blu-ray)

Resolución:

 8 bits (típico audio de los juguetes)


 16 bits (CD y archivos que emplean PCM)
 24 bits (Alta calidad de audio - Estudio de grabación)

1.5. Modos de carga de archivos wav.

Existen dos formas de cargar el audio, primero copiar el archivo wav en la


carpeta predeterminada de Matlab el cual se encuentra en la carpeta de
“documento”, así a la hora de abrir el programa nos mostrara el archivo
como se muestra en la figura 4.

Figura 4. Módulo de archivos cargados a Matlab


Por otro lado, la siguiente forma de subir este archivo, es crear un carpeta
dentro de ella se debe de encontrar el archivo wav, posteriormente con la

opción de este icono se puede cargar el archivo buscando la dirección


de ruta.

2. COMANDOS
2.1. comando wavread

Para que el programa lea el audio se usa el comando “wavread” donde


matlab explica el modo de uso y como alternativa brinda la opción del
comando auread

pág. 8
2.1.2 Sintaxis

y = wavread ('nombre de archivo')

[y, Fs, bits] = wavread ('nombre de archivo')

[...] = wavread ('nombre de archivo', N)

[...] = wavread ('nombre de archivo', [N1 N2])

[...] = wavread ('nombre de archivo', 'tamaño')

Donde:

Wavread: admite datos multicanal, con hasta 32 bits por muestra, y


admite la lectura de archivos de 24 y 32 bits .wav.

y = wavread('filename'): carga un archivo WAVE especificado por la


cadena filename, devolviendo los datos muestreados en y. La
.wavextensión se adjunta si no se da ninguna extensión. Los valores
de amplitud están en el rango [-1,+1].

[y,Fs,bits] = wavread('filename'): devuelve la frecuencia de muestreo


( Fs) en Hertz y el número de bits por muestra ( bits) utilizados para
codificar los datos en el archivo.

[...] = wavread('filename',N): devuelve solo las primeras Nmuestras


de cada canal en el archivo.

[...] = wavread('filename',[N1 N2]): devuelve solo muestras a


N1través N2de cada canal en el archivo.

siz = wavread('filename','size'): devuelve el tamaño de los datos de


audio contenidos en el archivo en lugar de los datos de audio reales,
devolviendo el vector siz = [samples channels].

[Link]. AUDIOREAD: Matlab presentó una actualización de este comando el


cual es audioread.
[Link].1. Syntax

[y,Fs] = audioread(filename)

[y,Fs] = audioread(filename,samples)

pág. 9
[y,Fs] = audioread(___,dataType)

Donde:

[y,Fs] = audioread(filename) lee datos del archivo nombrado


filename, y devuelve datos muestreados y, y una frecuencia
de muestreo para esos datos Fs,.

[y,Fs] = audioread(filename,samples) lee el rango


seleccionado de muestras de audio en el archivo, donde
sampleses un vector del formulario [start,finish].

[y,Fs] = audioread(___,dataType) retornos de datos


muestreados en los datos de la gama correspondiente a la
dataTypede 'native'o 'double', y pueden incluir cualquiera de
los argumentos de entrada en sintaxis anteriores.

Ejemplo de ejecución de comando

Cree un archivo WAVE a partir del archivo de ejemplo


[Link] vuelva a leerlo en MATLAB®.

Cree un .wavarchivo WAVE (wav) en la carpeta actual.

load [Link]
filename = '[Link]';
audiowrite(filename,y,Fs);
clear y Fs

Lea los datos de nuevo en MATLAB usando audioread.

[y,Fs] = audioread('[Link]');

Reproduce el audio.
sound(y,Fs);

pág. 10
6.2. COMANDO AUDIOPLAYER

Crea un objeto para reproducir audio

2.2.1. Sintaxis

player = audioplayer(Y,Fs)

player = audioplayer(Y,Fs,nBits)

player = audioplayer(Y,Fs,nBits,ID)

player = audioplayer(recorder)

player = audioplayer(recorder,ID)

Donde:

player = audioplayer(Y,Fs)Crea un objeto para señal , utilizando


frecuencia de muestreo . La función devuelve un identificador para el
objeto, .audioplayerYFsaudioplayerplayer

player = audioplayer(Y,Fs,nBits)Utiliza nBitsbits por muestra para


señal Y.

player = audioplayer(Y,Fs,nBits,ID)utiliza el dispositivo de audio


identificado por IDpara salida.

player = audioplayer(recorder)crea un objeto utilizando el objeto


grabador de audio .audioplayerrecorder

player = audioplayer(recorder,ID)crea un objeto desde recorderque


utiliza el dispositivo de audio identificado por IDpara salida.

2.3. COMANDO SIZE

Nos muetra el tamaño de la matriz y su sintaxis es:

2.3.1. Sintaxis

sz = size(A)

pág. 11
szdim = size(A,dim)

[m,n] = size(A)

[sz1,...,szN] = size(A)

Donde:

sz = size(A)devuelve un vector de fila cuyos elementos contienen la


longitud de la dimensión correspondiente de A. Por ejemplo, si A es una
matriz de 3 por 4, devuelve el vector . La longitud de es .size(A)[3
4]szndims(A)

Si A es una tabla o un calendario, devuelve un vector de fila de dos


elementos que consiste en el número de filas y el número de variables
de [Link](A)

2.4. COMANDO PLOT

Este comando permite poder visualizar los gráficos de cada señal de audio.

2.4.1. Sintaxis

plot(X,Y)

plot(X,Y,LineSpec)

plot(X1,Y1,...,Xn,Yn)

plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)

plot(Y)

plot(Y,LineSpec)

plot(___,Name,Value)

plot(ax,___)

h = plot(___)

pág. 12
2.5. COMANDO SOUND

convierte la matriz de datos de la señal a sonido.

2.5.1. Sintaxis

sound(y)

sound(y,Fs)

sound(y,Fs,nBits)

Donde:

sound(y): envía la señal de audio y al altavoz a la frecuencia de muestreo


predeterminada de 8192 hz.

sound(y,Fs): envía la señal de audio y al altavoz a la frecuencia de


muestreo Fs.

sound(y,Fs,nBits): Utiliza nBitsbits por muestra para señal de audio y.

3. DESARROLLO

Para iniciar el procesamiento de sonido se cargó el audio con el nombre [Link]


y a continuación se describe el proceso de funcionamiento del código.

Carga de archivo

pág. 13
1. Se inicia la lectura de la señal del audio aplicando el comando wavread.

[s Fs]=wavread('[Link]');

2. Con el siguiente comando se logra reproducir el contenido del audio

sound(s,Fs)

Al ejecutar estos dos comando en el modulo WORKSPACE se podrán


visualizar dos datos:

s: señal, este también se representa con la letra “y” el cual se visualiza en los
comandos.
Fs: frecuencia de muestreo

Además se puede visualizar el número de muestras:

Fs=44100

S=266364

Analizando esta tabla, se puede observar que la señal (s) tiene dos columnas (x2)
donde tiene dos canales: canal R (1) y canal L (2) que vendrían a ser izquierda y
derecha.

pág. 14
Obteniendo estos valores se procede a dividir las columnas para poder trabajar
con una señal.

canal_R=s(:,1);
canal_L=s(:,2);

Luego tenemos que obtener el tiempo de reproducción del audio, para ello se
utiliza la siguiente función el cual se divide la longitud de la señal entre la
frecuencia de muestreo

pág. 15
tiempo=size(s,1)/Fs;

Donde los valores:


1: significa obtener la longitud de las filas.
2: se utiliza para sacar la longitud de las columnas

Al ejecutar esta función se obtiene el siguiente valor.

Así se determina el tiempo de reproducción de nuestro audio

Para poder visualizar las señales ploteamos de la siguiente manera.

plot(s);
plot(canal_L);
plot(canal_R);

plot(s)

pág. 16
plot(canal_L)

plot(canal_R

pág. 17
Continuando, graficaremos en función del tiempo para hallar el longitud de x con
respecto al tiempo.

x=0:1/Fs:tiempo;

Esta función se interpreta de la siguiente forma: desde cero con paso de 1 entre la
frecuencia de muestreo hasta tiempo, el ejecutar el código arroja el siguiente valor

Ploteamos esta función pero con respecto al canal_L

plot(x,canal_l);

Como el valor de x es un valor más que la muestra de nuestra señal en nuestra


función de ploteo iniciamos desde 2 hasta el final (end).
plot(x(2:end),canal_L)

Como se muestra en la figura se aprecia que hay un espacio vacío (6-7), para ello
agregamos la función límites para que nos muestra la gráfica desde 0 hasta el
tiempo final de nuestro audio como en la siguiente grafica.

xlim([0 tiempo])

pág. 18
4. APLICACIONES

Al obtener las gráficas del audio y la reproducción de este, se procede a


aplicar las siguientes modificaciones que se pueden realizar al audio “dos
wav”.

4.1. Recorte del audio

Con el siguiente código se puede recortar el audio, para corroborar se


utilizan las funciones de audioplayer y ploteo, que nos permiten visualizar y
escuchar el audio.

s_r=canal_L(1:100000);
player=audioplayer(s_r,Fs);
play(player);
plot(s_r)

pág. 19
S_r: señal de recorte

En este caso se opto el recorte hasta la longitu de muestreo de 100000 con


paso 1 del canal_L.

4.2. Inversión de la señal


Con este código se puede invertir el audio que genera un sonido peculiar
dependiendo del audio introducido.

s_inv=canal_R(end:-1:1); %inversión de la señal en el


canal_R desde el final(end) con paso de -1 hasta 1.
player=audioplayer(s_inv,Fs); %audio invertido
play(player); %reproducción del audio invertido
plot(s_inv); %muestra de la gráfica del audio
invertido

pág. 20
4.3. Control de la velocidad de reproducción del audio

Este código permite controlar la velocidad de reproducción del audio, al


modificar el valor de paso a paso del canal.

%diezmacion
s_di=canal_L([Link]nd); %diezmacion de la señal en el
canal_L desde el inicio con paso de 1 hasta el final(end).
player=audioplayer(s_di,Fs); %audio diezmado
play(player); %reproduccion del audio
plot(s_di); %muestra de la grafica

pág. 21
5. CODIGO COMPLETO

%lectura de señal de audio


[s Fs]=wavread('[Link]');
%reproduccion de audio
sound(s,Fs)
%separacion de columnas
canal_R=s(:,1);
canal_L=s(:,2);
%tiempo de la señal
tiempo=size(s,1)/Fs;
%ploteo de la señal
plot(s);
plot(canal_L);
plot(canal_R);
x=0:1/Fs:tiempo;
plot(x,canal_l);
plot(x(2:end),canal_L)
xlim([0 tiempo])

%recorte de señal
s_r=canal_L(1:100000);
player=audioplayer(s_r,Fs);
play(player);
plot(s_r);

%inversion de la señal
s_inv=canal_R(end:-1:1); %inversion de la señal en el canal_R
desde el final(end) con paso de -1 hasta 1.
player=audioplayer(s_inv,Fs); %audio invertido
play(player); %reproduccion del audio invertido
plot(s_inv); %muestra de la grafica del audio invertido

pág. 22
%diezmacion
s_di=canal_L([Link]nd); %diezmacion de la señal en el
canal_L desde el inicio con paso de 1 hasta el final(end).
player=audioplayer(s_di,Fs); %audio diezmado
play(player); %reproduccion del audio
plot(s_di); %muestra de la grafica

pág. 23
Bibliografía

 Zanuy, M. F. (2000). Tratamiento digital de voz e imagen y aplicación a la


multimedia. Marcombo.
 Oppenheim, A. V., Willsky, A. S., & Nawab, S. H. (1998). Señales y
sistemas. Pearson Educación.
 MATLAB.(2018,octubre).Manual help.
[Link]
 Moya, J. P. A. (2011). Procesamiento digital de señales.

pág. 24

También podría gustarte