To record data from an audio input device (such as a microphone connected to your system) for processing in MATLAB®:
record returns immediate control
to the calling function or the command prompt even as recording proceeds.
Specify the length of the recording in seconds, or end the recording
stop method. Optionally, call the
The recording is performed asynchronously.
recordblocking retains control
until the recording is complete. Specify the length of the recording
in seconds. The recording is performed synchronously.
Create a numeric array corresponding to the signal
data using the
The following examples show how to use the
This example shows how to record microphone input, play back the recording, and store the recorded audio signal in a numeric array. You must first connect a microphone to your system.
audiorecorder object named
recording audio input.
recObj = audiorecorder
recObj = audiorecorder with properties: SampleRate: 8000 BitsPerSample: 8 NumberOfChannels: 1 DeviceID: -1 CurrentSample: 1 TotalSamples: 0 Running: 'off' StartFcn:  StopFcn:  TimerFcn:  TimerPeriod: 0.0500 Tag: '' UserData:  Type: 'audiorecorder'
audiorecorder creates an 8000 Hz, 8-bit,
Record your voice for 5 seconds.
disp('Start speaking.') recordblocking(recObj, 5); disp('End of Recording.');
Play back the recording.
Store data in double-precision array,
y = getaudiodata(recObj);
Plot the audio samples.
To record audio independently from two different sound cards, with a microphone connected to each:
audiodevinfo to list the available
sounds cards. For example, this code returns a structure array containing
all input and output audio devices on your system:
info = audiodevinfo;
For example, this code creates the
for recording a single channel from device 3 at 44.1 kHz and 16 bits
per sample. The
is for recording a single channel from device 4 at 48 kHz:
recorder1 = audiorecorder(44100,16,1,3); recorder2 = audiorecorder(48000,16,1,4);
Record each audio channel separately.
record(recorder1); record(recorder2); pause(5);
recorddoes not block.
Stop the recordings.
By default, an
audiorecorder object uses
a sample rate of 8000 hertz, a depth of 8 bits (8 bits per sample),
and a single audio channel. These settings minimize the required amount
of data storage. For higher quality recordings, increase the sample
rate or bit depth.
For example, typical compact disks use a sample rate of 44,100
hertz and a 16-bit depth. Create an
to record in stereo (two channels) with those settings:
myRecObj = audiorecorder(44100, 16, 2);
For more information on the available properties and values,
After you import or record audio, MATLAB supports several ways to listen to the data:
load chirp.mat; sound(y, Fs);
For more flexibility during playback, including the
ability to pause, resume, or define callbacks, use the
audioplayer function. Create an
then call methods to play the audio. For example, listen to the
load gong.mat; gong = audioplayer(y, Fs); play(gong);
For an additional example, see Record or Play Audio within a Function.
If you do not specify the sample rate,
back at 8192 hertz. For any playback, specify smaller sample rates
to play back more slowly, and larger sample rates to play back more
Note: Most sound cards support sample rates between approximately 5,000 and 48,000 hertz. Specifying sample rates outside this range can produce unexpected results.
If you create an
inside a function, the object exists only for the duration of the
function. For example, create a player function called
a simple callback function
function playFile(myfile) load(myfile); obj = audioplayer(y, Fs); obj.TimerFcn = 'showSeconds'; obj.TimerPeriod = 1; play(obj); end function showSeconds disp('tick') end
playFile from the command prompt to
play the file
At the recorded sample rate of 8192 samples per second, playing
the 73113 samples in the file takes approximately 8.9 seconds. However,
playFile function typically ends before playback
completes, and clears the
To ensure complete playback or recording, consider the following options:
record. The blocking
methods retain control until playing or recording completes. If you
block control, you cannot issue any other commands or methods (such
resume) during the
playback or recording.
Create an output argument for your function that generates
an object in the base workspace. For example, modify the
to include an output argument:
function obj = playFile(myfile)
Call the function:
h = playFile('handel.mat');
h exists in the base workspace, you
can pause playback from the command prompt: