

前回の記事では、不可逆圧縮フォーマットである AAC や MP3 のビットレート変動について解説しました。 今回はそれに続き、可逆圧縮方式である FLAC(Free Lossless Audio Codec) と ALAC(Apple Lossless Audio Codec) を取り上げます。
可逆圧縮は「音質を一切劣化させずにデータ量を圧縮できる」のが大きな特徴です。 この記事では、両者のビットレートがどのように変動するのかをグラフで可視化し、さらに可逆性をハッシュ値で確認し、最後に標準的な FLAC と ALAC を試聴してその印象をまとめています。
FLACとALACフォーマットの基本的な違い
FLAC:オープンソースのロスレス圧縮フォーマットで、PCやAndroidデバイスをはじめとする多くのプラットフォームでサポートされています。 圧縮レベルを指定するオプションがあります。 ファイルの拡張子は、✗✗✗✗.flac になります。
ALAC:Appleが開発したロスレス圧縮フォーマットで、圧縮レベルを指定するオプションは通常ありません。(VinylStudioソフトでは、圧縮レベルを指定可) これは、主にApple製品に最適化されApple Musicなどのサービスと一貫性をもたせるため、1つの固定された圧縮方式にしているためと思われます。 なお、ファイルの拡張子は、AACと同じ、✗✗✗✗.m4a になります。
FLAC及びALACに変換する元の音声ファイルについて
1959年録音のカラヤンとベルリン・フィルが演奏した「ドヴォルザークのスラヴ舞曲第1番ハ長調 Op.46-1」CD音源(=リッピングしたFlac 16bit 44.1khzファイル)をWAVに変換した音源ファイルを使います。
『スラヴ舞曲第1番』は、比較的シンプルでありながらリズム感が重要な楽曲です。途中で静かな部分と力強い部分が交互に現れるため、圧縮アルゴリズムの挙動を確認するには最適なトラックです。
FLAC及びALACにエンコード(変換)する(テスト条件)
エンコーダは、macOS用のXLDアプリ【バージョン20230627 (156.1)】を使いました。
入力ファイルをFLAC又はALAC(=Apple Lossless)を出力(エンコード)するには、XLDの環境設定の出力フォーマットから選択します。
FLACの場合、オプションボタンを押すと、圧縮レベル【無圧縮と圧縮レベル(0〜8)】を設定できます。
今回のテストでは、「無圧縮」「標準」「高圧縮」の3種類の設定でFLACを出力します。

今回ビットレート変動をテストするために、前述の「ドヴォルザークのスラヴ舞曲第1番ハ長調 Op.46-1」WAV音源を以下のFLAC(3種類)及びALAC(1種類)をXLDで変換しました。
MediaInfoによるファイル諸元
| 項目 | WAV | 無圧縮FLAC | 標準FLAC | 高圧縮FLAC | ALAC |
| ビットレート種別 | CBR | VBR | VBR | VBR | VBR |
| ビットレート | 1,411Kbps | 1,415Kbps | 758Kbps | 697Kbps | 722Kbps |
| Finder調べFile size | 37.6MB | 37.7MB | 20.2MB | 18.6MB | 19.2MB |
| 圧縮率 | 100% | 100% | 54% | 49% | 51% |
| サンプルレート | 44.1khz | ||||
| ビット深度 | 16bit | ||||
フレーム単位のビットレートの変動データの取得とグラフ化する方法
下記のブログ記事で解説している方法を参照してください。
-
-
参 照ffprobeで音声ファイルを解析|【改善版】フレーム単位のビットレート変動のCSV化とグラフ化
【改善版】Opusファイルのビットレート変動 前回の記事ではFFmpegの’ashowinfo’フィルターで音声ファイルのビットレートをCSV化しましたが、WAVやOpus等の一部の音声ファイルで正し ...
FLACとALACファイルのビットレート変動(振る舞い)をご覧ください
FLACファイル
圧縮レベル-標準のFLACファイルにおいて、上段がAudacityで描画したWave波形を示し、下段がフレーム単位のビットレート変動を描画したグラフを示します。 Wave波形の音量レベルが低い静かなPiano部分と音量が大きくなるForte部分に応じてビットレートが変動しているのが観測できます。 また、ビットレート変動グラフの元データ(CSV)から、平均ビットレートを計算しますと、758kbpsで、フレーム当りのサンプル数(spf)は1152でフレーム時間は、26msでした。
上のグラフは、圧縮レベルが、「無圧縮」「標準」「高圧縮」におけるフレーム単位のビットレート変動を示します。 このグラフから「高圧縮」が最もビットレート変動が低くファイルサイズが低くなることが分かります。 また、ビットレート変動グラフから目視でビットレート種別を推定すると、「無圧縮」はCBR(固定ビットレート)になり、「標準」と「高圧縮」はVBR(変動ビットレート)モードと判定できます。
備考(MediaInfoとの相違点)
「無圧縮」において、ビットレート変動グラフの目視判定では、CBRでしたが、MediaInfoで調べたビットレート種別ではVBRで示され実際の結果と相違しました。
ALACファイル
ALACファイルにおいて、上段がAudacityで描画したWave波形を示し、下段がフレーム単位のビットレート変動を描画したグラフを示します。 FLACと同じ様に音量の静かなPiano部分と音量が大きくなるForte部分に応じてビットレートが変動しているのが観測できます。 また、ビットレート変動グラフの元データ(CSV)から、平均ビットレートを計算しますと、722kbpsで、フレーム当りのサンプル数(spf)は4096でフレーム時間は、93msでした。 このため、標準FLACと比較すると、spfが3.5倍と多く、このため、グラフの分解能が標準FLACより低下しグラフの分解能が粗く描画されています。
CSVデータから計算したファイル諸元
| 項目 | WAV | 無圧縮FLAC | 標準FLAC | 高圧縮FLAC | ALAC |
| ビットレート種別 | CBR | CBR | VBR | VBR | VBR |
| 平均ビットレート | 1,411Kbps | 1,415Kbps | 758Kbps | 697Kbps | 722Kbps |
| File size 計算 | 37.6MB | 37.7MB | 20.2MB | 18.6MB | 19.2MB |
| SPF | 1024 | 1152 | 1152 | 4096 | 4096 |
| File size(MB)の計算:ビットレート[kbps] × (1/8)[byte/bit]×サウンドの長さ[秒]×(1/1000) | |||||
ALACの圧縮レベルは、上表の平均ビットレートとSPF(フレーム当たりのサンプル数)値から、標準FLACと高圧縮FLACの間に位置していると思われます。
また、MediaInfoとの相違点を確認したところ、CSVデータから計算したファイル諸元ではビットレートやFile sizeは一致していますが、無圧縮FLACのビットレート種別(VBR > CBR)が異なる結果でした。
ビットレート変動パターンの相関を確認
目視ではFLACとALACのビットレート変動パターンは略近似していることが分かります。
ここでは、フレーム当りのサンプル数(spf:4096)が同一のALACと高圧縮FLACに対して相関係数を確認してみました。
Excel関数のCORRELで相関係数を見ると0.96069となり、「強い正の相関」であることが確認できました。 下に相関図を示します。

