0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

非圧縮WAVファイルの構造と読み方

0
Posted at

非圧縮WAVファイルの構造と読み方

非圧縮WAVファイルは、音声データとその形式を示す情報をチャンクとして格納したファイルです。

非圧縮WAVの基本構造

非圧縮WAVはRIFF形式のコンテナです。先頭のRIFFとWAVEに続き、チャンクが並びます。各チャンクは通常「4 byteのID」「4 byteのサイズ」「サイズ分の内容」で構成されます。fmt は音声形式の情報、dataは音声データを表し、ほかのチャンクが含まれることもあります。

RIFF | RIFFサイズ(4 byte) | WAVE
fmt  | fmtサイズ(4 byte)  | 音声フォーマット情報
data | dataサイズ(4 byte) | 音声サンプル

チャンクIDとそのサイズを使って順に読みます。数値は通常リトルエンディアンです。

今回確認したRIFFサイズ

RIFFの後ろにあるCC BA 06 00は4 byteのサイズ値です。リトルエンディアンとして読むと次のとおりです。

  • 値: 0x0006BACC
  • 10進数: 441,036 byte
  • RIFFサイズに含まれるのは、サイズ欄の直後からRIFFチャンク末尾までです。RIFFの4 byteとサイズ欄自身の4 byteは含みません。
  • ファイル全体のサイズは通常、RIFFサイズに先頭の8 byteを足した441,044 byteです。

fmt チャンクの内容

fmt の直後の10 00 00 00はfmtチャンクのサイズで、16 byteを表します。続く16 byteは以下のように解釈できます。

バイト列 項目 値
01 00 音声形式 1(PCM・非圧縮)
01 00 チャンネル数 1(モノラル)
44 AC 00 00 サンプルレート 44,100 Hz
88 58 01 00 バイトレート 88,200 byte/秒
02 00 ブロックサイズ 2 byte/サンプルフレーム
10 00 ビット深度 16 bit

つまり、この音声は44.1 kHz・16 bit・モノラルのPCMです。バイトレートは44,100 × 1 × 2 = 88,200 byte/秒になります。

dataチャンクと音声サンプル

dataチャンクのサイズが示す範囲が音声データです。今回の形式では1サンプルが16 bit(2 byte)なので、2 byteずつのリトルエンディアンの符号付き整数として読みます。たとえばバイト34 12は値0x1234です。

ステレオの場合は左右チャンネルのサンプルが交互に並びます。音声の復号ではチャンネル数・ビット深度・形式に合わせて解釈してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?