WAVは、音声データを記録するファイル形式の一つです。
一般には、無圧縮のPCM方式のデータが記録されていることが多いですが、ADPCM、WMA形式やMP3 (MPEG-1 Audio Layer-3) 形式などで圧縮された音声データをWAVファイルに記録することもできます。
以下は、無圧縮のPCM方式のデータであるときのフォーマットを記載します。
オフセット (バイト) | サイズ (バイト) | 説明 | 値 |
0 | 4 | チャンク識別子 | "RIFF" (0x52494646) |
4 | 4 | チャンク サイズ | = 全体のファイルサイズ - 8 |
8 | 4 | フォーマット | "WAVE" (0x57415645) |
12 | 4 | サブチャンク 1 識別子 | "fmt " (0x666D7420) |
16 | 4 | サブチャンク 1 サイズ | = 16 + 拡張パラメータのサイズ |
20 | 2 | 音声フォーマット | 1 - 65,535 |
22 | 2 | チャンネル数 | 1 - 65,535 |
24 | 4 | サンプリング周波数 | 1 - 0xFFFFFFFF |
28 | 4 | 1 秒あたりバイト数の平均 | 1 - 0xFFFFFFFF |
32 | 2 | ブロックサイズ | 1 - 65,535 |
34 | 2 | 1 サンプルあたりのビット数 | 2 - 65,535 |
- | (2) | 拡張パラメータのサイズ | 0 - 65,535 |
- | (*) | 拡張パラメータ | (拡張パラメータ) |
36 | 4 | サブチャンク 2 識別子 | "data" (0x64617461) |
40 | 4 | サブチャンク 2 サイズ | = 波形データのバイト数 |
44 | * | データ | (波形データ) |
WAVE ファイルは、全体が RIFF チャンクになっており、そのサブチャンクとしてフォーマット チャンク (12バイト以降) とデータ チャンク (36バイト以降) を含む構造になっています。
フォーマット チャンクとデータ チャンクの2つのサブチャンクは必須なので、どの WAVE ファイルにも含まれています。これら以外のサブチャンクとしては、Fact チャンクなどがあります。
バイトオーダーは、チャンク識別子とフォーマット、サブチャンク 1 識別子、サブチャンク 2 識別子がビッグエンディアン、それ以外はリトルエンディアンです。
CDとして記録されるステレオ音楽などは、「16ビット、リニアPCM」なので、「サブチャンク 1 サイズ」は「16」、「音声フォーマット」はPCMなので「1」、「チャンネル数」は「2」、「サンプリング周波数」は「44100」、「1 秒あたりバイト数の平均」はサンプリング周波数 × チャンネル数 × 1サンプルあたりのビット数 / 8、「ブロックサイズ」はチャンネル数 × 1サンプルあたりのビット数 / 8、「1 サンプルあたりのビット数」は「16」となります。