可逆性を確認してみました。
可逆圧縮は音質を劣化させずに元のデータへ復元できるのが特徴ですが、本当に FLAC や ALAC が WAV ファイルと同一に戻るのか、ハッシュ値を使って検証してみました。
検証方法は、FLACファイルとALACファイルをWAVファイルに変換(デコード)した後、元のWAVファイルとハッシュ値が一致するかで確認します。 下記のブログ記事にて確認した結果、全ての組み合わせにおいて、元のWAVファイルのハッシュ値と一致し、可逆性が確認できました。
-
-
参 照FLACとALACが元のWAVファイルに復元されるか?ハッシュ値で調べてみました。
過去の記事では、FLACやALACフォーマットをAudacity上で元のWAVファイルとの絶対誤差から復元(可逆性)を確認しました。 FLACやALACの可逆性を確認する方法の一つに「ファイルのハッシ ...
♬ 最後に、標準FLACとALACを聴いてみてください。
直接ブラウザから聴けるプレーヤを配置しています。 必要なら音源ファイルをダウンロードして比較試聴できます。
注意:ALACの場合、ブラウザ又はOSによってはプレーヤの再生ボタン[▶] が効かない場合がありますのでご注意ください。 再生出来ない場合は、ALAC音源ファイルをダウンロードしてVLC media playerで再生できます。
----
macOS:Safari-OK Chrome-NG Firefox-NG Windows:Edge-NG
iPhone:Safari-OK Chrome-OK Firefox-OK Android:Chrome-NG
ネットで調べるとFLACで直接再生したサウンドは、元のWAVのサウンドと相違し、FLACは音が丸み輪郭がボヤける感じになるとのコメントが散見されます。 確かに前記のグラフで見られるビットレートの変動から再生時にはデコード処理をリアルタイムで行わなければなりませんので、CPUなどが非力ですと処理が追いつかずWAV音質との差異が生じる様な気もします。
実際に我が家のB級オーディオのHAP-Z1ESに夫々のファイルを取込み試聴比較したところ、元のWAVファイルとの音質差は全く感じられませんでした。(^_^;)
全体のマトメ
ALACとFLACのアルゴリズムは異なるはずですが、今回ビットレートの変動を確認したところ、フレーム当たりのサンプル数(SPF)に違いがあるものの、ビットレートパターンやビットレートの相関係数からFLACフォーマットとALACフォーマットは近似しており、デコード後(WAV)のハッシュ値でも差異がなく、どちらを使っても音質的に違いはないと思われました。 ただし、Apple製品の場合は、SPFの点を含めALACに最適化されているはずなので、ALACを使う方がベターであるように思われます。
以上、FLACとALACフォーマットのビットレート変動を中心にした比較でした。 音源選びの参考としてご活用ください。



