Read audio file
Create a WAVE file from the example file handel.mat, and read the file back into MATLAB®.
Create a WAVE (.wav) file in the current folder.
load handel.mat filename = 'handel.wav'; audiowrite(filename,y,Fs); clear y Fs
Read the data back into MATLAB using audioread.
[y,Fs] = audioread('handel.wav');
Play the audio.
sound(y,Fs);
Create a FLAC file from the example file handel.mat, and then read only the first 2 seconds.
Create a FLAC (.flac) file in the current folder.
load handel.mat filename = 'handel.flac'; audiowrite(filename,y,Fs);
Read only the first 2 seconds.
samples = [1,2*Fs]; clear y Fs [y,Fs] = audioread(filename,samples);
Play the samples.
sound(y,Fs);
Create a .flac file, read the first 2 seconds of the file and then return audio in the native integer format.
Create a FLAC (.flac) file in the current folder.
load handel.mat filename = 'handel.flac'; audiowrite(filename,y,Fs);
Read only the first 2 seconds and specify the data and view the datatype of the sampled data y. The data type of y is double.
samples = [1,2*Fs]; clear y Fs [y,Fs] = audioread(filename,samples); whos y
Name Size Bytes Class Attributes y 16384x1 131072 double
Request audio data in the native format of the file, and then view the data type of the sampled data y. Note the new data type of y.
[y,Fs] = audioread(filename,'native'); whos y
Name Size Bytes Class Attributes y 73113x1 146226 int16
filename — Name of file to readName of file to read, specified as a character vector or string scalar that includes the file extension.
Depending on the location of your file, filename can
take on one of these forms.
| Current folder | Specify the name of the file in
Example:
| ||||||||
Other folders | If the file is not in the current folder or in
a folder on the MATLAB® path, then specify the full or
relative path name in
Example:
Example:
| ||||||||
| Internet URL | If the file is specified as an internet uniform
resource locator (URL), then
Example:
| ||||||||
Remote Location | If the file is stored at a remote location,
then
Based on the remote
location,
For more information, see Work with Remote Data. Example:
|
Example: 'myFile.mp3'
Example: '../myFile.mp3'
Example: 'C:\temp\myFile.mp3'
audioread supports the following file formats.
| Platform Support | File Format |
|---|---|
| All platforms | WAVE (.wav) |
OGG (.ogg) | |
FLAC (.flac) | |
AU (.au) | |
AIFF (.aiff, .aif) | |
AIFC (.aifc) | |
| Windows® 7 (or later), Macintosh, and Linux® | MP3 (.mp3) |
MPEG-4 AAC (.m4a, .mp4) |
On Windows platforms prior to
Windows 7,
audioread does not read WAVE files with MP3 encoded
data.
On Windows 7 (or later) platforms, audioread might
also read any files supported by Windows Media® Foundation.
On Linux platforms, audioread might also read any
files supported by GStreamer.
audioread can extract audio from MPEG-4
(.mp4, .m4v) video files on
Windows 7 or later, Macintosh, and Linux, and from Windows Media Video (.wmv) and AVI
(.avi) files on Windows 7 (or later) and Linux platforms.
Data Types: char | string
samples — Audio samples to read[1,inf] (default) | two-element vector of positive scalar integersAudio samples to read, specified as a two-element vector of
the form [start,finish], where start and finish are
the first and last samples to read, and are positive scalar integers.
start must be less than or equal
to finish.
start and finish must
be less than the number of audio samples in the file,
You can use inf to indicate the
last sample in the file.
Note
When reading a portion of some MP3 files on Windows 7 platforms, audioread might
read a shifted range of samples. This is due to a limitation in the
underlying Windows Media Foundation framework.
When reading a portion of MP3 and M4A files on Linux platforms, audioread might
read a shifted range of samples. This is due to a limitation in the
underlying GStreamer framework.
Example: [1,100]
Data Types: double
dataType — Data format of audio data, y'double' (default) | 'native'Data format of audio data,y, specified as
one of the following:
'double' | Double-precision normalized samples. |
'native' | Samples in the native format found in the file. |
For compressed audio formats, such as MP3 and MPEG-4 AAC that
do not store data in integer form, 'native' defaults
to 'single'.
Data Types: char | string
y — Audio dataAudio data in the file, returned as an m-by-n matrix,
where m is the number of audio samples read and n is
the number of audio channels in the file.
If you do not specify dataType,
or dataType is 'double', then y is
of type double, and matrix elements are normalized
values between −1.0 and 1.0.
If dataType is 'native',
then y can be one of several MATLAB data types,
depending on the file format and the BitsPerSample value
of the input file. Call audioinfo to determine
the BitsPerSample value of the file.
| File Format | BitsPerSample | Data Type of y | Data Range of y |
|---|---|---|---|
WAVE (.wav) | 8 | uint8 | 0 ≤ y ≤ 255 |
| 16 | int16 | -32768 ≤ y ≤ +32767 | |
| 24 | int32 | -2^31 ≤ y ≤ 2^31–1 | |
| 32 | int32 | -2^31 ≤ y ≤ 2^31–1 | |
| 32 | single | -1.0 ≤ y ≤ +1.0 | |
| 64 | double | -1.0 ≤ y ≤ +1.0 | |
WAVE (.wav)
(u-law) | 8 | int16 | -32124 ≤ y ≤
+32124 |
WAVE (.wav)
(A-law) | 8 | int16 | -32256 ≤ y ≤
+32256 |
FLAC (.flac) | 8 | uint8 | 0 ≤ y ≤ 255 |
| 16 | int16 | -32768 ≤ y ≤ +32767 | |
| 24 | int32 | -2^31 ≤ y ≤ 2^31–1 | |
MP3 (.mp3), MPEG-4 AAC (.m4a, .mp4),
OGG (.ogg), and certain compressed WAVE files | N/A | single | -1.0 ≤ y ≤ +1.0 |
Note
Where y is single or double and
the BitsPerSample is 32 or 64, values in y might
exceed −1.0 or +1.0.
Fs — Sample rateSample rate, in hertz, of audio data y, returned
as a positive scalar.
For MP3, MPEG-4 AAC, and AVI audio files on Windows 7 or
later and Linux platforms, audioread might
read fewer samples than expected. On Windows 7 platforms, this
is due to a limitation in the underlying Media Foundation framework.
On Linux platforms, this is due to a limitation in the underlying
GStreamer framework. If you require sample-accurate reading, work
with WAV or FLAC files.
On Linux platforms, audioread reads
MPEG-4 AAC files that contain single-channel data as stereo data.
You have a modified version of this example. Do you want to open this example with your edits?