Professional Documents
Culture Documents
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.
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.
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.
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.
Una vez declarados estos parámetros, se utiliza la función audiorecorder para crear un objeto de
grabación que tenga las propiedades mencionadas:
Para iniciar la captura, se usa la función recordblocking, indicando además el tiempo durante el cual se
desea capturar sonido (en segundos):
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:
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.
Para reproducir el sonido guardado en un objeto tipo audiorecorder, se utiliza la función play:
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:
Almacenar como variable: Para esto solo es necesario seleccionar la variable que contiene la
información en el Workspace y dar click en guardar:
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:
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.
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.