Googleの次世代音楽検索への挑戦

  • 2018.09.15
  • AI
Googleの次世代音楽検索への挑戦

1.Googleの次世代音楽検索への挑戦まとめ

・Pixel 2の音楽検索機能Now PlayingをスケールアップしたSound Searchの技術の紹介
・Sound SearchはAndroid端末にGoogle Assistantを入れると試す事ができる
・日本語の歌謡曲も数年前のヒット曲でもかなり高い精度で認識される

2.Now PlayingとSound Searchに使われている技術

以下、ai.googleblog.comより「Google’s Next Generation Music Recognition」の意訳です。

2017年、Googleは自社が販売するスマートフォンのPixel 2にNow Playingというアプリを搭載し、ディープニューラルネットワークを使用した低消費電力で常時音楽認識が可能なモバイルデバイスを実現しました。

Now Playingの開発で私達の目標は、小型で効率的な音楽認識システムを作成し、音楽認識をインターネット接続なしにオンデバイスで完全に実行できるようにする事でした。明らかになった事は、Now Playingはオンデバイスの音楽認識として有用であるばかりでなく、ディープニューラルネットワークが広く利用されるようになる以前に構築されていた当時のサーバーサイドシステムによる音楽検索の精度と効率を大幅に上回りました。

当然、私達はGoogleの音楽認識機能を世界で最高水準にするために、Now Playingと同じ技術をサーバーで実行する音楽検索にも適用できるかどうかに興味を持ちました。

補足)オンデバイス、つまりインターネット接続無しに音楽検索を端末内で実行するためには、端末内のデータベースに個々の音楽を認識する非常に小さい符号情報(フィンガープリント:指紋の意)を格納する必要がありました。これにより従来のサーバーサイドシステム、つまり音楽データをサーバーに送付し、音楽の認識をサーバー内で実行し、端末はその認識結果を受け取って表示する従来の音楽検索システムより優れた性能になりました。

先日、私達は、Now Playingで使用されているのと同じ技術の一部を利用した新しいサーバーサイド検索であるSound Searchを発表しました。 Google検索アプリやAndroid端末のGoogle Assistantで利用できます。音楽検索を開始するだけで、あなたの近くで音楽が再生されたら「この曲は何ですか?」という検索を促すポップアップが表示されます。Google Assistantの場合は、「OK Google、この曲は何?」と聞くことで検索ができます。この最新バージョンのSound Searchでは、これまで以上に速く正確な結果を得ることができます。

Now Playing 対 Sound Search
Now Playingは、小型化した音楽認識テクノロジーを使用しており、モバイル機器で実行してもバッテリの心配をする必要がほとんどないほどに小さく効率的です。

これを実現するために、私達は畳み込みニューラルネットワークを使用して、数秒間の音楽を固有の「フィンガープリント」に変える全く新しいシステムを開発しました。音楽が検索されるとその音楽のフィンガープリントが抽出され、あらかじめ数万曲を保持しているオンデバイスのデータベースと比較されます。データベースは、新しくリリースされた楽曲をフィンガープリントとして追加し、あまり検索されない楽曲を削除する事でサイズが大きくなりすぎないように定期的に更新されています。

これと対照的に、サーバーで実行されるSound SearchはNow Playingの1000倍に及ぶ量の音楽データベースを検索する必要があります。Sound Searchがより大きい音楽データベースを使用して、検索をより迅速かつ正確に行うためには、いくつかのチャレンジングな課題がありました。しかし、この詳細を説明する前に、Now Playingの仕組みについてもう少し詳しく説明しましょう。

Now Playingのコアマッチングアルゴリズム
Now Playingは、楽曲のフィンガープリントを楽曲から部分的に抜き出したパートから生成します。下記図のように、1秒間隔で7つの2秒クリップを連続する低次元のembeddingに投影する事で作成します。

次に、あらかじめ同じニューラルネットワークで人気の音楽を処理して生成されたオンデバイスの楽曲データベースから類似したembeddingシーケンスを検索します。

データベース検索では、2つのフェーズのアルゴリズムを使用して一致する曲を特定します。最初のフェーズでは楽曲データベース全体を検索していくつかの候補を見つける高速で不正確なアルゴリズムが使用され、2番目のフェーズでは、候補の中からどの曲が正しい曲か決定します。

第一マッチングフェーズ:良い候補を見つける
全てのembeddingについてNow Playingは、オンデバイスデータベースから類似のembeddingを探すために最近傍探索を実行します。データベースは、空間分割とベクトル量子化のハイブリッドを使用して、数百万のembeddingベクトルを効率的に検索します。音楽データにはノイズが多いので、この検索はおおよそのものであり、全てのembeddingで正しい曲がデータベース内で見つかるとは限りません。しかし、クリップ全体でみると、正しい曲のembeddingを見つける機会が非常に高く、最終的に検索は複数の類似embeddingを持つ何点かの楽曲に絞り込まれます。

