Main Content


Write audio file



audiowrite(filename,y,Fs) writes a matrix of audio data, y, with sample rate Fs to a file called filename. The filename input also specifies the output file format. The output data type depends on the output file format and the data type of the audio data, y.


audiowrite(filename,y,Fs,Name,Value) uses additional options specified by one or more Name,Value pair arguments.


collapse all

Create a WAVE file from the example file handel.mat, and read the file back into MATLAB®.

Write a WAVE (.wav) file in the current folder.

load handel.mat

filename = 'handel.wav';
clear y Fs

Read the data back into MATLAB using audioread.

[y,Fs] = audioread(filename);

Listen to the audio.


Create a FLAC file from the example file handel.mat and specify the number of output bits per sample and a comment.

load handel.mat

filename = 'handel.flac';
'Comment','This is my new audio file.');
clear y Fs

View information about the new FLAC file by using the audioinfo function.

info = audioinfo(filename) ;

The info structure contains the following information fields: Filename, CompressionMethod, NumChannels, SampleRate, TotalSamples, Duration, Title, Comment, Artist, and BitsPerSample.

Input Arguments

collapse all

Name of file to write, or the full path to the file, specified as a character vector or string scalar that includes the file extension.

Depending on the location you are writing to, filename can take on one of these forms.



Current folder

To write to the current folder, specify the name of the file in filename.


Other folders

To write to a folder different from the current folder, specify the full or relative path name in filename.

Example: 'C:\myFolder\sample_audio.mp3'

Example: 'myFolder\sample_audio.wav'

Remote Location

To write to a remote location, filename must contain the full path of the file specified as a uniform resource locator (URL) of the form:


Based on your remote location, scheme_name can be one of the values in this table.

Remote Locationscheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs

For more information, see Work with Remote Data.

Example: 's3://bucketname/path_to_file/sample_audio.mp3'

audiowrite supports the following file formats.

Platform SupportFile Format
All platformsFLAC (.flac)
OGG (.ogg)
OPUS (.opus)
WAVE (.wav)
Windows® and MacMPEG-4 AAC (.m4a, .mp4)

Example: 'myFile.m4a'

Example: '../myFile.m4a'

Example: 'C:\temp\myFile.m4a'

When writing AAC files on Windows, audiowrite pads the front and back of the output signal with extra samples of silence. The Windows AAC encoder also places a very sharp fade-in and fade-out on the audio. This results in audio with an increased number of samples after being written to disk.

Data Types: char | string

Audio data to write, specified as an m-by-n real matrix, where m is the number of audio samples to write and n is the number of audio channels to write.

If either m or n is 1, then audiowrite assumes that this dimension specifies the number of audio channels, and the other dimension specifies the number of audio samples.

The maximum number of channels depends on the file format.

File FormatMaximum Number of Channels
WAVE (.wav)1024
OGG (.ogg)255
OPUS (.opus)255
FLAC (.flac)8
MPEG-4 AAC (.m4a, .mp4)2

The valid range for the data in y depends on the data type of y.

Data Type of yValid Range for y
uint80 ≤ y ≤ 255
int16-32768 ≤ y ≤ +32767
int32-2^31 ≤ y ≤ 2^31–1
single-1.0 ≤ y ≤ +1.0
double-1.0 ≤ y ≤ +1.0

Data beyond the valid range is clipped.

If y is single or double, then audio data in y should be normalized to values in the range −1.0 and 1.0, inclusive.

Data Types: single | double | int16 | int32 | uint8

Sample rate, in hertz, of audio data y, specified as a positive integer scalar greater than 0. When writing to .opus files, audiowrite supports only sample rates of 48000, 24000, 16000, 12000, or 8000. When writing to .m4a or .mp4 files on Windows platforms, audiowrite supports only samples rates of 48000 and 44100.

Example: 44100

Data Types: double

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: 'Title','Symphony No. 9','Artist','My Orchestra' instructs audiowrite to write an audio file with the title “Symphony No. 9” and the artist information “My Orchestra.”

Number of output bits per sample, specified as the comma-separated pair consisting of 'BitsPerSample' and an integer.

Only available for WAVE (.wav) and FLAC (.flac) files. For FLAC files, only 8, 16, or 24 bits per sample are supported.

Example: 'BitsPerSample',32

Number of kilobits per second (kbit/s) used for compressed audio files, specified as the comma-separated pair consisting of 'BitRate' and an integer. On Windows 7 or later, the only valid values are 96, 128, 160, and 192.

In general, a larger BitRate value results in higher compression quality.

Only available for MPEG-4 (.m4a, .mp4) files.

Example: 'BitRate',96

Quality setting for the Ogg Vorbis and Ogg Opus compression, specified as the comma-separated pair consisting of 'Quality' and a number in the range [0 100], where 0 is lower quality and higher compression, and 100 is higher quality and lower compression.

Only available for OGG (.ogg) and OPUS (.opus) files.

Example: 'Quality',25

Title information, specified as the comma-separated pair consisting of 'Title' and a character vector or string scalar.

Data Types: char | string

Artist information, specified as the comma-separated pair consisting of 'Artist' and a character vector or string scalar.

Data Types: char | string

Additional information, specified as the comma-separated pair consisting of 'Comment' and a character vector or string scalar.

Data Types: char | string


On Mac platforms, audiowrite writes metadata to FLAC, OGG, OPUS, and WAVE files only, and will not write the 'Title', 'Author', or 'Comment' fields to MPEG-4 AAC files.


The output data type is determined by the file format, the data type of y, and the specified output BitsPerSample.

File FormatsData Type of yOutput BitsPerSampleOutput Data Type
WAVE (.wav), uint8, int16, int32, single, double8uint8
uint8, int16, int3232int32
single, double32single
single, double64double
FLAC (.flac)uint8, int16, int32, single, double8int8
MPEG-4 (.m4a, .mp4),
OGG (.ogg),
OPUS (.opus)
uint8, int16, int32, single, doubleN/Asingle

Extended Capabilities

Version History

Introduced in R2012b

expand all