Вы находитесь на странице: 1из 2

4/4/2019 Grabar y reproducir audio - MATLAB & Simulink - MathWorks América Latina

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Grabar y reproducir audio


Grabar audio
Para grabar datos desde un dispositivo de entrada de audio (como un micrófono conectado a su sistema) para su
procesamiento en MATLAB®:

1. Cree un objeto audiorecorder .


2. Llame al método record o recordblocking , donde:
• record devuelve el control inmediato a la función de llamada o al símbolo del sistema incluso cuando se
procede a la grabación. Especifique la longitud de la grabación en segundos o finalice la grabación con el
método stop . Opcionalmente, llame a los métodos pause y resume . La grabación se realiza de forma
asincrónica.
• recordblocking retiene el control hasta completar la grabación. Especifique la duración de la grabación en
segundos. La grabación se realiza de forma sincrónica.

3. Cree una matriz numérica que corresponda a los datos de la señal mediante el método getaudiodata .

En los ejemplos siguientes se muestra cómo utilizar los métodos recordblocking y record .

Grabar entrada de micrófono


Este ejemplo muestra cómo grabar la entrada de micrófono, reproducir la grabación y almacenar la señal de audio
grabada en una matriz numérica. Primero debe conectar un micrófono a su sistema.

Cree un objeto audiorecorder denominado recObj para registrar la entrada de audio.

recObj = audiorecorder

recObj = audiorecorder with properties: SampleRate: 8000 BitsPerSample: 8 NumberOfChannels: 1 DeviceID: -1


audiorecorder crea un objeto audiorecorder de 8000 Hz, 8 bits y 1 canal.

Graba tu voz durante 5 segundos.

disp('Start speaking.') recordblocking(recObj, 5); disp('End of Recording.');

Reproduzca la grabación.

play(recObj);

Almacene datos en arreglo de discos de doble precisión, y.

y = getaudiodata(recObj);

Trazar las muestras de audio.

plot(y);

Grabe dos canales de diferentes tarjetas de sonido


Para grabar audio independientemente de dos tarjetas de sonido diferentes, con un micrófono conectado a cada
uno:

1. Llame a audiodevinfo para listar las tarjetas de sonidos disponibles. Por ejemplo, este código devuelve una
matriz de estructura que contiene todos los dispositivos de audio de entrada y salida del sistema:

info = audiodevinfo;

identifique las tarjetas de sonido que desea utilizar por su nombre, y anote sus valores ID .
2. Crear dos objetos audiorecorder . Por ejemplo, este código crea el objeto audiorecorder , recorder1, para
grabar un solo canal desde el dispositivo 3 a 44,1 kHz y 16 bits por muestra. El objeto audiorecorder ,
recorder2, es para grabar un solo canal desde el dispositivo 4 a 48 kHz:

recorder1 = audiorecorder(44100,16,1,3); recorder2 = audiorecorder(48000,16,1,4);

3. Grabe cada canal de audio por separado.

record(recorder1); record(recorder2); pause(5);

Las grabaciones se producen simultáneamente, ya que la primera llamada a record no se bloquea.


4. Detenga las grabaciones.

stop(recorder1); stop(recorder2);

Especifique la calidad de la grabación


De forma predeterminada, un objeto audiorecorder utiliza una velocidad de muestreo de 8000 Hertz, una
profundidad de 8 bits (8 bits por muestra) y un único canal de audio. Estos ajustes minimizan la cantidad requerida
de almacenamiento de datos. Para grabaciones de mayor calidad, aumente la velocidad de muestreo o la
profundidad de bits.

Por ejemplo, los discos compactos típicos utilizan una velocidad de muestreo de 44.100 Hertz y una profundidad de
16 bits. Cree un objeto audiorecorder para grabar en estéreo (dos canales) con esos ajustes:

myRecObj = audiorecorder(44100, 16, 2);

Para obtener más información sobre las propiedades y los valores disponibles, consulte la página de referencia de
audiorecorder .

Reproducir audio
Después de importar o grabar audio, MATLAB admite varias formas de escuchar los datos:

https://la.mathworks.com/help/matlab/import_export/record-and-play-audio.html 1/2
4/4/2019 Grabar y reproducir audio - MATLAB & Simulink - MathWorks América Latina
• Para una reproducción simple usando una sola llamada de función, use sound o soundsc. Por ejemplo, cargue
un archivo Mat de ejemplo que contenga datos de velocidad de muestreo y señal y escuche el audio:
load chirp.mat; sound(y, Fs);

• Para mayor flexibilidad durante la reproducción, incluida la posibilidad de pausar, reanudar o definir
devoluciones de llamada, utilice la función audioplayer . Cree un objeto audioplayer y, a continuación, llame
a métodos para reproducir el audio. Por ejemplo, escuche el archivo de ejemplo gong :
load gong.mat; gong = audioplayer(y, Fs); play(gong);

Para obtener un ejemplo adicional, consulte Grabar o reproducir audio dentro de una función.

Si no especifica la frecuencia de muestreo, sound se reproduce a 8192 Hertz. Para cualquier reproducción,
especifique las tasas de muestreo más pequeñas para reproducirlos más lentamente y las velocidades de muestreo
más grandes para reproducirlos más rápidamente.

 Nota
La mayoría de las tarjetas de sonido admiten velocidades de muestreo entre aproximadamente 5.000 y
48.000 Hertz. La especificación de las tasas de muestreo fuera de este intervalo puede producir resultados
inesperados.

Grabar o reproducir audio dentro de una función


Si crea un objeto audioplayer o audiorecorder dentro de una función, el objeto sólo existe durante la duración de
la función. Por ejemplo, cree una función de reproductor denominada playFile y una función de devolución de
llamada simple showSeconds:

function playFile(myfile) load(myfile); obj = audioplayer(y, Fs); obj.TimerFcn

Llame a playFile desde el símbolo del sistema para reproducir el archivo handel.mat:

playFile('handel.mat')

En la frecuencia de muestreo registrada de 8192 muestras por segundo, la reproducción de las muestras 73113 en
el archivo toma aproximadamente 8,9 segundos. Sin embargo, la función playFile suele terminar antes de que se
complete la reproducción y borra el objeto audioplayer obj.

Para asegurar la reproducción completa o la grabación, tenga en cuenta las siguientes opciones:

• Utilice playblocking o recordblocking en lugar de play o record. Los métodos de bloqueo retienen el
control hasta que se complete la reproducción o grabación. Si bloquea el control, no podrá emitir ningún otro
comando o método (como pause o resume) durante la reproducción o grabación.
• Cree un argumento de salida para la función que genera un objeto en el espacio de trabajo base. Por ejemplo,
modifique la función playFile para incluir un argumento de salida:
function obj = playFile(myfile)

Llame a la función:
h = playFile('handel.mat');

Dado que h existe en el espacio de trabajo base, puede pausar la reproducción desde el símbolo del sistema:
pause(h)

Consulte también
audioplayer | audiorecorder | sound | soundsc

Temas relacionados
• Leer y escribir archivos de audio

https://la.mathworks.com/help/matlab/import_export/record-and-play-audio.html 2/2

Вам также может понравиться