Tratamiento de audio con MATLAB

Apéndice H
Tatamiento del audio con
MALAB
Hoy día, todas las computadoras incluyen hardware para captura y reproducción de audio. Ahora bien, en MATLAB se incluen funciones para aprovechar
ls cpacidades del mencionado hardware.
Las funciones que a continuación se describen, operan sobre cualquier sistema
operativo sobre el que se monte MATLAB.
H.1.
H.1.1.
Funciones para captura de audio
audiorecorder
La función «audiorecorder» crea una estructura de datos que contiene, entre diversas informaciones, la frecuencia de muestreo, la cantidad de bits por
muestra, el número de canales que se usarán para grabar o reproducir sonido.
El formato de esta función es:
recorderObj = audiorecorder(Fs,nBits,nChannels)
La estructura que se crea con la función también contiene una búfer para
almacenar audio capturado.
H.1.2.
recordblocking
La función «recordblocking» registra audio desde un dispositivo de entrada,
como el micrófono, a una estructura creada con la función «audiorecorder ». Esta
función no retorna el control hasta que no se ha completado la grabación del
audio. El formato de esta función es:
recordblocking(recorderObj, length)
En donde:
389
390
APÉNDICE H. TATAMIENTO DEL AUDIO CON MALAB
Tipo de dato
int8
uint8
int16
single
double
Intervalo de valores
-128 a 127
0 a 255
-32768 a 32767
-1 a 1 en punto flotante (16 bits)
-1 a 1 en punto flotante (32 bits)
Cuadro H.1: Tipos de dato devueltos por función «getaudiodata».
recorderObj es un objeto creado con la función «audiorecorder ».
length Es el tiempo de grabación en segundos
H.1.3.
getaudiodata
La función «getaudiodata» copia las muestras grabadas en el búfer de la
estructura «audiorecorder» a una matriz. De esta forma el programador puede
procesar la señal de audio. La función también puede efectuar un cambio en el
tipo de dato que devuelve. El formato de esta función es:
y = getaudiodata(recorderObj)
y = getaudiodata(recorderObj, dataType)
Lo tipos de dato que pueden ser devueltos pueden observars en el cuatro de
la tabla H.1.
H.2.
H.2.1.
Funciones de reproducción de audio
play
La función «play» crea una estructura de datos capaz de reproducir audio
grabado. El formato de esta función es:
player = play(recObj)
player = play(recObj, [start stop])
La función «play» también reproduce el audio almacenado en el búfer de la
estructura «audiorecorder».
H.2.2.
audioplayer
La función «audioplayer » crea una esructra de datos capaz de reproducir
audio grabado. El formato de esta función es:
player=audioplayer(Y,fs)
player=audioplayer(recObj)
En donde:
H.3. EJEMPLO, GABADOR-REPRODUCTOR DE AUDIO
391
Y es una matriz con muestras de audio, ya sea un canal o ambos canales.
Los tipos de dato válidos pueden verse en la tabla H.1.
fs es la frecuencia de muestreo
recObj es la estructura «audiorecorder»
H.3.
H.3.1.
Ejemplo, gabador-reproductor de audio
Ejemplo: grabación y reproducción
A continuación se ofrece un pequeño codigo que permite la grabación de
audio por 5 segundos con calidad de CD y luego lo reproduce:
myVoice = audiorecorder(44100,16,5);
input(’Presiona -enter- para empezar grbacion’);
recordblocking(myVoice, 5);
input(’Grabado. Prsione -enter- para reproducir...’);
play(myVoice);
H.3.2.
Ejemplo: grabación, reproducción y exhibición de
la forma de onda
El ejemplo siguiente permite, además e grabar y reproducir audio, visualizarla forma de onda.
% Grava voz por 5 segundos
recObj = audiorecorder;
input(’Presione -enter- para empezar a grabar’)
recordblocking(recObj, 5);
disp(’Fin de grabacion’);
% Reproduce el sonido
play(recObj);
% Almacena las muestras en un arreglo.
myRecording = getaudiodata(recObj);
% Plot the waveform.
plot(myRecording);