![]() | |
Filename extension | .wav .wave |
---|---|
Internet media type | |
Type code | WAVE |
Uniform Type Identifier (UTI) | com.microsoft.waveform-audio |
Developed by | IBM andMicrosoft |
Initial release | August 1991; 33 years ago (1991-08)[3] |
Latest release | Multiple Channel Audio Data and WAVE Files 7 March 2007; 18 years ago (2007-03-07) (update)[4][5][failed verification] |
Type of format | Audio file format,container format |
Extended from | RIFF |
Extended to | BWF,RF64 |
Waveform Audio File Format (WAVE, orWAV due to itsfilename extension;[3][6][7] pronounced/wæv/ or/weɪv/[8]) is anaudio file format standard for storing an audiobitstream onpersonal computers. The format was developed and published for the first time in 1991 byIBM andMicrosoft. It is the main format used onMicrosoft Windows systems foruncompressed audio. The usual bitstream encoding is thelinear pulse-code modulation (LPCM) format.
WAV is an application of theResource Interchange File Format (RIFF)bitstream format method for storing data inchunks, and thus is similar to the8SVX and theAudio Interchange File Format (AIFF) format used onAmiga andMacintosh computers, respectively.
The WAV file is an instance of aResource Interchange File Format (RIFF) defined byIBM andMicrosoft.[3] The RIFF format acts as awrapper for variousaudio coding formats.
Though a WAV file can containcompressed audio, the most common WAV audio format is uncompressed audio in thelinear pulse-code modulation (LPCM) format. LPCM is also the standard audio coding format foraudio CDs, which store two-channel LPCM audiosampled at44.1 kHz with 16bits per sample. Since LPCM is uncompressed and retains all of the samples of an audio track, professional users or audio experts may use the WAV format with LPCM audio for maximum audio quality.[9] WAV files can also be edited and manipulated with relative ease using software.
On Microsoft Windows, the WAV format supports compressed audio using theAudio Compression Manager (ACM). Any ACMcodec can be used to compress a WAV file. Theuser interface (UI) for ACM may be accessed through various programs that use it, includingSound Recorder in some versions of Windows.
Beginning withWindows 2000, aWAVE_FORMAT_EXTENSIBLE
header was defined which specifiesmultiple audio channel data along with speaker positions, eliminates ambiguity regarding sample types and container sizes in the standard WAV format and supports defining custom extensions to the format.[4][5][10]
A RIFF file is a tagged file format. It has a specific container format (achunk) with a header that includes a four-character tag (FourCC) and the size (number of bytes) of the chunk. The tag specifies how the data within the chunk should be interpreted, and there are several standard FourCC tags. Tags consisting of all capital letters are reserved tags. The outermost chunk of a RIFF file has aRIFF
tag; the first four bytes of chunk data are an additional FourCC tag that specify the form type and are followed by a sequence of subchunks. In the case of a WAV file, the additional tag isWAVE
. The remainder of the RIFF data is a sequence of chunks describing the audio information.
The advantage of a tagged file format is that the format can be extended later while maintainingbackward compatibility.[11] The rule for a RIFF (or WAV) reader is that it should ignore any tagged chunk that it does not recognize.[12] The reader will not be able to use the new information, but the reader should not be confused.
The specification for RIFF files includes the definition of anINFO
chunk. The chunk may include information such as the title of the work, the author, the creation date, and copyright information. Although theINFO
chunk was defined for RIFF in version 1.0, the chunk was not referenced in the formal specification of a WAV file. Many readers had trouble processing this. Consequently, the safest thing to do from an interchange standpoint was to omit theINFO
chunk and other extensions and send a lowest-common-denominator file. There are otherINFO chunk placement problems.
RIFF files were expected to be used in international environments, so there isCSET
chunk to specify the country code, language, dialect, andcode page for the strings in a RIFF file.[13] For example, specifying an appropriateCSET
chunk should allow the strings in anINFO
chunk (and other chunks throughout the RIFF file) to be interpreted as Cyrillic or Japanese characters.
RIFF also defines aJUNK
chunk whose contents are uninteresting.[14] The chunk allows a chunk to be deleted by just changing its FourCC. The chunk could also be used to reserve some space for future edits so the file could be modified without being resized. A later definition of RIFF introduced a similarPAD
chunk.[15]
The top-level definition of a WAV file is:[16]
<WAVE-form> → RIFF('WAVE' <fmt-ck> // Format of the file [<fact-ck>] // Fact chunk [<cue-ck>] // Cue points [<playlist-ck>] // Playlist [<assoc-data-list>] // Associated data list <wave-data> ) // Wave data
The top-level RIFF form uses aWAVE
tag. It is followed by a mandatory<fmt-ck>
chunk that describes the format of the sample data that follows. This chunk includes information such as the sample encoding, number of bits per channel, the number of channels, and the sample rate.
The WAV specification includes some optional features. The optional<fact-ck>
chunk reports the number of samples for some compressed coding schemes. The<cue-ck>
chunk identifies some significant sample numbers in the wave file. The<playlist-ck>
chunk allows the samples to be played out of order or repeated rather than just from beginning to end. The associated data list (<assoc-data-list>
) allows labels and notes to be attached to cue points; text annotation may be given for a group of samples (e.g., caption information).
Finally, the mandatory<wave-data>
chunk contains the actual samples in the format previously specified.
Note that the WAV file definition does not show where anINFO
chunk should be placed. It is also silent about the placement of aCSET
chunk (which specifies the character set used).
The RIFF specification attempts to be a formal specification, but its formalism lacks the precision seen in other tagged formats. For example, the RIFF specification does not clearly distinguish between a set of subchunks and an ordered sequence of subchunks. The RIFF form chunk suggests it should be a sequence container. Sequencing information is specified in the RIFF form of a WAV file consistent with the formalism: "However,<fmt-ck>
must always occur before<wave-data>
, and both of these chunks are mandatory in a WAVE file."[17] The specification suggests aLIST
chunk is also a sequence: "A LIST chunk contains a list, or ordered sequence, of subchunks."[18] However, the specification does not give a formal specification of theINFO
chunk; an exampleINFO
LIST
chunk ignores the chunk sequence implied in theINFO
description.[19] TheLIST
chunk definition for<wave-data>
does use theLIST
chunk as a sequence container with good formal semantics.
The WAV specification supports, and most WAV files use, a single contiguous array of audio samples. The specification also supports discrete blocks of samples and silence that are played in order. The specification for the sample data contains apparent errors:[20]
The <wave-data> contains the waveform data. It is defined as follows: <wave-data> → { <data-ck> | <data-list> } <data-ck> → data( <wave-data> ) <wave-list> → LIST( 'wavl' { <data-ck> | // Wave samples <silence-ck> }... ) // Silence <silence-ck> → slnt( <dwSamples:DWORD> ) // Count of silent samples
Apparently<data-list>
(undefined) and<wave-list>
(defined but not referenced) should be identical. Even with this resolved, the productions then allow a<data-ck>
to contain arecursive<wave-data>
(which implies data interpretation problems). To avoid the recursion, the specification can be interpreted as:
<wave-data> → { <data-ck> | <wave-list> } <data-ck> → data( <bSampleData:BYTE> ... ) <wave-list> → LIST( 'wavl' { <data-ck> | // Wave samples <silence-ck> }... ) // Silence <silence-ck> → slnt( <dwSamples:DWORD> ) // Count of silent samples
WAV files can contain embedded IFFlists, which can contain severalsub-chunks.[21][22][23]
This is an example of a WAV file header (44 bytes). Data is stored in little-endian byte order.
[Master RIFF chunk] FileTypeBlocID (4 bytes) : Identifier « RIFF » (0x52, 0x49, 0x46, 0x46) FileSize (4 bytes) : Overall file size minus 8 bytes FileFormatID (4 bytes) : Format = « WAVE » (0x57, 0x41, 0x56, 0x45)[Chunk describing the data format] FormatBlocID (4 bytes) : Identifier « fmt␣ » (0x66, 0x6D, 0x74, 0x20) BlocSize (4 bytes) : Chunk size minus 8 bytes, which is 16 bytes here (0x10) AudioFormat (2 bytes) : Audio format (1: PCM integer, 3: IEEE 754 float) NbrChannels (2 bytes) : Number of channels Frequency (4 bytes) : Sample rate (in hertz) BytePerSec (4 bytes) : Number of bytes to read per second (Frequency * BytePerBloc). BytePerBloc (2 bytes) : Number of bytes per block (NbrChannels * BitsPerSample / 8). BitsPerSample (2 bytes) : Number of bits per sample[Chunk containing the sampled data] DataBlocID (4 bytes) : Identifier « data » (0x64, 0x61, 0x74, 0x61) DataSize (4 bytes) : SampledData size SampledData
As a derivative of RIFF, WAV files can be tagged withmetadata in the INFO chunk. In addition, WAV files can embed any kind of metadata, including but not limited toExtensible Metadata Platform (XMP) data[24] orID3 tags[25] in extra chunks. The RIFF specification requires that applications ignore chunks they do not recognize and applications may not necessarily use this extra information.
Uncompressed WAV files are large, sofile sharing of WAV files over theInternet is uncommon except among video, music and audio professionals. The high resolution of the format makes it suitable for retainingfirst generation archived files of high quality, for use on a system where disk space and network bandwidth are not constraints.
This sectiondoes notcite anysources. Please helpimprove this section byadding citations to reliable sources. Unsourced material may be challenged andremoved.(April 2024) (Learn how and when to remove this message) |
In spite of their large size, uncompressed WAV files are used by most radio broadcasters, especially those that have adopted a tapeless system.
The WAV format is limited to files that are less than4 GiB, because of its use of a32-bitunsigned integer to record the file size in the header. Although this is equivalent to about 6.8 hours of CD-quality audio at 44.1 kHz, 16-bitstereo, it is sometimes necessary to exceed this limit, especially when greatersampling rates,bit resolutions orchannel count are required. The W64 format was therefore created for use inSound Forge. Its64-bit file size field in the header allows for much longer recording times. TheRF64 format specified by theEuropean Broadcasting Union has also been created to solve this problem.
Since the sampling rate of a WAV file can vary from1 Hz to4.3 GHz, and the number of channels can be as high as 65535, WAV files have also been used for non-audio data.LTspice, for instance, can store multiple circuit tracewaveforms in separate channels, at any appropriate sampling rate, with the full-scale range representing ±1 V orA rather than a sound pressure.[27]
Audiocompact discs (CDs) do not use the WAV file format, using insteadRed Book audio. The commonality is that audio CDs are encoded as uncompressed 16-bit44.1 kHz stereo LPCM, which is one of the formats supported by WAV.
Audio in WAV files can be encoded in a variety of audio coding formats, such asGSM orMP3, to reduce the file size. All WAV files, even those that useMP3 compression, use the.wav
extension.
This is a reference to compare themonophonic (notstereophonic) audio quality and compression bitrates of audio coding formats available for WAV files including LPCM,ADPCM, MicrosoftGSM 06.10,CELP,SBC,Truespeech andMPEG Layer-3. These are the default ACM codecs that come with Windows.
Format | Bitrate (kbit/s) | 1 minute (KiB) |
---|---|---|
11,025 Hz 16 bit LPCM | 176.4 | 1292 |
08,000 Hz 16 bit LPCM | 128 | 0938 |
11,025 Hz 8 bit LPCM | 088.2 | 0646 |
11,025 Hzμ-Law | 088.2 | 0646 |
08,000 Hz 8 bit LPCM | 064 | 0469 |
08,000 Hz μ-Law | 064 | 0469 |
11,025 Hz 4 bit ADPCM | 044.1 | 0323 |
08,000 Hz 4 bit ADPCM | 032 | 0234 |
11,025 Hz GSM 06.10 | 018 | 0132 |
08,000 Hz MP316 kbit/s | 016 | 0117 |
08,000 Hz GSM 06.10 | 013 | 0103 |
08,000 HzLernout & Hauspie SBC12 kbit/s | 012 | 0088 |
08,000 HzDSP GroupTruespeech | 009 | 0066 |
08,000 Hz MP38 kbit/s | 008 | 0060 |
08,000 Hz Lernout & HauspieCELP | 004.8 | 0035 |
{{cite web}}
: CS1 maint: numeric names: authors list (link)INAM
appears beforeICOP