WAVE形式概説


1.ファイルの構造

表1 WAVE形式のファイル構造
項番 オフセット サイズ 内容 値,備考
10進 16進
1 0 00 4 グループID 'RIFF'
2 4 04 4 項番3以降のサイズ ファイルサイズ-8
3 8 08 4 riffタイプ 'WAVE'
Format チャンク
4 12 0C 4 FormatチャンクID 'fmt '
tの後は空白(' ')
5 16 10 4 Formatチャンクのサイズ 項番6〜*2の部分の合計サイズ[byte]
注3参照
6 20 14 2 フォーマットID リニアPCM:1
7 22 16 2 チャネル数 モノラル:1 ステレオ:2
8 24 18 4 サンプリング周波数[Hz]
9 28 1C 4 平均データ速度[byte/s] 項番8×項番10
10 32 20 2 ブロックサイズ
[byte/sample]
項番7×(項番11÷8)
11 34 22 2 量子化ビット数[bit] 項番6が1の場合は8または16
*1 2 項番*2のサイズ 注4参照
*2 ヘッダ拡張部 注4参照
Fact チャンク
*3 4 FactチャンクID 'fact'
注4参照
*4 4 Factチャンクのサイズ 項番*5のサイズ
注4参照
*5 4 全サンプル数 注4参照
Data チャンク
12 (36) (24) 4 DataチャンクID 'data'
13 (40) (28) 4 Dataチャンクのサイズ 項番14のサイズ[byte]
14 (44) (2C) データ #0(先頭)から#1,#2…の順(時間順)に量子化した振幅値を書き込む
次章参照

注:

  1. 項番1,3,4,12は ' ' に囲まれた文字列がそのまま書かれる.
  2. 項番1,3,4,12,14,*2,*3以外の項目は,それぞれのサイズの整数であり,いずれもバイナリで書かれる.2[byte]の場合はリトルエンディアンで書き込む.
  3. 項番5は,項番*1及び*2がない場合には項番6〜11,ある場合には項番6〜11及び*1,*2の部分の合計サイズとなる.
  4. 項番6が1(リニアPCM)の場合には,項番*1から*5までの項番は不要(ある場合もある).これらの項番がある場合,その分だけ,項番12から14については先頭からのバイト数が変化する.例えば,項番*1,*2がなく,項番*3から*5の各項番がある場合,項番12,13,14の先頭からのバイト数はそれぞれ,48,52,56(10進)または30,34,38(16進)となる.

2.データ部のフォーマット

 表1の項番14(データ)は以下の方法で書き込む.

2.1 データの型

いずれの場合もバイナリ(2[byte]の場合はリトルエンディアン)で書き込む.

2.2 ステレオデータのフォーマット

 サンプル毎に左チャネル,右チャネルの順で書き込む.

2.3 無音時の量子化値

 振幅値が0(無音)の場合の量子化値は,量子化ビット数が8[bit]の場合は128(0x80),16[bit]の場合は0(0x0000)である.

2.4 データ部の配置

 各量子化ビット数,各チャネル数の場合のデータ部に書き込まれた値の配置を図示したものを表2に示す.

表2 データ部の配置
データ部先頭からの
オフセット
モノラル ステレオ
8[bit] 16[bit] 8[bit] 16[bit]
番号 番号 byte 番号 チャネル 番号 チャネル byte
0 #0 #0 #0 #0
1 #1
2 #2 #1 #1
3 #3
4 #4 #2 #2 #1
5 #5
6 #6 #3 #3
7 #7
8 #8 #4 #4 #2
9 #9
10 #10 #5 #5
11 #11
12 #12 #6 #6 #3
13 #13
14 #14 #7 #7
15 #15

注:

赤地白抜きの枠は,各量子化ビット数,各チャネル数においてデータを読み込む(書き込む)際の最小の単位を表す.すなわち,

順に読み込む(書き込む)ことを示している.

3.WAVEファイル先頭部分の例

3.1 表3の録音条件のファイル

表3 録音条件1
サンプリング周波数 22050[Hz]
量子化ビット数 8[bit]
チャネル数 1(モノラル)
データ数 24938[sample]
ファイルサイズ 24994[byte]

(1)ファイル先頭のダンプリスト

Address 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 52 49 46 46 9A 61 00 00 - 57 41 56 45 66 6D 74 20 RIFF啾..WAVEfmt
00000010 10 00 00 00 01 00 01 00 - 22 56 00 00 22 56 00 00 ........"V.."V..
00000020 01 00 08 00 66 61 63 74 - 04 00 00 00 6A 61 00 00 ....fact....ja..
00000030 64 61 74 61 6A 61 00 00 - 80 80 80 80 80 80 80 80 dataja..........








