第 3 章 HiFP2.1 とその実装 21
3.2 提案手法
3.2.4 最適な chunk 領域数の決定方法
3.2.4.1 最適なchunk領域数のパターン
前述したとおり,実装するHiFP2.1においては,FPID生成に使用するサンプル を抽出するchunk領域数を任意に設定することが出来る.
ただし,FPID生成に使用するサンプル数は131,072で固定されており,131,072は 2の累乗である.このことを前提として,ハードウェアに実装された場合にchunk サンプル数などを計算する際に131,072を各chunk領域に均等に割り振るため,
chunk領域数も2の累乗である必要がある.また,その上で局所的な特徴量の変
化傾向を 1つの chunk領域の範囲からが少なくともFPID1bitは取得するために
1つのchunk領域には少なくとも8*4*2=64サンプルが含まれる必要がある.その
上で,特徴量の大小比較は3つ飛ばしで行われる.よって,chunk領域数は最大で も131,072/64=2,048となる.
であるため,各型式の実装におけるchunk領域数のパターンは2,4,8,16,32, 64,128,256,512,1,024,2,048の11通りになる.
図3.5にそのバリエーションについて示す.
図 3.4: サンプル抽出タイミングの違いによる2つの実装全体図図解
図 3.5: チャンク領域数のパターンの図解
3.2.4.2 最適なchunk領域数の決定
本提案手法は楽曲の広範囲からFPID生成のためのサンプルを抽出することで確 率的に問題が発生しているサンプルの領域を回避するものである.そして,chunk 領域数の決定は,一つのchunk領域でどれだけのサンプルを抽出を行うか,つまり 範囲全体におけるchunk領域の分散の度合いの決定でもある.であるので,chunk 領域数は,そのサンプルから生成したFPIDによる検索精度に影響する.
また,本提案手法である”FPGA上でサンプル抽出を行うHiFP2.1のFPGA実 装”では,FPGA側に送信するサンプルはデータ全体の中の最後のchunk領域の末 尾までである.よって,chunk領域数は実行速度に影響する.
ただ,前述したように「FPGA上でサンプル抽出を行うFPGA 実装」において
は,chunk 領域数の増加による処理時間の増加は対数関数的であると考えられる.
であるので,本研究においては,最適なchunk 領域数の決定方法として可能な限
り大きなchunk 領域数をとることとする.
ここで,chunk領域数2,048の場合は,1つのchunk領域においてDWTの結果 算出される特徴量は2つであり,よって,1つのchunk領域内のみで生成される FPIDは1bitのみとなる.つまり,2,048の場合には1つのchunk領域内部という近 い位置の特徴量間で生成される FPIDは2,048bitとなる.つまり,残りの2,048bit は必ず離れた位置で生成された特徴量間の大小比較を行わなければならない.
楽曲データに著し音質の劣化などが発生した場合,近い位置の特徴量間の差異は,
それが極めて短い時間(2特徴量間はサンプリング周波数44,100Hzの場合1.45ms 程度)における特徴量の変化を表しているために,劣化しても特徴量の変化傾向 を保持している可能性が高い.つまり,劣化前の特徴量の大小関係を保持してい る可能性が高い.一方で,離れた位置の特徴量間ではそれぞれのデータ同士の関 連性が薄くなるために,近い位置の特徴量間と比べ劣化前の大小関係を正しく保 持できている可能性が低くなる.
chunk領域数2,048の場合は,離れた位置の特徴量間から生成されるFPIDの割
合が50%を越えている.50%という数値は,異なる楽曲同士のFPID間で起こる ビットエラー割合の大まかな平均値と同値である.特徴量間の大小関係を正しく 保持できている可能性が低いFPIDのビットの割合が50%を越えているchunk領 域数2,048は最適なchunk領域数とは言い難い.
よって,chunk領域数を決定する際には,必ず連続した特徴量を生成できるよう
にすることで音質の劣化に対して大小関係を保持できる可能性の高い部分をある 程度確保しつつ,広範囲にchunk領域を分散させることで問題発生部分を出来る 限り高い確率で回避できるようなバージョンを選ぶとよい.
これらの事柄を踏まえて,本研究ではHiFP2.1アルゴリズムの実装における最 適なchunk領域数として1,024を提案する.