(57)【特許請求の範囲】
【請求項１】
検索質問としてコンテンツデータ片を入力し、当該コンテンツデータ片の特徴を示す複数の検索質問サブ特徴量から構成される互いに類似する複数の検索質問サブ特徴量短系列を作成する手段と、
最終的な検索対象のコンテンツデータの特徴を示す直接的な検索対象となる複数の検索対象サブ特徴量を連結した検索対象サブ特徴量配列に基づき、当該検索対象サブ特徴量配列に含まれる各検索対象サブ特徴量から開始する前記検索質問サブ特徴量短系列の長さのブロックを２進数としての大小関係に基づいてソートした場合の先頭の検索対象サブ特徴量の識別情報をソートされた順に保持したインデックス配列に対し、前記検索質問サブ特徴量短系列により２分探索を行って検索候補位置を決定する手段と、
決定された複数の検索候補位置からそれぞれ開始する検索対象サブ特徴量と前記検索質問サブ特徴量短系列とのハミング距離をそれぞれ計算する手段と、
計算されたハミング距離が小さい順に検索候補位置に相当する検索結果をソートする手段と、
ソートされた検索結果の上位所定数の検索結果を最終的な検索結果として出力する手段と
を備えたことを特徴とするハミング空間検索装置。
【請求項２】
検索質問としてコンテンツデータ片を入力し、当該コンテンツデータ片の特徴を示す複数の検索質問サブ特徴量から構成される互いに類似する複数の検索質問サブ特徴量短系列を作成する工程と、
最終的な検索対象のコンテンツデータの特徴を示す直接的な検索対象となる複数の検索対象サブ特徴量を連結した検索対象サブ特徴量配列に基づき、当該検索対象サブ特徴量配列に含まれる各検索対象サブ特徴量から開始する前記検索質問サブ特徴量短系列の長さのブロックを２進数としての大小関係に基づいてソートした場合の先頭の検索対象サブ特徴量の識別情報をソートされた順に保持したインデックス配列に対し、前記検索質問サブ特徴量短系列により２分探索を行って検索候補位置を決定する工程と、
決定された複数の検索候補位置からそれぞれ開始する検索対象サブ特徴量と前記検索質問サブ特徴量短系列とのハミング距離をそれぞれ計算する工程と、
計算されたハミング距離が小さい順に検索候補位置に相当する検索結果をソートする工程と、
ソートされた検索結果の上位所定数の検索結果を最終的な検索結果として出力する工程と
を備えたことを特徴とするハミング空間検索方法。
【請求項３】
ハミング空間検索装置を構成するコンピュータを、
検索質問としてコンテンツデータ片を入力し、当該コンテンツデータ片の特徴を示す複数の検索質問サブ特徴量から構成される互いに類似する複数の検索質問サブ特徴量短系列を作成する手段、
最終的な検索対象のコンテンツデータの特徴を示す直接的な検索対象となる複数の検索対象サブ特徴量を連結した検索対象サブ特徴量配列に基づき、当該検索対象サブ特徴量配列に含まれる各検索対象サブ特徴量から開始する前記検索質問サブ特徴量短系列の長さのブロックを２進数としての大小関係に基づいてソートした場合の先頭の検索対象サブ特徴量の識別情報をソートされた順に保持したインデックス配列に対し、前記検索質問サブ特徴量短系列により２分探索を行って検索候補位置を決定する手段、
決定された複数の検索候補位置からそれぞれ開始する検索対象サブ特徴量と前記検索質問サブ特徴量短系列とのハミング距離をそれぞれ計算する手段、
計算されたハミング距離が小さい順に検索候補位置に相当する検索結果をソートする手段、
ソートされた検索結果の上位所定数の検索結果を最終的な検索結果として出力する手段
として機能させるハミング空間検索プログラム。
【請求項４】
請求項３に記載のハミング空間検索プログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽曲や動画等の大規模なデータ集合を対象とした検索技術に関する。
【背景技術】
【０００２】
指紋（fingerprint）が個人の特定に用いられるように、オーディオ指紋（audio fingerprint）は楽曲の特定や正真性を確認するための特徴量である。オーディオ指紋の主な用途は楽曲の認識・識別であり、楽曲データベースと組み合わせることにより、楽曲の一部から曲名、アーティスト名、アルバム名などを自動的に取得するために用いられている。Gracenote（http://www.gracenote.com/）やMidomi（http://www.midomi.co.jp/）等の商用検索サービスが有名であり、これらのサービスでは、数秒間程度の楽曲をパソコンや携帯電話のマイクに拾わせることにより、ユーザに曲名やアーティスト名を通知したり、該当する楽曲をダウンロードしたりすることなどを可能としている。また最近は、音楽の著作権を保護するための手法としても、オーディオ指紋が注目されており、ネットワーク上で流通している著作権を侵害している楽曲の検出等にも用いられている。
【０００３】
一般に楽曲検索においては、検索質問（クエリ）として与えられた曲片が、楽曲中のどの位置から始まるかが不明であるため、検索処理では、楽曲データベースに含まれるすべての楽曲に対して、任意の開始位置からの照合を考慮する必要がある。楽曲検索の検索空間は非常に膨大なものとなるため、効率的な検索手法が必要となる。オーディオ指紋に基づく効率的な検索手法として、ハッシュ表を用いる手法（非特許文献１、３）、木構造を用いた探索手法（非特許文献２）などが提案されている。
【０００４】
オーディオ指紋に基づく楽曲の検索は、基本的に、以下のように行う。まず、検索対象である楽曲データベース中の各楽曲から複数のサブ指紋ブロックを抽出する。サブ指紋は楽曲中の１フレームから得られる例えば32ビットの特徴量であり、サブ指紋１つだけでは、楽曲を識別・同定するための十分な情報を含んでいない。このため、オーディオ指紋の照合においては、サブ指紋のブロック（fingerprint-block）を用いる。なお、サブ指紋のブロックとは、一定の長さのサブ指紋の時系列データである。HaitsmaおよびKalker（非特許文献１）では、ブロック長を256としている。
【０００５】
１つの楽曲データに対し、開始フレーム＃１から得られるサブ指紋ブロック、開始フレーム＃２から得られるサブ指紋ブロック、開始フレーム＃３から得られるサブ指紋ブロックというように、非常に多数のサブ指紋ブロックが得られる。検索質問として楽曲片が与えられると、この楽曲片からも複数のサブ指紋ブロックが得られる。楽曲検索は、検索質問から得られたサブ指紋ブロックとの距離を最小にするような楽曲データベース中のサブ指紋ブロックを見つける問題となる。
【０００６】
楽曲検索では、ノイズ等による楽曲の劣化や、検索質問曲の演奏開始位置が不明であることから、一般に膨大な検索空間を探索する必要がある。例えば、Haitsma-Kalkerアルゴリズム（非特許文献１）により、１曲あたりの平均長を５分と仮定し、10,000曲からオーディオ指紋を抽出すると、総計で2.5億のサブ指紋ブロックが得られることになる。検索質問から得られる複数のサブ指紋ブロックとの照合を考えると、単純な方法（brute-force search）だと、2.5億の数倍から数十倍の距離計算を行う必要がある。
【０００７】
上で述べたように、逐次的に距離計算を行う単純な線形探索では、楽曲データベースの規模に比例した計算量が必要となるため、効率的な検索手法が求められる。HaitsmaおよびKalker（非特許文献１）は、サブ指紋に対するハッシュ表（ルックアップ・テーブル）を構成することにより効率的に検索する手法を提案している。Millerら（非特許文献２）は、楽曲データベース中の楽曲に対するサブ指紋を木構造で表現することにより、効率的に検索する手法を提案している。また、Wang（非特許文献３）は、周波数領域におけるピーク値と２つのピーク値間の時間差を組み合わせたハッシュ表を用いた検索手法を提案している。しかし、これらの手法では、検索質問とデータベース中の楽曲とのビットエラー率が大きくなるにつれ、ハッシュ表の大きさが急激に増大するという欠点がある。
【０００８】
また、楽曲検索では、検索質問曲にノイズが混入していたり、音質が劣化していたりする場合も多々あるため、不完全な一致に基づく検索を行う必要があり、検索質問曲と類似したものも検索の対象とする必要が生じる。この意味で、楽曲検索は一種の類似検索である。近年、高次元の大規模データに対する類似検索の手法として、ＬＳＨ（Locality-Sensitive Hashing）が注目を集めており、画像検索を始めとするさまざまな情報検索分野に適用されてきている（非特許文献４、５）。
【０００９】
ここで、検索対象となる大規模なデータ集合の中から、検索質問（クエリ）として与えられたビット列と距離的に近いデータを高速に見つけることを考える。なお、基本的な仮定として、検索対象データが０と１のビット列で表現されており、データ間の距離としてハミング距離（Hamming distance）を用いるものとする。
【００１０】
ＬＳＨ（非特許文献４、５、６）は、特定のアルゴリズムというよりも、大規模な高次元データに対する確率的な検索手法の総称であり、ビット・サンプリング（bit sampling）を用いたハミング距離に対するＬＳＨ（非特許文献６、７）、Min-wise Independent Permutationを用いたJaccard距離に対するＬＳＨ（非特許文献８）、Random Projectionを用いたcosine距離に対するＬＳＨ（非特許文献９）、ｐ−安定分布（p-stable distribution）を用いたLp距離に対するＬＳＨ（非特許文献１０）など、多数の検索アルゴリズムが提案されている。いずれのアルゴリズムも、高次元のベクトルデータをハッシュ値に変換することを基本としており、変換後のハッシュ値は元データの距離が近い場合には高い確率で同じ値になるという性質を持っている。一般に、高次元データに対するハッシュ関数で、近傍データのみを一致させるような関数を一意に決めることはできず、ＬＳＨでは、複数のハッシュ関数を用いることで、一定の検索精度を保つようにしている。
【００１１】
ハミング距離に対するＬＳＨは、IndykおよびMotwani（非特許文献７）がＰＬＥＢ（Point Location in Equal Balls）問題に帰着させたアルゴリズムを提案しており、その後、Charikar（非特許文献９）やRavichandranら（非特許文献１１）がビット列のランダム置換（random permutation）を用いた、より洗練されたアルゴリズムを提案している。
【００１２】
ランダム置換を用いた手法の概要を、以下に示す。今、検索対象としてｎ個のｋ次元のデータ集合Ｄ＝ｄ１，ｄ２，・・，ｄｎがあるとする。ここで、各ｄｉは０あるいは１から成るｋビットの列である。置換σとは集合｛１，２，・・，ｋ｝上の全単射（bijection）のことであり、ビット列に対する置換は、ビット列ｂ１，ｂ２，・・，ｂｋをビット列ｂσ（１），ｂσ（２），・・，ｂσ（ｋ）に置き換えたものとして定義することができる。集合｛１，２，・・，ｋ｝上の置換の総数はｋ！個あり、ランダム置換はこれらの置換の中からランダムに１つを選択したものである。
【００１３】
さて、データ集合Ｄ中の各要素に対して、ランダム置換σを施したデータ集合Ｄσを作成する。検索質問のビット列ｑに対しても、同様に、ランダム置換σを施したビット列ｑσを作成する。データ集合Ｄσの中からｑσに近いデータを探すために、Ｄσをソートしておき、ソート列に対し２分探索（binary search）を適用する。多数のランダム置換に対し、上記のことを実行すれば、検索されるビット列データは、元の検索質問ビット列の近傍にあることが期待される。以上が、Charikar（非特許文献９）やRavichandranら（非特許文献１１）が提案したハミング空間における近傍検索の概要である。なお、この手法の理論的および実験的解析に関しては、Charikar（非特許文献９），Mankuら（非特許文献１２）を参照されたい。
【００１４】
ランダム置換に基づくハミング空間検索の考え方はきわめて単純である。ビット列の一致検索（exact match）でよければ、元のデータ集合に対する２分探索のみで十分である。また、下位方向のビットのみが一致しない場合の近傍検索も２分探索で十分であろう。問題は、上位方向のビットに不一致がある場合であり、この際には単純な２分探索では検索漏れを起こしてしまう。このような事態に対処するために、複数のランダム置換によるビットの入れ替えを考えているのである。一般にＬＳＨでは、複数のハッシュ関数を用いるが、ランダム置換に基づくハミング空間検索では、ランダム置換がハッシュ関数に相当していると考えることができる。
【００１５】
図１に、ランダム置換を用いた手法の模式図を示す。検索対象となるデータ集合を一番上に、また検索質問を一番下に示している。検索漏れの問題を解消するためには、元のデータ集合および検索質問の双方に対する複数のランダム置換（図中、σ１，σ２，σ３）を考える必要がある。
【先行技術文献】
【非特許文献】
【００１６】
【非特許文献１】Jaap Haitsma and Ton Kalker.: "A Highly Robust Audio Fingerprinting System", Proceedings of the 3rd International Conference on Music Information Retrieval (ISMIR 2002), pp.107-115, 2002.
【非特許文献２】Matthew L. Miller, Manuel Acevedo Rodriguez and Ingemar J. Cox.: "Audio Fingerprinting: Nearest Neighbor Search in High Dimensional Binary Spaces", Journal of VLSI Signal Processing, 41, pp.285-291, 2005.
【非特許文献３】Avery Li-Chun Wang: "An Industrial-Strength Audio Search Algorithm", Proceedings of the 4th International Conference on Music Information Retrieval (ISMIR 2003), pp.7-13, 2003.
【非特許文献４】Brian Kulis and Kristen Grauman: "Kernelized Locality-Sensitive Hashing for Scalable Image Search", Proceedings of the 12th IEEE International Conference on Computer Vision (ICCV 2009), 2009.
【非特許文献５】Aristides Gionis, Piotr Indyk, and Rajeev Motwani: "Similarity Search in High Dimensions via Hashing", 25th International Conference on Very Large Data Bases(VLDB 1999), 1999.
【非特許文献６】Brian Kulis and Trevor Darrell: "Learning to Hash with Binary Reconstructive Embeddings", Proceedings of the 23rd Annual Conference on Neural Information Processing Systems (NIPS 2009), pp. 1042-1050, 2009.
【非特許文献７】Piotr Indyk and Rajeev Motwani: "Approximate Nearest Neighbors: Towards Removing the Curse of Dimensionality", Proceedings of the 30th Annual ACM Symposium on Theory of Computing, 1998.
【非特許文献８】Andrei Z. Broder, Moses Charikar, Alan M. Frieze, Michael Mitzenmacher: "Min-wise Independent Permutations", Proceedings of the 30th Annual ACM Symposium on Theory of Computing, pp.327-336, 1998.
【非特許文献９】Moses S. Charikar: "Similarity Estimation Techniques from Rounding Algorithms", Proceedings of the 34th Annual ACM Symposium on Theory of Computing, 2002.
【非特許文献１０】Mayur Datar, Nicole Immorlica, Piotr Indyk, and Vahab S. Mirrokni: "Locality-Sensitive Hashing Scheme Based on p-Stable Distributions", Proceedings of the 20th Annual Symposium on Computational Geometry, 2004.
【非特許文献１１】Deepak Ravichandran, Patrick Pantel, and Eduard Hovy: "Randomized Algorithms and NLP: Using Locality Sensitive Hash Functions for High Speed Noun Clustering", Proceedings of ACL, 2005.
【非特許文献１２】Gurmeet Singh Manku, Arvind Jain, and Anish Das Sarma: "Detecting Near-Duplicates for Web Crawling", Proceedings of the 16th international conference on World Wide Web, pp.141-149, 2007.
【非特許文献１３】Dimitrios Fragoulis, George Rousopoulos, Thanasis Panagopoulos, Constantin Alexiou, and Constantin Papaodysseus: "On the Automated Recognition of Seriously Distorted Musical Recordings", IEEE Transactions on Signal Processing, Vol.49, No.4, pp.898-908, 2001.
【非特許文献１４】Beth Logan: "Mel Frequency Cepstral Coefficients for Music Modeling", Proceedings of the International Symposium on Music Information Retrieval (ISMIR 2000), 2000.
【非特許文献１５】Eric Allamanche et al.: "AudioID: Towards Content-based Identification of Audio Material", 110th AES Convention, 2001. (http://www.aes.org/e-lib/browse.cfm?elib=10019)
【非特許文献１６】Udi Manber and Gene Myers: "Suffix Arrays: A New Method for On-line String Searches", SIAM Journal on Computing, Vol.22, No.5, pp 935-948, 1993.
【発明の概要】
【発明が解決しようとする課題】
【００１７】
ランダム置換に基づく検索の最大の欠点は、膨大なデータ容量を必要とすることである。効率的な検索を行うためには、元の検索対象データ集合にあらかじめランダム置換を施したデータ集合を作成しておく必要がある（図１参照）。また、複数のランダム置換を考える必要があるため、元データ集合の数倍〜数十倍程度の容量が必要となる。
【００１８】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、膨大なデータ容量を必要とすることなく、高速に検索を行えるようにすることにある。
【課題を解決するための手段】
【００１９】
上記の課題を解決するため、本発明にあっては、検索質問としてコンテンツデータ片を入力し、当該コンテンツデータ片の特徴を示す複数の検索質問サブ特徴量から構成される互いに類似する複数の検索質問サブ特徴量短系列を作成する手段と、最終的な検索対象のコンテンツデータの特徴を示す直接的な検索対象となる複数の検索対象サブ特徴量を連結した検索対象サブ特徴量配列に基づき、当該検索対象サブ特徴量配列に含まれる各検索対象サブ特徴量から開始する前記検索質問サブ特徴量短系列の長さのブロックを２進数としての大小関係に基づいてソートした場合の先頭の検索対象サブ特徴量の識別情報をソートされた順に保持したインデックス配列に対し、前記検索質問サブ特徴量短系列により２分探索を行って検索候補位置を決定する手段と、決定された複数の検索候補位置からそれぞれ開始する検索対象サブ特徴量と前記検索質問サブ特徴量短系列とのハミング距離をそれぞれ計算する手段と、計算されたハミング距離が小さい順に検索候補位置に相当する検索結果をソートする手段と、ソートされた検索結果の上位所定数の検索結果を最終的な検索結果として出力する手段とを備える。
【発明の効果】
【００２０】
本発明にあっては、膨大なデータ容量を必要とすることなく、高速に検索を行うことができる。
【図面の簡単な説明】
【００２１】
【図１】ランダム置換に基づく検索の概要を示す図である。
【図２】検索質問多重化による検索の概要を示す図である。
【図３】検索装置の構成例を示す図である。
【図４】楽曲データベースの構造例を示す図である。
【図５】オーディオ指紋データベースの構造例を示す図である。
【図６】検索装置のハードウェア構成例を示す図である。
【図７】検索前の事前準備の処理例を示すフローチャートである。
【図８】検索の処理例を示すフローチャートである。
【図９】サブ指紋短系列による２分探索の概要を示す図である。
【図１０】評価データの分類および正解率の例を示す図である。
【発明を実施するための形態】
【００２２】
以下、本発明の好適な実施形態につき説明する。
【００２３】
＜原理＞
ランダム置換に基づく検索では、元のデータ集合を複数のランダム置換により多重化することにより、ビット列データに対する近傍検索を実現しているということができる。もし仮に、検索質問のみを多重化することができれば、元のデータ集合に対する多重化は不要となり、少ない記憶容量でハミング空間の検索が可能になる。
【００２４】
上記を実現するための考え方は単純であり、検索質問と類似したビット列データを複数作成することにより、検索質問の多重化を行う。
【００２５】
図２に、検索質問多重化による検索手法の模式図を示す。図１と同様に、検索対象となるデータ集合を一番上に、検索質問を一番下に示している。図中、φｉ（φ１、φ２、φ３）は検索質問のビット列と類似したデータを作成する関数である。関数φｉは、元になるビット列に数値計算等を施す場合だけではなく、元になるビット列から値を取得する位置等を変える等の情報操作一般を含む。
【００２６】
＜構成＞
図３は検索装置１の構成例を示す図である。なお、主として楽曲の検索を想定したものとなっているが、楽曲以外の検索にも適用できることは言うまでもない。
【００２７】
図３において、検索装置１は、オーディオ指紋抽出部（特徴量抽出部）１０１と、インデックス配列作成部１０２と、検索質問曲片入力部（検索質問コンテンツデータ片入力部）１０３と、サブ指紋短系列抽出部（サブ特徴量短系列生成部）１０４と、検索候補位置決定部１０５と、ハミング距離計算部１０６と、検索結果ソート部１０７と、検索結果出力部１０８とを備えている。これらの機能部は、検索装置１を構成するコンピュータのＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等のハードウェア資源上で実行されるコンピュータプログラムによって実現されるものである。これらの機能部は、単一のコンピュータ上に配置される必要はなく、必要に応じて分散される形態であってもよい。
【００２８】
また、検索装置１が利用するデータベースとして、楽曲データベース（コンテンツデータベース）１１１と、オーディオ指紋データベース（特徴量データベース）１１２とが設けられている。これらのデータベースは、検索装置１を構成するコンピュータ内のＨＤＤ（Hard Disk Drive）等の記憶媒体上に所定のデータを体系的に保持するものである。なお、楽曲データベース１１１とオーディオ指紋データベース１１２は検索装置１内に配置される必要はなく、他の装置（データベースサーバ等）上に配置し、ネットワークを介して検索装置１からアクセスする形態としてもよい。
【００２９】
図４は楽曲データベース１１１の構造例を示す図である。楽曲データベース１１１は、楽曲（コンテンツ）を識別する楽曲ＩＤ（コンテンツＩＤ）と、曲名、アーティスト名、アルバム名等の書誌情報と、楽曲本体データ（コンテンツ本体データ）等が対応付けられて保持されている。
【００３０】
図５はオーディオ指紋データベース１１２の構造例を示す図である。オーディオ指紋データベース１１２は、楽曲ＩＤ（コンテンツＩＤ）と、オーディオ指紋（特徴量）等が対応付けられて保持されている。
【００３１】
オーディオ指紋は、メッセージダイジェスト（一方向ハッシュ関数によるダイジェスト値）の一種であり、楽曲の音響的・知覚的特性に基づき、元の楽曲データを比較的コンパクトなビット列表現に変換するための技術である。認証やデジタル署名等で用いられるＭＤ５等のメッセージダイジェストでは、元のデータが少しでも異なると、まったく異なったハッシュ値が得られるが、オーディオ指紋の場合には、楽曲にノイズが混入したり、楽曲が劣化したりといった場合にも、類似したハッシュ値が得られるように設計されている。
【００３２】
また、オーディオ指紋データベース１１２には、楽曲毎にオーディオ指紋を連結したサブ指紋配列（サブ特徴量配列）ＦＰが保持される。図示は省略してあるが、楽曲ＩＤからサブ指紋配列ＦＰに含まれるサブ指紋（サブ特徴量）を参照できるとともに、サブ指紋配列ＦＰのサブ指紋から楽曲ＩＤを参照できる。
【００３３】
また、オーディオ指紋データベース１１２には、サブ指紋配列ＦＰのサブ指紋を対象にして検索質問短系列の長さを単位に２進数としての大小関係に基づいてソートした順番で先頭のサブ指紋の位置を示すインデックス配列Ｓが保持される。
【００３４】
図６は検索装置１のハードウェア構成例を示す図である。検索装置１は、システムバス１１に接続されたＣＰＵ１２、ＲＯＭ１３、ＲＡＭ１４、ＮＶＲＡＭ（Non-Volatile Random Access Memory）１５、Ｉ／Ｆ（Interface）１６と、Ｉ／Ｆ１６に接続された、キーボード、マウス、モニタ、ＣＤ／ＤＶＤ（Compact Disk/Digital Versatile Disk）ドライブ等のＩ／Ｏ（Input/Output Device）１７、ＨＤＤ１８、ＮＩＣ（Network Interface Card）１９等を備えている。Ｍはプログラムもしくはデータが格納されたＣＤ／ＤＶＤ等のメディア（記録媒体）である。
【００３５】
＜動作＞
図７は検索前の事前準備の処理例を示すフローチャートである。
【００３６】
図７において、処理を開始すると、検索装置１のオーディオ指紋抽出部１０１は、楽曲データベース１１１から楽曲本体データを参照し、オーディオ指紋を抽出する（ステップＳ１１）。オーディオ指紋は、楽曲毎にサブ指紋を時系列に配置したものである。
【００３７】
オーディオ指紋抽出アルゴリズムには、さまざまなものが提案されており、フーリエ係数特徴に基づく手法（非特許文献１３）、メルケプストラム係数特徴に基づく手法（非特許文献１４）、スペクトル扁平特徴に基づく手法（非特許文献１５）などが研究されている。以下では、HaitsmaおよびKalker（非特許文献１）による周波数帯域間のエネルギー差の特徴を用いたオーディオ指紋抽出アルゴリズムの概要を示す。
【００３８】
Haitsma-Kalkerアルゴリズムでは、入力された楽曲データをフレームに分割後、オーバーラップした各フレームからサブ指紋（sub-fingerprint）と呼ばれる32ビットの特徴量を抽出する。サブ指紋は、実際には周波数領域において計算する。各フレームをＦＦＴ（Fast Fourier Transform）により周波数領域に変換後、重なりのない33個の周波数帯域に分割し、帯域間のエネルギー差の符号（プラスあるいはマイナス）からサブ指紋を求める。HaitsmaおよびKalkerでは、フレーム長0.37秒（フレームの重なり度は31/32）であり、ハニング・ウィンドウ(Hanning window)により重み付けした後に、周波数領域に変換している。したがって、11.6ミリ秒ごとに１つのサブ指紋が抽出されることになる。なお、本実施形態においては、ハニング・ウィンドウに代えてハミング・ウインドウ(Hamming window)を用いている。
具体的なサブ指紋の計算は、フレームｎの周波数帯域ｍにおけるエネルギーをＥ（ｎ，ｍ）とするとき、フレームｎの第ｍビットＦ（ｎ，ｍ）を以下の式により求める。
【００３９】
【数１】
0005599363.tif 000002
【００４０】
HaitsmaおよびKalkerは、周波数領域におけるエネルギー差の符号から得られる特徴が、楽曲の識別・同定において有効であり、しかも圧縮や伸長等の多くの処理に対し頑健であることを実験的に示している。Haitsma-Kalkerアルゴリズムは、オーディオ指紋抽出の各ステップが単純な算術演算で実装でき、生成されるオーディオ指紋がコンパクトであるという特徴を持っている。
【００４１】
次いで、オーディオ指紋抽出部１０１は、サブ指紋配列ＦＰを作成する（ステップＳ１２）。サブ指紋配列ＦＰは、オーディオ指紋（楽曲毎にサブ指紋を時系列に配置）を検索対象となる複数の楽曲について連結したものである。
【００４２】
次いで、オーディオ指紋抽出部１０１は、楽曲毎に抽出したオーディオ指紋を楽曲ＩＤ等と対応付けてオーディオ指紋データベース１１２に格納するとともに、作成したサブ指紋配列ＦＰをオーディオ指紋データベース１１２に格納する（ステップＳ１３）。
【００４３】
次いで、検索装置１のインデックス配列作成部１０２は、サブ指紋配列ＦＰに含まれる各サブ指紋から開始する検索質問短系列の長さのブロックを２進数としての大小関係に基づいてソートした場合の先頭のサブ指紋の識別情報（位置）をソートされた順に保持したインデックス配列Ｓを作成する（ステップＳ１４）。
【００４４】
インデックス配列Ｓの作成は、例えば、次のように行う。検索質問短系列の長さをｍ、楽曲データベース中の全曲から得られたサブ指紋配列ＦＰ＝ＦＰ１，ＦＰ２，・・，ＦＰｎとするとき、サブ指紋配列ＦＰ中の長さｍの全系列のソート位置を表す１次元のインデックス配列Ｓ＝Ｓ１，Ｓ２，・・，Ｓｎを考える。インデックス配列Ｓは、接尾辞配列（suffix array）（非特許文献１６）と同様に、サブ指紋配列ＦＰへのインデックスを格納した配列であり、次式を満たすようにする。なお、「iff」は「if and only if」の略である。  
Ｓｊ＝  ｉ  iff  ＦＰｉ，ＦＰｉ＋１，・・，ＦＰｉ＋ｍ?１がソート順でｊ番目の短系列
【００４５】
検索処理では、検索質問曲から得られたサブ指紋の短系列に対し、インデックス配列Ｓ上を２分探索すればよい。また、２分探索された位置の前後を調べることで、サブ指紋短系列の近傍検索を行うことができる。インデックス配列Ｓの大きさは、楽曲データベース中のサブ指紋配列ＦＰの長さに比例した大きさであり、ランダム置換を用いる手法に比べ、はるかに少ない容量である。
【００４６】
次いで、インデックス配列作成部１０２は、ソート済サブ指紋配列もしくはインデックス配列Ｓをオーディオ指紋データベース１１２に格納し（ステップＳ１５）、処理を終了する。
【００４７】
図８は検索の処理例を示すフローチャートである。
【００４８】
図８において、処理を開始すると、検索装置１の検索質問曲片入力部１０３は、検索質問曲片を入力する（ステップＳ２１）。検索質問曲片はマイク等により取得された後、デジタルデータに変換されて入力される。
【００４９】
次いで、検索装置１のサブ指紋短系列抽出部１０４は、検索質問曲片から類似する複数のサブ指紋短系列を抽出する（ステップＳ２２）。サブ指紋短系列はサブ指紋のブロックである。
【００５０】
オーディオ指紋の抽出（図７のステップＳ１１）では、検索対象である楽曲データベース１１１中の各楽曲から複数のサブ指紋ブロックを抽出している。すなわち、１つの楽曲データに対し、開始フレーム＃１から得られるサブ指紋ブロック、開始フレーム＃２から得られるサブ指紋ブロック、開始フレーム＃３から得られるサブ指紋ブロックというように、非常に多数のサブ指紋ブロックが得られる。これと同様に、検索質問として楽曲片が与えられると、この楽曲片からも開始フレームが少しずつ異ならせることで、複数のサブ指紋ブロックが得られる。サブ指紋の時系列において、隣り合ったサブ指紋の間には大きな類似性があり、時間が進むにつれ、少しずつ異なったサブ指紋が得られるという特徴がある。このような開始時間の異なる複数のサブ指紋を用いて検索質問の多重化を行うことができる。
【００５１】
なお、オーディオ指紋の場合はサブ指紋ブロックを取得する開始フレームを少しずつ変化させることで多重化された類似する複数のサブ指紋短系列を抽出することができるが、ビデオ等を含む一般的なコンテンツデータ片の場合は、例えば、元のビット列を機械的に操作してビット反転を行うことや、あるいは元のビット列にノイズをのせる等により多重化を行うことができる。
【００５２】
次いで、検索装置１の検索候補位置決定部１０５は、抽出したすべてのサブ指紋短系列に対して、インデックス配列Ｓ上を２分探索し、検索候補位置を求める（ステップＳ２３）。２分探索は、インデックス配列Ｓ上の全体の中央に存在するサブ指紋ブロックの値と質問から抽出したサブ指紋短系列の値を２進数として比較し、抽出したサブ指紋短系列の値が大きければ、全体の中央よりも値が低い側の半分に範囲を限定してその中央に着目点を移して比較を続行し、抽出したサブ指紋短系列の値が小さければ、全体の中央よりも値が高い側の半分に範囲を限定してその中央に着目点を移して比較を続行するという処理を繰り返すものである。図９はサブ指紋短系列によりインデックス配列Ｓを２分探索する様子を示している。インデックス配列Ｓの２分探索にあたり、インデックス配列Ｓのインデックスからサブ指紋を参照し、サブ指紋の値を取得して比較を行う。
【００５３】
次いで、図８に戻り、検索装置１のハミング距離計算部１０６は、抽出したすべてのサブ指紋短系列と、検索候補位置を開始位置とするサブ指紋ブロックとのハミング距離（ビットエラー率ＢＥＲ（bit error rate））を計算する（ステップＳ２４）。２つのサブ指紋ブロックの同一性を判定するための尺度としてハミング距離を用いている。
【００５４】
いま、２つの楽曲片Ａ、Ｂから抽出されたサブ指紋をそれぞれＦＡ（ｎ，ｍ）、ＦＢ（ｎ，ｍ）とするとき、長さＮのサブ指紋ブロックに対するビットエラー率ＢＥＲ（Ａ，Ｂ）は、以下のようにして計算することができる。
【００５５】
【数２】
0005599363.tif 000003
【００５６】
なお、演算子「＾」は、ビット演算ＸＯＲ（exclusive or）を表している。上式の分子は、２つのサブ指紋ブロック間のハミング距離を計算しており、サブ指紋ブロックのビット長32Ｎで除算することにより、１ビット当たりのエラー率を計算している。
【００５７】
次いで、検索装置１の検索結果ソート部１０７は、計算したハミング距離に基づき、検索結果をハミング距離が小さい順にソートする（ステップＳ２５）。ここで、検索結果は、楽曲ＩＤにより識別されるものとすることができる。
【００５８】
次いで、検索装置１の検索結果出力部１０８は、ソートした上位のもの（上位所定数）を検索結果として出力する（ステップＳ２６）。検索結果に含まれる楽曲ＩＤから楽曲データベース１１１を参照することで、曲名、アーティスト名、アルバム名等の書誌情報を出力することができる。
【００５９】
＜評価実験＞
本実施形態の楽曲検索アルゴリズムの有効性を検証するために、実際の楽曲データを用いた評価実験を行った。評価実験で用いたオーディオ指紋抽出は、基本的にはHaitsma-Kalkerアルゴリズムと同様の手法を用いたが、音楽分析条件等は異なっている。
【００６０】
検索対象となる楽曲は、8,740曲のMP3データである。これらの曲は、CDやインターネットなどから個人的に収集した曲であり、曲によってMP3の圧縮率は異なっている。楽曲のジャンルも、和洋ポップス、クラシック、民族音楽など、多岐に渡っている。
【００６１】
検索質問となる楽曲は、YouTubeにアップロードされたものを用いた。PVやライブ映像など、多様な形態の動画から音声部分のみを抽出した。前後に数十秒程度の無音があるもの、拍手、歓声、セリフなどを含んでいるもの、ノイズを含んでいるものなど、低品質な楽曲データも数多く存在する。評価用のデータは全268曲であり、これらのデータは、データ収集者による分類がなされ、楽曲の状態に関するコメントが付与されている（図１０参照）。
【００６２】
楽曲データは、4,000Hzにダウン・サンプリングを行った後、フレーム長1.024秒、フレームシフト0.032秒で分析を行い、ハミング窓（Hamming window）による重み付け、ＦＦＴによる周波数領域への変換を行っている。周波数領域では、33個の周波数帯域に分割して、32ビットのサブ指紋特徴量を抽出した。また、サブ指紋ブロックの長さは128とした。
【００６３】
上記の分析条件は、HaitsmaおよびKalker（非特許文献１）に比べると荒いものとなっているが、これらの条件は、いくつかの予備実験を行い決定した。提案アルゴリズムでは、上記程度の分析条件でも十分な検索精度が得られることがわかった。なお、この条件で分析を行った際に得られるサブ指紋の総数は、検索対象8,740曲に対して、約７千万である。
【００６４】
本稿での提案手法は、オーディオ指紋に基づく楽曲の高速検索アルゴリズムであるので、まず検索速度面について説明する。評価実験を行った計算機はDELL Precision M6500（ノートパソコン）、ＣＰＵはIntel Core i7（1.73GHz）（全８コア）、搭載メモリは4GBである。曲によって検索時間は異なるが、１曲あたり概ね0.4〜0.6秒程度で検索可能である。
【００６５】
検索質問１曲あたりのサブ指紋の系列長は、6000〜8000程度のものが大多数を占める。提案アルゴリズムでは、検索質問曲から得られるすべてのサブ指紋短系列（長さ３）に対して、２分探索による検索候補位置の計算を行った後、サブ指紋ブロックに対するビットエラー率の計算を行っている。したがって、サブ指紋ブロック１つあたりの検索時間は0.0001秒以下で行われていることになり、十分、高速であるということができる。
【００６６】
検索精度であるが、図１０の右欄に、第１位での正解率を示している。「原曲」に対する第１位での検索率は96.8％、「ライブ」に対する第１位での正解率は83.1％である。「原曲」に対しては、ノイズの有無によって評価データを２つに分類しているが、結果的には、ノイズによる検索精度への影響はみられなかった。「原曲」と「ライブ」との間で検索精度の違いがみられるが、この理由は、ライブでは元の曲をアレンジしていたり、元の曲調とは異なっていたりする場合があるためであると考えられる。
【００６７】
＜総括＞
ＬＳＨでは、検索精度を保つために、一般に複数のハッシュ関数を用いており、このため検索用データであるハッシュ表に相当の容量が必要となる。ハミング距離に対する従来のＬＳＨの場合、ランダム置換が一種のハッシュ関数に相当するが、ランダム置換により複数の検索対象データをあらかじめ用意しておく必要がある。我々の提案手法では、開始時間の異なる複数のサブ指紋の短い系列を用いて検索質問の多重化を行うことにより、検索対象データの多重化を必要としない。従来手法に比べ、検索インデックスの大きさをはるかに少なくすることが可能である。評価実験において、検索速度あるいは検索精度の面から評価を行い、提案手法の有効性を示した。
【００６８】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【符号の説明】
【００６９】
１          検索装置
１０１      オーディオ指紋抽出部
１０２      インデックス配列作成部
１０３      検索質問曲片入力部
１０４      サブ指紋短系列抽出部
１０５      検索候補位置決定部
１０６      ハミング距離計算部
１０７      検索結果ソート部
１０８      検索結果出力部
１１１      楽曲データベース
１１２      オーディオ指紋データベース
【図１】
0005599363.tif 000004
【図２】
0005599363.tif 000005
【図３】
0005599363.tif 000006
【図４】
0005599363.tif 000007
【図５】
0005599363.tif 000008
【図６】
0005599363.tif 000009
【図７】
0005599363.tif 000010
【図８】
0005599363.tif 000011
【図９】
0005599363.tif 000012
【図１０】
0005599363.tif 000013