(2)ヘッダ部の内容

ファイル先頭からのbyte数
(16進)
ダンプ内容 内容の読み 対応項番 内容
始点 終点
00 03 52 49 46 46 左に同じ 'RIFF' 1 グループID
04 07 9A 61 00 00 00 00 61 9A 24986 2 項番3以降のサイズ
08 0B 57 41 56 45 左に同じ 'WAVE' 3 riffタイプ
0C 0F 66 6D 74 20 左に同じ 'fmt ' 4 FormatチャンクID
10 13 10 00 00 00 00 00 00 10 16 5 Formatチャンクのサイズ
14 15 01 00 00 01 1 6 フォーマットID
16 17 01 00 00 01 1 7 チャネル数
18 1B 22 56 00 00 00 00 56 22 22050 8 サンプリング周波数[Hz]
1C 1F 22 56 00 00 00 00 56 22 22050 9 平均データ速度[byte/s]
20 21 01 00 00 01 1 10 ブロックサイズ[byte/sample]
22 23 08 00 00 08 8 11 量子化ビット数[bit]
24 27 66 61 63 74 左に同じ 'fact' *3 FactチャンクID
28 2B 04 00 00 00 00 00 00 04 4 *4 Factチャンクのサイズ
2C 2F 6A 61 00 00 00 00 61 6A 24938 *5 全サンプル数
30 33 64 61 74 61 64 61 74 61 'data' 12 DataチャンクID
34 37 6A 61 00 00 00 00 61 6A 24938 13 Dataチャンクのサイズ
38 80 左に同じ 128 14:#0 データ
39 80 128 14:#1
3A 80 128 14:#2
3B 80 128 14:#3
3C 80 128 14:#4
3D 80 128 14:#5
3E 80 128 14:#6
3F 80 128 14:#7












3.2 表4の録音条件のファイル

表4 録音条件2
サンプリング周波数 10000[Hz]
量子化ビット数 16[bit]
チャネル数 1(モノラル)
データ数 6100[sample]
ファイルサイズ 12244[byte]

(1)ファイル先頭のダンプリスト

Address 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 52 49 46 46 CC 2F 00 00 - 57 41 56 45 66 6D 74 20 RIFF./..WAVEfmt
00000010 10 00 00 00 01 00 01 00 - 10 27 00 00 20 4E 00 00 .........'.. N..
00000020 02 00 10 00 64 61 74 61 - A8 2F 00 00 04 00 06 00 ....data./......
00000030 08 00 0D 00 09 00 04 00 - FD FF F9 FF FD FF FC FF ................








(2)ヘッダ部の内容

ファイル先頭からのbyte数
(16進)
ダンプ内容 内容の読み 対応項番 内容
始点 終点
00 03 52 49 46 46 左に同じ 'RIFF' 1 グループID
04 07 CC 2F 00 00 00 00 2F CC 12236 2 項番3以降のサイズ
08 0B 57 41 56 45 左に同じ 'WAVE' 3 riffタイプ
0C 0F 66 6D 74 20 左に同じ 'fmt ' 4 FormatチャンクID
10 13 10 00 00 00 00 00 00 10 16 5 Formatチャンクのサイズ
14 15 01 00 00 01 1 6 フォーマットID
16 17 01 00 00 01 1 7 チャネル数
18 1B 10 27 00 00 00 00 27 10 10000 8 サンプリング周波数[Hz]
1C 1F 20 4E 00 00 00 00 4E 20 20000 9 平均データ速度[byte/s]
20 21 02 00 00 02 2 10 ブロックサイズ[byte/sample]
22 23 01 00 00 01 16 11 量子化ビット数[bit]
24 27 64 61 74 61 64 61 74 61 'data' 12 DataチャンクID
28 2B A8 2F 00 00 00 00 2F A8 12200 13 Dataチャンクのサイズ
2C 2D 04 00 00 04 4 14:#0 データ
2E 2F 06 00 00 06 6 14:#1
30 31 08 00 00 08 8 14:#2
32 33 0D 00 00 0D 13 14:#3
34 35 09 00 00 09 9 14:#4
36 37 04 00 00 04 4 14:#5
38 39 FD FF FF FD -3 14:#6
3A 3B F9 FF FF F9 -7 14:#7
3C 3D FD FF FF FD -3 14:#8
3E 3F FC FF FF FC -4 14:#9












参考資料

このページは,安島雄一郎氏のまとめによる「WAVEフォーマット解説('96 5/4)」を参考にして作成しました.