You are on page 1of 3

UABC Señales y Sistemas

TUTORIAL DE USO DE LA TARJETA DE SONIDO PARA CAPTURA DE SEÑALES EN MATLAB

Introducción
Una de las formas más sencillas de introducir señales del mundo real a la computadora es mediante la
tarjeta de sonido. Un micrófono nos permite captar las vibraciones analógicas del aire y la tarjeta de
sonido realiza un muestreo de estas, haciendo una representación discreta del sonido captado.

Matlab, al ser una plataforma diseñada para el manejo de datos, nos permite realizar cualquier cantidad
de análisis y procesos sobre la información, la cual puede provenir de una fuente externa como lo es una
señal de audio. En este tutorial, se mostrará una de las formas más sencillas de capturar y reproducir
señales de sonido en Matlab, así como de almacenar la información en caso de que sea necesario.

Antes de empezar con la captura y discretización de señales, es necesario tener conocimiento sobre
algunos de los parámetros básicos que se manejan al momento de realizar este tipo de operaciones.

Discretización de señales
La discretización se refiere al proceso mediante el cual una señal continua o analógica, se convierte en
una señal discreta. Esto se realiza tomando muestras de la señal original y representándolas en unidades
finitas, tanto en tiempo como en amplitud.

Los parámetros más importantes al momento de convertir una señal del mundo real (analógica) a un
entorno digital son los siguientes:

Tasa de Muestreo: Es la cantidad de muestras que se tomaran, por unidad de tiempo, de la señal
original. Como unidad de tiempo, comúnmente se utiliza el segundo, por lo que la tasa de muestreo
puede expresarse en Hertz (Hz); por lo tanto, también se le conoce como Frecuencia de Muestreo (Fs).
Una frecuencia de muestreo mayor nos produce una señal discreta más parecida a su contraparte
analógica, aunque la cantidad de información que se debe de manipular será más grande.
En señales de audio, los valores más comunes de frecuencia de muestreo que se manejan son 8000Hz,
11025Hz, 22050Hz, 44100Hz y 48000Hz.

Fig. 1 Muestreo de una señal continúa

Nota: Al momento de seleccionar una frecuencia de muestreo, es importante considerar el criterio de Nyquist, el cual
básicamente nos dice que la frecuencia de muestreo debe de ser al menos del doble de la frecuencia máxima de la señal que se
desea muestrear, a fin de que esta pueda ser reproducida o reconstruida en su totalidad. Por ejemplo, si se desea muestrear
una señal de voz humana con calidad de llamada telefónica (ancho de banda de aproximadamente 4kHz), la frecuencia de
muestreo debe de ser al menos de 8000Hz.

Total de Muestras: Representa la cantidad total de muestras obtenidas y depende directamente de la


frecuencia de muestreo y del tiempo durante el cual se haya realizado la captura:

Total de muestras = Frecuencia de Muestreo × Duración de la captura

Captura de Señales en Matlab 1


UABC Señales y Sistemas

Resolución: Al momento de tomar las muestras de la señal analógica, se debe de cuantificar la amplitud
de las muestras, a fin de establecer los rangos de valores que estas pueden tener, así como el
incremento mínimo de amplitud que puede existir. Al estar hablando de señales digitales, la resolución
suele expresarse en bits. Para señales de audio, los valores de resolución que se manejan comúnmente
son 8 bits, 16 bits y 24 bits.

Fig. 2 Cuantificación de muestras

Número de Canales: El número de canales nos indica cuantas señales estaremos discretizando
simultáneamente. En el caso del sonido, cuando se tiene solamente un canal de información se dice que
es un sonido monoaural. También existe el sonido estéreo (2 canales), cuadrafónico (4 canales), etc.

Captura de Señales de audio en Matlab


Como se menciono anteriormente, para capturar una señal se deben definir las características de la
captura:

>> Fs = 8000; %Frecuencia de muestreo = 8000 muestras por segundo


>> nBits = 16; %Resolución = 16 bits
>> nChan = 1; %Numero de canales = 1

Una vez declarados estos parámetros, se utiliza la función audiorecorder para crear un objeto de
grabación que tenga las propiedades mencionadas:

>> grabación = audiorecorder(Fs, nBits, nChan);

Para iniciar la captura, se usa la función recordblocking, indicando además el tiempo durante el cual se
desea capturar sonido (en segundos):

>> tCaptura = 5; %Capturar información durante 5 segundos


>> recordblocking(grabación, tCaptura);

Para extraer la información de sonido del objeto tipo audiorecorder y guardarlo en un vector (nChan =
1) o matriz (nChan = 2), se usa la función getaudiodata:

>> sonido = getaudiodata(grabación);

Con lo anterior se obtendrá una variable que contiene la información de la señal capturada. La longitud
de este vector o matriz será igual al total de muestras capturadas. Una vez extraída la información de
audio, se puede manipular como cualquier variable de Matlab.

Reproducción de señales de audio en Matlab

Captura de Señales en Matlab 2


UABC Señales y Sistemas

Para reproducir el sonido guardado en un objeto tipo audiorecorder, se utiliza la función play:

>> reproducción = play(grabación);


O bien:
>> play(grabación);

Para reproducir la información guardada en una variable numérica, se utiliza la función sound. En este
caso es necesario indicar la frecuencia de muestreo a la cual queremos reproducir:

>> sound(sonido, Fs); %Reproducir la información contenida en la variable sonido

Almacenamiento de señales de audio


Cuando se desea almacenar alguna de las señales capturadas, esto puede hacerse de varias formas:

Almacenar como variable: Para esto solo es necesario seleccionar la variable que contiene la
información en el Workspace y dar click en guardar:

Fig. 3 Guardar señal como variable

Esta variable puede cargarse posteriormente dando click en el botón Import data en la parte superior de
la ventana del Workspace.

Almacenar como archivo de sonido: La información de sonido puede almacenarse en un archivo .wav,
el cual puede ser reproducido por cualquier programa de reproducción de medios sin la necesidad de
ejecutarlo desde Matlab. Para esto se utiliza la función wavwrite:

>> wavwrite (sonido, Fs, nBits, ‘nombre_del_archivo’);

La variable sonido es la que contiene la información de audio que se desea almacenar, y se produce un
archivo WAVE que, como ya se mencionó, puede reproducirse de forma externa a Matlab.

Leer información de un archivo de sonido


Si se desea leer la información de sonido de un archivo WAVE y almacenarse en una variable para su
manipulación, se utiliza la función wavread:

>> [sonido, Fs, nBits] = wavread(nombre_de_archivo.wav);

Con esto se obtiene una variable sonido con la información de audio, una variable Fs con la tasa de
muestreo a la cual se generó el archivo, y la variable nBits que indica la resolución de las muestras
contenidas en el mismo.

Captura de Señales en Matlab 3

You might also like