Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

wavread - Read WAVE (.

wav) sound file


Graphical Interface
As an alternative to wavread, use the Import Wizard. To activate the Import Wizard, select File
> Import Data.

Syntax
y = wavread(filename)
[y, Fs] = wavread(filename)
[y, Fs, nbits] = wavread(filename)
[y, Fs, nbits, opts] = wavread(filename)
[...] = wavread(filename, N)
[...] = wavread(filename, [N1 N2])
[...] = wavread(..., fmt)
siz = wavread(filename,'size')

Description
y = wavread(filename) loads a WAVE file specified by the string filename, returning the
sampled data in y. If filename does not include an extension, wavread appends .wav.

[y, Fs] = wavread(filename) returns the sample rate (Fs) in Hertz used to encode the data in
the file.

[y, Fs, nbits] = wavread(filename) returns the number of bits per sample (nbits).

[y, Fs, nbits, opts] = wavread(filename) returns a structure opts of additional


information contained in the WAV file. The content of this structure differs from file to file.
Typical structure fields include opts.fmt (audio format information) and opts.info (text that
describes the title, author, etc.).

[...] = wavread(filename, N) returns only the first N samples from each channel in the file.

[...] = wavread(filename, [N1 N2]) returns only samples N1 through N2 from each
channel in the file.

[...] = wavread(..., fmt) specifies the data format of y used to represent samples read
from the file. fmt can be either of the following values, or a partial match (case-insensitive):

'double' Double-precision normalized samples (default).


'native' Samples in the native data type found in the file.
siz = wavread(filename,'size') returns the size of the audio data contained in filename
instead of the actual audio data, returning the vector siz = [samples channels].

Output Scaling

The range of values in y depends on the data format fmt specified. Some examples of output
scaling based on typical bit-widths found in a WAV file are given below for both 'double' and
'native' formats.

Native Formats

Number of Bits MATLAB Data Type Data Range


8 uint8 (unsigned integer) 0 <= y <= 255
16 int16 (signed integer) -32768 <= y <= +32767
24 int32 (signed integer) -2^23 <= y <= 2^23-1
32 single (floating point) -1.0 <= y < +1.0

Double Formats

Number of MATLAB Data Data Range


Bits Type
N<32 double -1.0 <= y < +1.0
N=32 double -1.0 <= y <= +1.0
Note: Values in y might exceed -1.0 or +1.0 for the case of
N=32 bit data samples stored in the WAV file.

wavread supports multi-channel data, with up to 32 bits per sample.

wavread supports Pulse-code Modulation (PCM) data format only.

Examples
Create a WAV file from the demo file handel.mat, and read portions of the file back into
MATLAB.

% Create WAV file in current folder.


load handel.mat

hfile = 'handel.wav';
wavwrite(y, Fs, hfile)
clear y Fs
% Read the data back into MATLAB, and listen to audio.
[y, Fs, nbits, readinfo] = wavread(hfile);
sound(y, Fs);

% Pause before next read and playback operation.


duration = numel(y) / Fs;
pause(duration + 2)

% Read and play only the first 2 seconds.


nsamples = 2 * Fs;
[y2, Fs] = wavread(hfile, nsamples);
sound(y2, Fs);
pause(4)

% Read and play the middle third of the file.


sizeinfo = wavread(hfile, 'size');

tot_samples = sizeinfo(1);
startpos = tot_samples / 3;
endpos = 2 * startpos;

[y3, Fs] = wavread(hfile, [startpos endpos]);


sound(y3, Fs);

wavwrite - Write WAVE (.wav) sound file


Syntax
wavwrite(y,filename)
wavwrite(y,Fs,filename)
wavwrite(y,Fs,N,filename)

Description
wavwrite(y,filename) writes the data stored in the variable y to a WAVE file called
filename. The filename input is a string enclosed in single quotes. The data has a sample rate
of 8000 Hz and is assumed to be 16-bit. Each column of the data represents a separate channel.
Therefore, stereo data should be specified as a matrix with two columns.

wavwrite(y,Fs,filename) writes the data stored in the variable y to a WAVE file called
filename. The data has a sample rate of Fs Hz and is assumed to be 16-bit.

wavwrite(y,Fs,N,filename) writes the data stored in the variable y to a WAVE file called
filename. The data has a sample rate of Fs Hz and is N-bit, where N is 8, 16, 24, or 32.
Input Data Ranges

The range of values in y depends on the number of bits specified by N and the data type of y. The
following tables list the valid input ranges based on the value of N and the data type of y.

If y contains integer data:

N Bits y Data Type y Data Range Output Format


8 uint8 0 <= y <= 255 uint8

16 int16 –32768 <= y <= +32767 int16


24 int32 –2^23 <= y <= 2^23 – 1 int32

If y contains floating-point data:

N Bits y Data Type y Data Range Output Format


8 single or double –1.0 <= y < +1.0 uint8

16 single or double –1.0 <= y < +1.0 int16

24 single or double –1.0 <= y < +1.0 int32

32 single or double –1.0 <= y <= +1.0 single

For floating point data where N < 32, amplitude values are clipped to the range –1.0 <= y < +1.0.

Note   8-, 16-, and 24-bit files are type 1 integer pulse code modulation (PCM). 32-bit
files are written as type 3 normalized floating point.

wavfinfo - Information about WAVE (.wav)


sound file
Syntax
[m d] = wavfinfo(filename)

Description
[m d] = wavfinfo(filename) returns information about the contents of the WAVE sound file
specified by the string filename. Enclose the filename input in single quotes.

mis the string 'Sound (WAV) file', if filename is a WAVE file. Otherwise, it contains an
empty string ('').

d is a string that reports the number of samples in the file and the number of channels of audio
data. If filename is not a WAVE file, it contains the string 'Not a WAVE file'.

You might also like