FLAC
FLAC(Free Lossless Audio Codec)は、可逆音声圧縮codecおよびそのnative bitstream/file formatである。通常のファイル拡張子は.flacである。
FLACは復号時に元のPCMサンプル列を完全に復元でき、音楽ライブラリ、アーカイブ、配布、バックアップなどで広く用いられる。
可逆圧縮
FLACは可逆圧縮である。
非可逆圧縮のように聴覚上不要な情報を捨てるのではなく、PCM中の予測可能性や統計的冗長性を利用してデータ量を減らす。
decode後のPCMは元データと一致する。
基本構造
Xiph.OrgによるFLAC streamの基本構造は、
- 4 byteの
fLaCsignature - STREAMINFO metadata block
- 0個以上の追加metadata block
- 1個以上のaudio frame
である。[1]
STREAMINFO
STREAMINFOは必須metadata blockである。
サンプルレート、channel数、bits per sample、総sample数などの情報を含む。
またunencoded audio dataのMD5 signatureを保持でき、decode後データの完全性確認に利用できる。[2]
metadata block
FLACでは複数種類のmetadata blockが定義される。
Xiph.Orgのreference APIでは、
- STREAMINFO
- PADDING
- APPLICATION
- SEEKTABLE
- VORBIS_COMMENT
- CUESHEET
- PICTURE
などが定義されている。[3]
Vorbis Comment
FLACのtaggingにはVORBIS_COMMENT blockが一般的に用いられる。
artist、album、title、track number等のmetadataをkey/value形式で保持できる。
PICTURE
PICTURE blockを使うことでalbum artwork等の画像を埋め込める。
SEEKTABLE
SEEKTABLEは長いFLAC streamで任意位置へseekする際の効率を高めるために利用できる。
圧縮方式
FLACでは入力信号をblockへ分割し、予測器を使ってsample値を予測する。
予測値との差であるresidualは、Rice coding等を用いて効率的に符号化される。
信号が予測しやすいほど高い圧縮効果を得やすい。
圧縮レベル
FLAC encoderには複数のcompression levelを持つ実装が多い。
compression levelを高くするとencoderがより多くの探索や計算を行い、ファイルが少し小さくなる場合がある。
重要なのは、圧縮レベルが変わっても復号後PCMの音質は変わらないことである。
FLACはすべてlosslessであり、compression levelは情報を捨てるquality parameterではない。
decode負荷
一般にFLACは比較的軽量にdecodeできるよう設計されている。
音楽再生では保存容量を減らしながら元PCMを保持できるため、lossless music libraryに適する。
サポート範囲
Xiph.Orgの現行format APIは最大8 channel、最大32 bits per sampleなどのformat componentを定義している。[4]
実際に利用できるparameterはdecoder、container、Subset等の制約にも依存する。
FLACとWAV
WAV/PCMとFLACは、正しく変換すれば同一PCMを相互に保持できる。
違いは、
- FLACは圧縮される
- FLACはdecode処理が必要
- metadata構造が異なる
- software/hardware compatibilityが異なる
点にある。
FLACからWAVへdecodeしても、lossless sourceであれば品質劣化は発生しない。
FLACとALAC
FLACとALACはいずれも可逆音声圧縮である。
ALACはApple製品・M4Aとの関係が強く、FLACは独立したnative file formatとして広く利用される。
FLACとMP3
MP3は非可逆圧縮であり、元PCMを完全復元できない。
FLACは一般にMP3よりファイルサイズが大きいが、元音声データを保持できる。
アーカイブ
FLACは、
- checksum
- metadata
- lossless compression
- 公開されたformat documentation
を持つため、archive用途でも利用される。
ただし組織やワークフローによってはBroadcast WAVなど非圧縮形式をmasterとして採用する。