ロスレス音声の歴史を探るために古いロスレス音声コーデックの情報を探っている。以下のサイトが Hydrogenaudioでの比較 よりも古い内容を扱っている。
見つけたロスレス音声コーデックを一覧する。というかほぼ Really Rare Wares 様へのリンク。
古めのロスレス音声コーデック
RKAU(RK Audio)
古い比較において優秀な圧縮率を誇っていた。当時のMonkey's Audioよりも上。サイトを覗いたら exe と dll のみの配布だった。
- RKAUのホームページ(魚拓) を見ても特に情報なし。
WavArc
こちらも最大圧縮率(-c5)を選択するとそれなりに優秀な結果を出していた。このページにexeとドキュメントをまとめたzipもあり。
WaveZip
圧縮率よりは速度重視のコーデックのようだ。MUSICompress というアルゴリズムの実装。 WaveZipのデータシート によると符号化にはLZ(Lampel-Ziv)を使用しているようだ。
WaveZipの概要 が比較サイトに掲載されていた。どうやら、入力波形を近似波形と誤差波形に分けて符号化するようだ。WaveZipではHu
LPAC/LTAC
LPACはMPEG4-ALSの前身。LPACの前身がLTAC。LPACの平均的な圧縮率は優秀なようだ。 LPAC(魚拓) に以前公開していたサイトあり。
LTAC(Lossless Transform Audio Compression)は名前の通り変換符号化に基づくロスレス音声圧縮コーデック、LPAC(Lossless Predictive Audio Compression)は予測に基づくロスレス音声圧縮コーデック。
LPACに ベルリン工科大学、Real Networks、NTT の改良が加わってMPEG4-ALSが出来上がり、それ以降LPACの開発は停止されている。この経緯については MPEG4-ALS(魚拓) に記述あり。
Shorten(魚拓)
おそらくロスレス音声の最古参にして基礎。なんと執筆時点(2020-04-08)でも brew でインストールできた( Shortenのmanページ もあるから各Linuxディストリビューションで使えるものと想像する)。エンコード速度はピカイチ。
Shortenの論文 (テクニカルレポート)もある。この論文で、今のロスレス音声につながる重要な事実に幾つか触れている。
- 音声信号は準定常(短い区間では定常とみなせる)だからブロックに分けてエンコード/デコードすべき。
- 音声のモデル化には線形予測(LPC, Linear Predictive Coding)が使える。
- 残差信号はガウス分布よりもラプラス分布に従っていると見える。その符号化にはライス符号を使うのが良い。
この時点で既にラプラス分布を仮定したパラメータ設定を行っているからかなりの慧眼。他のロスレス音声コーデックはShortenを発展させたものに過ぎないと見える。
所感
どうも2000年代前半までは各自でロスレス音声コーデックを作り、各自で最強を謳っていたらしい。
歴史を雑にまとめると、1994年にShortenの論文が出てから、それよりも圧縮率の良いもの、圧縮速度(展開速度)が早いものが開発されて混沌に突入し上記のコーデックが現れた。その後、Monkey's Audio, WavPack, FLAC, LPAC(MPEG4-ALS)が生き残り、2000年以降はLa(更新停止), TAK, TTA, ALAC(更新停止), WMAL(Windows Media Audio Lossless), 2010年以降はOptimFROGが出現しているようだ。
気になるのは比較サイトの Rice Coding, AKA Rice Packing, Elias Gamma codes and other approaches である。Rice符号よりも効率の良いとされるPod符号の紹介がある。要観察。
スパース適応フィルタ
LPCの定式化をスパースにする試みは多くなされている。
- Sparse Modeling for Lossless Audio Compression : Ghidoさん(OptimFROGの人)の試み
- 貪欲法によりスパース解を求めている。
- スパース表現に基づく音声音響符号化 : NTTの試み
- 最小二乗解を求めるのではなくL1最小化に置き換えた定式化を行う。
でも、TTAがやっているような適応フィルタをスパース解に近づける手法はまだロスレス音声に対してやっていないように見える。 スパースな解を目指してフィルタ係数を更新する適応フィルタはスパース適応フィルタ(Sparse Adaptive Filters)というようで、2000年代以降に研究が進んでいるようだ。
最も基本的な適応フィルタであるLMS(Least Mean Square)フィルタは名前の通り二乗誤差最小化に立脚している。 スパース適応フィルタの主な用途はエコーキャンセル、ブラインド話者分離、複数話者特定ではあるが、やはり変換後の分布がスパースになるというのは大きい。
スパース適応フィルタの最近のサーベイ論文 を流し読みした。スパース適応フィルタは、変数更新のときに1部の変数だけ更新する方法と、スパース最適化に従って更新するやり方の2つがあった。PNLMS(Proportionate NLMS), IPNLMS(Improved PNLMS)が後者の定式化で興味あり。引き続き見ていく。
Regularized Least-Mean-Square Algorithms には正則化を入れたLMSアルゴリズムの解説あり。LASSOにモチベーションを受けた最適化アルゴリズムが ZA-LMS や APWL1 として提案されている。