さて、今月から過ごし方を変えていく。
- 午前: 情報幾何と群論(本進める)
- 午後: 研究
- 飯ピアノ後: リスニング, Rust, サマポケ
さっそくバイトがあったので午前は予定通りではなかった。 午後、まずはSAの次数を変えて様子を見てみる。帯域分割前と帯域分割後で変えた方が良いというのが直感。
- MS変換 + 最適プリエンファシス x2 + SA適用(4) + CDF42を2段 + 各帯域でSA(4): 58.5%
- MS変換 + 最適プリエンファシス x2 + SA適用(8) + CDF42を2段 + 各帯域でSA(4): 59.3%
- MS変換 + 最適プリエンファシス x2 + SA適用(12) + CDF42を2段 + 各帯域でSA(4): 59.2%
- MS変換 + 最適プリエンファシス x2 + SA適用(4) + CDF42を2段 + 各帯域でSA(8): 58.5%
- MS変換 + 最適プリエンファシス x2 + SA適用(4) + CDF42を2段 + 各帯域でSA(12): 58.7%
CDF42の2段適用は性能が悪いので一旦外す。
- MS変換 + 最適プリエンファシス x2 + SA適用(4) + CDF42を1段 + 各帯域でSA(4): 57.7%
- MS変換 + 最適プリエンファシス x2 + SA適用(8) + CDF42を1段 + 各帯域でSA(4): 58.5%
- MS変換 + 最適プリエンファシス x2 + SA適用(12) + CDF42を1段 + 各帯域でSA(4): 58.3%
- MS変換 + 最適プリエンファシス x2 + SA適用(4) + CDF42を1段 + 各帯域でSA(8): 57.7%
- MS変換 + 最適プリエンファシス x2 + SA適用(4) + CDF42を1段 + 各帯域でSA(12): 57.9%
業を煮やしてLPCを導入。ALAのPARCORを拝借。
- MS変換 + 最適プリエンファシス x2 + PARCOR(4) + CDF42を1段 + 各帯域でSA(4): 57.2%
- SA(4)を入れ替えて約0.5%の改善。大。
- エントロピーは8.88(55.6%)、まだ残差を減らすべき
- 低域31.4%
- 高域25.8%
- MS変換 + 最適プリエンファシス x2 + PARCOR(8) + CDF42を1段 + 各帯域でSA(4): 56.9%
- MS変換 + 最適プリエンファシス x2 + PARCOR(16) + CDF42を1段 + 各帯域でSA(4): 56.5%
- MS変換 + 最適プリエンファシス x2 + PARCOR(8) + SA(4): 58.5%
- やはり帯域分割はあった方が良い
- MS変換 + 最適プリエンファシス x2 + PARCOR(8) + CDF22を1段 + 各帯域でSA(4): 59.2%
- ...といっても適切なリフティングをすべき。
- MS変換 + 最適プリエンファシス x2 + PARCOR(8) + CDF62を1段 + 各帯域でSA(4): 56.9%
- CDF(8,2)はきっと自分で導かなけらばならないが、その予備試験としてCDF(6,2)を実装して試した。
- CDF(4,2)とほぼ変わらない。しばらくCDF(4,2)で粘る。
- MS変換 + PARCOR(4) + CDF42を1段 + 各帯域でSA(4): 58.7%
- MS変換 + 最適プリエンファシス + PARCOR(4) + CDF42を1段 + 各帯域でSA(4): 57.6%
- プリエンファシスはやる価値あり。
- MS変換 + 最適プリエンファシス x3 + PARCOR(4) + CDF42を1段 + 各帯域でSA(4): 57.1%
- MS変換 + 最適プリエンファシス x2 + CDF42を1段 + 各帯域でPARCOR(4), SA(4): 60.5%
- SAをSign-Signに置き換えると0.5%ほど改善したが踏み込まない。
- ハイパラいじらずに、良い構造を見つけたい。
TAKに張り合うには53%はほしい。52%なら勝てる兆しあり。
一発で1ラグ相関を打ち消すフィルタ、代数計算できないか?なんか、最適プリエンファシスの2回がけは果たして意味があるか気になってきた。 2次の相関使ってプリエンファシスできない?→やっつけでやってみたがだめ。粗悪なLPCになっていそう 最適プリエンファシスをかけた後の信号の1ラグ相関はどうなっている?代数計算したい。
ずーっと気になっていたこと。自分の再帰ライス符号が貧弱なのではないかという点にメスを入れたい。 (手詰まり感が半端ないので符号に逃げている。しかし気になって仕方ない。) TTAでは符号対象値の移動平均sum0を元に、
- sum0が(k > 0) && (sum0 < (k << 4))ならばk--
- sum0が(sum0 > (k << 5))ならばk++
- 注意: 更新前にkの値を取り、その値でRice符号化してる
実装してみた、が、微妙に悪化。つまり、自前の方が良かったということになる。 しかしTTA側の実装の単純さは非常に魅力的ではある。
符号をいじるときに、値が周期的(ブロック長/2の周期)にでかい値を取っていたのを確認した。 かなり気になるので消しにかかる。
- プリエンファシスに状態を持たせた
- LPC予測器に状態を持たせた
- CDFの端点処理が抜けている。。。。と思ったがこれが本質的原因ではなかった。上2つが主原因。
- 端点処理の要らないHaarウェーブレットでだいぶ高域に不連続点が出る。
- 特にSide成分高域。ダイナミックレンジが高まっているのは確かにわかる。
- (M,低域) < (M,高域), (S,低域) < (S,高域)に気を付けてビット配分するのがミソ?
- クリップしている可能性大。
- 端点処理を加えても特に外形変わらず。若干圧縮率が改善する程度。
- CDF42の遮断特性が素晴らしい。高域はほぼ16k以上(注意:ダウンサンプル後の残差波形の周波数)しか残っていない。音楽的要素はほぼない。
- これロッシーコーデック作れるわ。高域適当に線形量子化して。
- CDF22ではまだ若干高域に音楽が残る。
- 端点処理の要らないHaarウェーブレットでだいぶ高域に不連続点が出る。
- MS変換 + 最適プリエンファシス x2 + PARCOR(4) + CDF42を1段 + 各帯域でSA(4): 56.9%
- 不連続点を除くことで0.3%ほどの改善
Sign-Signが有意に良い成果を出している。。切り替えてしまおうか。
MPEG4-ALSでもそうだったけど、FLACの-mオプションは符号量見てMS変換するかどうか判定するみたいね。