WAVEファイルの構造

無圧縮の音声ファイルにWAVEファイルというものがあります。
この形式で保存されているファイルの構造を説明します。
音声ファイルを編集しようと考えている方の参考になればとおもいます。


ヘッダ情報の構成

開始byte
終了byte
byte
データ内容
1
4
4
'RIFF'の4文字
5
8
4
総ファイルサイズ-8(byte)
9
12
4
'WAVE'の4文字
13
16
4
'fmt 'の4文字 フォーマットチャンク
17
20
4
フォーマットサイズ デフォルト値16
21
22
2
フォーマットコード 非圧縮のPCMフォーマットは1
23
24
2
チャンネル数 モノラルは1、ステレオは2
25
28
4
サンプリングレート 44.1kHzの場合なら44100
29
32
4
バイト/秒 1秒間の録音に必要なバイト数
33
34
2
ブロック境界 ステレオ16bitなら、16bit*2 = 32bit = 4byte
35
36
2
ビット/サンプル 1サンプルに必要なビット数
37
40
4
'data'の4文字 フォーマットチャンク
41
44
4
総ファイルサイズ-126
この先は音声データが続く

このほかに、LISTヘッダというものがありますが、必須情報ではないので説明しません。


サンプリングレート44.1kHzの音声1秒間データの例

1ブロックの音声データ構成
フォーマット 1バイト目 2バイト目 3バイト目 4バイト目
8ビット モノラル
右チャンネル
 
 
 
16ビット モノラル
右チャンネル
 
 
8ビット ステレオ
右チャンネル
左チャンネル
 
 
16ビット ステレオ
右チャンネル
左チャンネル

ヘッダ情報
フォーマット
8ビット
モノラル
16ビット
モノラル
8ビット
ステレオ
16ビット
ステレオ
RIFFヘッダ
52
49
46
46
52
49
46
46
52
49
46
46
52
49
46
46
総ファイルサイズ-8
68
AC
00
00
AC
58
01
00
AC
58
01
00
10
B1
02
00
WAVEヘッダ
57
41
56
45
57
41
56
45
57
41
56
45
57
41
56
45
フォーマットチャンク
66
6D
74
20
66
6D
74
20
66
6D
74
20
66
6D
74
20
フォーマットサイズ
10
00
00
00
10
00
00
00
10
00
00
00
10
00
00
00
フォーマットコード
01
00
 
01
00
 
01
00
 
01
00
 
チャンネル数
01
00
 
01
00
 
02
00
 
02
00
 
サンプリングレート
44
AC
00
00
44
AC
00
00
44
AC
00
00
44
AC
00
00
バイト/秒
44
AC
00
00
88
58
01
00
88
58
01
00
10
B1
02
00
ブロック境界
01
00
 
02
00
 
02
00
 
04
00
 
ビット/サンプル
08
00
 
10
00
 
08
00
 
10
00
 
dataチャンク
64
61
74
61
64
61
74
61
64
61
74
61
64
61
74
61
総ファイルサイズ-126
F2
AB
00
00
36
58
01
00
36
58
01
00
BE
B0
02
00