第ニマッチングフェーズ:最終決定
第一フェーズで使用したデータベース検索はおおよそのものであるため、Now Playingが、検索用のembeddingに近いembeddingを楽曲の中から見つける事ができないことがあります。正確な類似度スコアを計算するために、Now Playingはデータベース内の候補となった各歌から全てのembeddingを検索します。次に、検索対象のオーディオバッファからのembeddingのシーケンスと、オンデバイスデータベース内の曲からのembeddingシーケンスを元にNow Playingは類似性を候補毎に推定し、類似度を合計して最終的な一致スコアを取得します。

1つのembeddingではなく、一連のembeddingを使用する事は、Now Playingの精度向上に重要です。フィンガープリンティングニューラルネットワークは、単一のembeddingから楽曲の識別を可能にするほど十分に正確ではなく、各embeddingは多くの誤検出結果を生成します。しかし、複数のembeddingの結果を組み合わせることで、誤検知を簡単に減らすことができます。これは、正しい曲は全てのembeddingにマッチし、誤検知された曲は1つまたは2つのembeddingのみに一致するからです。

Now PlayingをサーバーサイドのSound Searchに規模を拡張する
これまでのところ、Now Playingが検索対象の音楽をオンデバイスデータベースからどのように見つけるか詳しく説明しました。数万曲規模のNow Playingから数千万曲規模のSound Searchに移行する際の最大の課題は、誤検知をもたらす可能性がある曲の数が千倍になるということです。

これを他の変更なしに実現するには、しきい値を高くする必要がありますが、これは検索用にNow Playingより長いパートの楽曲が必要になる事を意味します。しかし、新しいSound Search Serveの目標は、Now Playingよりも速い事であり、遅い事ではありません。私達はユーザーが検索に10秒以上かける事を望んでいませんでした。

Sound Searchはサーバー側システムなので、Now PlayingのようにCPU性能や記憶領域に制約を受けません。従って、フィンガープリントの仕様に2つの大きな変更を加えました。どちらもサーバーリソースを犠牲にして精度を向上させています。

使用するニューラルネットワークのサイズを4倍にし、各embeddingを96次元から128次元に増加させました。これにより、高次元の入力オーディオを低次元のembeddingに変換するためにニューラルネットワークが行う作業量を削減しました。これは、フェーズ2の品質を改善する上で重要です。これは、生のニューラルネットワーク出力の精度に大きく依存します。

また、私たちはembeddingの密度を倍増させました。1秒ごとではなく0.5秒ごとにオーディオからフィンガープリンティングを取得する事は個々のembeddingの品質を大きく低下させることはなく、私達が検索に使用できるembeddingの数を倍増させる事ができました。

また、楽曲の人気度に基づいて索引を重み付けすることも行いました。つまり、人気のある曲では一致したとみなすしきい値を低くし、あいまいな曲に対してはそれを上げます。全体として、これは認識速度をあまり遅くすることなく、ほぼ無制限に多くの(不明瞭な)曲をデータベースに追加し続けることができることを意味します。

結論
Now Playingでは、機械学習を使用して、スマートフォンで完全に動作するコンパクトで堅牢なオーディオフィンガープリントを作成しました。実際、これを応用したSound Searchで直面した課題はかなりNow Playing異なっていましたが、元々のアイデアが非常に優れたオール・ラウンドな設計であったため、サーバーサイドのSound Searchでも応用する事ができました。

私たちはこのシステムにはまだ改善の余地があると思っています。非常に静かな音楽や非常に騒々しい環境では必ずしも音楽検索は成功しませんし、検索速度ももっと早くできると私達は信じています。私達は次世代の音楽認識を目指し、これらの課題に取り組んでいきます。

あなたが次に演奏されている曲が何か知りたいと思った時、ぜひ、試してみてください!次のような操作でホーム画面にショートカットを置くことができます

謝辞
私たちはMicha Riser、Mihajlo Velimirovic、Marvin Ritter、Ruiqi Guo、Sanjiv Kumar、Stephen Wu、Diego Melendo Casado、Katia Naliuka、Jason Sanders、Beat Gfeller、Christian Frank、Dominik Roblek、Matt Sharifi、Blaise Aguera y Arcasに感謝します。

3.Googleの次世代音楽検索への挑戦感想

Google Assistantのレビューを確認したら3.2と意外に評判悪かったのですが、「★1 ヒンディー語の歌が全然認識されないよ!」等々の私の気に入っている歌が認識されない系のクレームが多かったです。ヒンディー語の歌をいきなり認識する事を求められるとは現実世界のハードルは本当に高いなぁ、と思ったのですが、日本語の曲、例えばラストコンサートで注目を集めている安室奈美恵はもちろん、その他昔のヒット曲などもかなり認識してくれました。

原文では、Pixel2の機能のように読めてしまうかもしれませんが、自分から呼びかけなくても使える「Now Playing」がPixel2専用なだけです。Android端末にGoogle Assistantを入れてマイクボタンを押して「OK Google、この曲は何?」で、スピーカーから流れるyoutubeの曲を聞かせると相当高い精度で認識されました。町中で流れる曲に対してどの程度認識してくれるのかまだ試してませんがちょっと楽しみです。

4.Googleの次世代音楽検索への挑戦関連リンク

1)ai.googleblog.com
Google’s Next Generation Music Recognition

2)assistant.google.com
Sound Search